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>
21 lines
623 B
SQL
21 lines
623 B
SQL
CREATE TABLE calendar_events (
|
|
id INTEGER PRIMARY KEY NOT NULL,
|
|
event_uid TEXT,
|
|
summary TEXT NOT NULL,
|
|
description TEXT,
|
|
location TEXT,
|
|
start_time BIGINT NOT NULL,
|
|
end_time BIGINT NOT NULL,
|
|
all_day BOOLEAN NOT NULL DEFAULT 0,
|
|
organizer TEXT,
|
|
attendees TEXT,
|
|
embedding BLOB,
|
|
created_at BIGINT NOT NULL,
|
|
source_file TEXT,
|
|
UNIQUE(event_uid, start_time)
|
|
);
|
|
|
|
CREATE INDEX idx_calendar_start_time ON calendar_events(start_time);
|
|
CREATE INDEX idx_calendar_end_time ON calendar_events(end_time);
|
|
CREATE INDEX idx_calendar_time_range ON calendar_events(start_time, end_time);
|