gemini_adk_rs/session/
db_schema.rs1pub const POSTGRES_SCHEMA: &str = r#"
8CREATE TABLE IF NOT EXISTS sessions (
9 id TEXT PRIMARY KEY,
10 app_name TEXT NOT NULL,
11 user_id TEXT NOT NULL,
12 state JSONB NOT NULL DEFAULT '{}',
13 create_time TIMESTAMPTZ NOT NULL DEFAULT NOW(),
14 update_time TIMESTAMPTZ NOT NULL DEFAULT NOW()
15);
16
17CREATE TABLE IF NOT EXISTS events (
18 id TEXT PRIMARY KEY,
19 session_id TEXT NOT NULL REFERENCES sessions(id) ON DELETE CASCADE,
20 invocation_id TEXT NOT NULL,
21 author TEXT NOT NULL,
22 content TEXT,
23 actions JSONB NOT NULL DEFAULT '{}',
24 timestamp BIGINT NOT NULL,
25 created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
26);
27
28CREATE INDEX IF NOT EXISTS idx_events_session ON events(session_id);
29CREATE INDEX IF NOT EXISTS idx_sessions_app_user ON sessions(app_name, user_id);
30"#;
31
32pub const SQLITE_SCHEMA: &str = r#"
34CREATE TABLE IF NOT EXISTS sessions (
35 id TEXT PRIMARY KEY,
36 app_name TEXT NOT NULL,
37 user_id TEXT NOT NULL,
38 state TEXT NOT NULL DEFAULT '{}',
39 create_time TEXT NOT NULL DEFAULT (datetime('now')),
40 update_time TEXT NOT NULL DEFAULT (datetime('now'))
41);
42
43CREATE TABLE IF NOT EXISTS events (
44 id TEXT PRIMARY KEY,
45 session_id TEXT NOT NULL REFERENCES sessions(id) ON DELETE CASCADE,
46 invocation_id TEXT NOT NULL,
47 author TEXT NOT NULL,
48 content TEXT,
49 actions TEXT NOT NULL DEFAULT '{}',
50 timestamp INTEGER NOT NULL,
51 created_at TEXT NOT NULL DEFAULT (datetime('now'))
52);
53
54CREATE INDEX IF NOT EXISTS idx_events_session ON events(session_id);
55CREATE INDEX IF NOT EXISTS idx_sessions_app_user ON sessions(app_name, user_id);
56"#;