-- Users Table
CREATE TABLE users (
phone TEXT PRIMARY KEY,
nom TEXT,
edat INTEGER,
pes DECIMAL,
sexe TEXT,
terreny TEXT,
dies_disponibles INTEGER,
disponibilitat_detallada TEXT,
nivell TEXT,
objectius TEXT,
subscripcio TEXT CHECK (subscripcio IN ('active', 'trial', 'canceled')),
stripe_customer_id TEXT,
onboarding_completed BOOLEAN DEFAULT false,
created_at TIMESTAMPTZ DEFAULT NOW()
);-- Chat History Table
CREATE TABLE chat_history (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_phone TEXT REFERENCES users(phone),
role TEXT CHECK (role IN ('user', 'assistant')),
message TEXT,
created_at TIMESTAMPTZ DEFAULT NOW()
);-- Weekly Plans Table
CREATE TABLE weekly_plans (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_phone TEXT REFERENCES users(phone),
week_number INTEGER,
plan_text TEXT,
status TEXT CHECK (status IN ('active', 'completed')),
created_at TIMESTAMPTZ DEFAULT NOW(),
UNIQUE(user_phone, week_number)
);-- Workout History Table
CREATE TABLE workout_history (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_phone TEXT REFERENCES users(phone),
week_number INTEGER,
session_number INTEGER,
distance DECIMAL(5,2),
time_minutes DECIMAL(6,2),
pace_min_per_km DECIMAL(5,2),
difficulty_rating INTEGER CHECK (difficulty_rating BETWEEN 1 AND 10),
feedback TEXT,
completed BOOLEAN DEFAULT true,
completion_date TIMESTAMPTZ,
created_at TIMESTAMPTZ DEFAULT NOW(),
UNIQUE(user_phone, week_number, session_number)
);