Spaces:
Running
Running
| """SQLite table definitions for Vitál.""" | |
| PROFILE_TABLE = """ | |
| CREATE TABLE IF NOT EXISTS profile ( | |
| id INTEGER PRIMARY KEY, | |
| name TEXT NOT NULL, | |
| age INTEGER, | |
| city TEXT, | |
| profession TEXT, | |
| goal TEXT, | |
| conditions TEXT, | |
| medications TEXT, | |
| triggers TEXT, | |
| wake_time TEXT, | |
| sleep_time TEXT, | |
| desk_worker INTEGER, | |
| exercise_level TEXT, | |
| dietary_notes TEXT, | |
| local_foods TEXT, | |
| created_at TEXT NOT NULL, | |
| updated_at TEXT NOT NULL | |
| ); | |
| """ | |
| DAILY_LOG_SCHEMA_TABLE = """ | |
| CREATE TABLE IF NOT EXISTS daily_log_schema ( | |
| id INTEGER PRIMARY KEY, | |
| field_id TEXT UNIQUE NOT NULL, | |
| label TEXT NOT NULL, | |
| type TEXT NOT NULL, | |
| options TEXT, | |
| display_order INTEGER NOT NULL, | |
| reason TEXT | |
| ); | |
| """ | |
| DAILY_LOGS_TABLE = """ | |
| CREATE TABLE IF NOT EXISTS daily_logs ( | |
| id INTEGER PRIMARY KEY, | |
| date TEXT NOT NULL, | |
| field_id TEXT NOT NULL, | |
| value TEXT NOT NULL, | |
| logged_at TEXT NOT NULL | |
| ); | |
| """ | |
| MEDICATION_LOG_TABLE = """ | |
| CREATE TABLE IF NOT EXISTS medication_log ( | |
| id INTEGER PRIMARY KEY, | |
| date TEXT NOT NULL, | |
| medication_name TEXT NOT NULL, | |
| dose TEXT, | |
| scheduled_time TEXT NOT NULL, | |
| taken INTEGER DEFAULT 0, | |
| taken_at TEXT | |
| ); | |
| """ | |
| FOOD_LOG_TABLE = """ | |
| CREATE TABLE IF NOT EXISTS food_log ( | |
| id INTEGER PRIMARY KEY, | |
| date TEXT NOT NULL, | |
| meal_type TEXT NOT NULL, | |
| food_description TEXT NOT NULL, | |
| llm_notes TEXT, | |
| logged_at TEXT NOT NULL | |
| ); | |
| """ | |
| EXERCISE_LOG_TABLE = """ | |
| CREATE TABLE IF NOT EXISTS exercise_log ( | |
| id INTEGER PRIMARY KEY, | |
| date TEXT NOT NULL, | |
| exercise_type TEXT NOT NULL, | |
| duration_minutes INTEGER, | |
| completed INTEGER DEFAULT 0, | |
| notes TEXT, | |
| logged_at TEXT NOT NULL | |
| ); | |
| """ | |
| SCHEDULED_JOBS_TABLE = """ | |
| CREATE TABLE IF NOT EXISTS scheduled_jobs ( | |
| id INTEGER PRIMARY KEY, | |
| job_id TEXT UNIQUE NOT NULL, | |
| type TEXT NOT NULL, | |
| schedule_type TEXT NOT NULL, | |
| time TEXT, | |
| interval_minutes INTEGER, | |
| days TEXT, | |
| message TEXT NOT NULL, | |
| tts INTEGER DEFAULT 0, | |
| active INTEGER DEFAULT 1, | |
| context TEXT | |
| ); | |
| """ | |
| MEAL_PLAN_TABLE = """ | |
| CREATE TABLE IF NOT EXISTS meal_plan ( | |
| id INTEGER PRIMARY KEY, | |
| week_start TEXT NOT NULL, | |
| day_of_week TEXT NOT NULL, | |
| meal_type TEXT NOT NULL, | |
| suggestion TEXT NOT NULL, | |
| nutrients_focus TEXT, | |
| generated_at TEXT NOT NULL | |
| ); | |
| """ | |
| WEEKLY_REPORTS_TABLE = """ | |
| CREATE TABLE IF NOT EXISTS weekly_reports ( | |
| id INTEGER PRIMARY KEY, | |
| week_start TEXT NOT NULL, | |
| report_text TEXT NOT NULL, | |
| avg_pain REAL, | |
| water_goals_hit INTEGER, | |
| medication_adherence REAL, | |
| exercises_completed INTEGER, | |
| generated_at TEXT NOT NULL | |
| ); | |
| """ | |
| NOTIFICATIONS_LOG_TABLE = """ | |
| CREATE TABLE IF NOT EXISTS notifications_log ( | |
| id INTEGER PRIMARY KEY, | |
| job_id TEXT, | |
| message TEXT NOT NULL, | |
| delivered_at TEXT NOT NULL, | |
| tts_spoken INTEGER DEFAULT 0 | |
| ); | |
| """ | |
| PRESENCE_LOG_TABLE = """ | |
| CREATE TABLE IF NOT EXISTS presence_log ( | |
| id INTEGER PRIMARY KEY, | |
| detected INTEGER NOT NULL, | |
| checked_at TEXT NOT NULL, | |
| continuous_minutes INTEGER DEFAULT 0 | |
| ); | |
| """ | |
| # Stores plan metadata not covered by the 11 PRD tables (presence config, system prompt, etc.). | |
| SETTINGS_TABLE = """ | |
| CREATE TABLE IF NOT EXISTS settings ( | |
| key TEXT PRIMARY KEY, | |
| value TEXT NOT NULL | |
| ); | |
| """ | |
| DAILY_PLANS_TABLE = """ | |
| CREATE TABLE IF NOT EXISTS daily_plans ( | |
| id INTEGER PRIMARY KEY, | |
| plan_date TEXT UNIQUE NOT NULL, | |
| summary TEXT NOT NULL, | |
| hydration_goal_liters REAL NOT NULL, | |
| generated_at TEXT NOT NULL | |
| ); | |
| """ | |
| DAILY_SCHEDULE_JOBS_TABLE = """ | |
| CREATE TABLE IF NOT EXISTS daily_schedule_jobs ( | |
| id INTEGER PRIMARY KEY, | |
| plan_date TEXT NOT NULL, | |
| job_id TEXT NOT NULL, | |
| type TEXT NOT NULL, | |
| time TEXT NOT NULL, | |
| message TEXT NOT NULL, | |
| tts INTEGER DEFAULT 1, | |
| context TEXT, | |
| volume_ml INTEGER, | |
| exercise_type TEXT, | |
| duration_minutes INTEGER, | |
| UNIQUE(plan_date, job_id) | |
| ); | |
| """ | |
| ALL_TABLES: list[str] = [ | |
| PROFILE_TABLE, | |
| DAILY_LOG_SCHEMA_TABLE, | |
| DAILY_LOGS_TABLE, | |
| MEDICATION_LOG_TABLE, | |
| FOOD_LOG_TABLE, | |
| EXERCISE_LOG_TABLE, | |
| SCHEDULED_JOBS_TABLE, | |
| MEAL_PLAN_TABLE, | |
| WEEKLY_REPORTS_TABLE, | |
| NOTIFICATIONS_LOG_TABLE, | |
| PRESENCE_LOG_TABLE, | |
| SETTINGS_TABLE, | |
| DAILY_PLANS_TABLE, | |
| DAILY_SCHEDULE_JOBS_TABLE, | |
| ] | |