Implements Phase 1 & 2 of Google Takeout RAG integration: - Database migrations for calendar_events, location_history, search_history - DAO implementations with hybrid time + semantic search - Parsers for .ics, JSON, and HTML Google Takeout formats - Import utilities with batch insert optimization Features: - CalendarEventDao: Hybrid time-range + semantic search for events - LocationHistoryDao: GPS proximity with Haversine distance calculation - SearchHistoryDao: Semantic-first search (queries are embedding-rich) - Batch inserts for performance (1M+ records in minutes vs hours) - OpenTelemetry tracing for all database operations Import utilities: - import_calendar: Parse .ics with optional embedding generation - import_location_history: High-volume GPS data with batch inserts - import_search_history: Always generates embeddings for semantic search 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
57 lines
1.6 KiB
TOML
57 lines
1.6 KiB
TOML
[package]
|
|
name = "image-api"
|
|
version = "0.5.0"
|
|
authors = ["Cameron Cordes <cameronc.dev@gmail.com>"]
|
|
edition = "2024"
|
|
|
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
|
|
[profile.release]
|
|
lto = "thin"
|
|
|
|
[dependencies]
|
|
actix = "0.13.1"
|
|
actix-web = "4"
|
|
actix-rt = "2.6"
|
|
tokio = { version = "1.42.0", features = ["default", "process", "sync", "macros", "rt-multi-thread"] }
|
|
actix-files = "0.6"
|
|
actix-cors = "0.7"
|
|
actix-multipart = "0.7.2"
|
|
actix-governor = "0.5"
|
|
futures = "0.3.5"
|
|
jsonwebtoken = "9.3.0"
|
|
serde = "1"
|
|
serde_json = "1"
|
|
diesel = { version = "2.2.10", features = ["sqlite"] }
|
|
libsqlite3-sys = { version = "0.35", features = ["bundled"] }
|
|
diesel_migrations = "2.2.0"
|
|
chrono = "0.4"
|
|
clap = { version = "4.5", features = ["derive"] }
|
|
dotenv = "0.15"
|
|
bcrypt = "0.17.1"
|
|
image = { version = "0.25.5", default-features = false, features = ["jpeg", "png", "rayon"] }
|
|
infer = "0.16"
|
|
walkdir = "2.4.0"
|
|
rayon = "1.5"
|
|
path-absolutize = "3.1"
|
|
log = "0.4"
|
|
env_logger = "0.11.5"
|
|
actix-web-prom = "0.9.0"
|
|
prometheus = "0.13"
|
|
lazy_static = "1.5"
|
|
anyhow = "1.0"
|
|
rand = "0.8.5"
|
|
opentelemetry = { version = "0.31.0", features = ["default", "metrics", "tracing"] }
|
|
opentelemetry_sdk = { version = "0.31.0", features = ["default", "rt-tokio-current-thread", "metrics"] }
|
|
opentelemetry-otlp = { version = "0.31.0", features = ["default", "metrics", "tracing", "grpc-tonic"] }
|
|
opentelemetry-stdout = "0.31.0"
|
|
opentelemetry-appender-log = "0.31.0"
|
|
tempfile = "3.20.0"
|
|
regex = "1.11.1"
|
|
exif = { package = "kamadak-exif", version = "0.6.1" }
|
|
reqwest = { version = "0.12", features = ["json"] }
|
|
urlencoding = "2.1"
|
|
zerocopy = "0.8"
|
|
ical = "0.11"
|
|
scraper = "0.20"
|