Vital / db /models.py
eddyejembi's picture
Upload folder using huggingface_hub
4e88df3 verified
Raw
History Blame Contribute Delete
4.3 kB
"""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,
]