Spaces:
Sleeping
Sleeping
File size: 2,025 Bytes
a8c0492 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | -- AnemiaLens — Supabase Schema
-- Run this in Supabase SQL Editor to create all tables
CREATE TABLE IF NOT EXISTS users (
id SERIAL PRIMARY KEY,
uid VARCHAR(36) UNIQUE NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
hashed_password TEXT NOT NULL,
full_name VARCHAR(255),
role VARCHAR(32) NOT NULL DEFAULT 'user',
is_active BOOLEAN NOT NULL DEFAULT TRUE,
scan_count INTEGER NOT NULL DEFAULT 0,
subscription_tier VARCHAR(32) NOT NULL DEFAULT 'free',
stripe_customer_id VARCHAR(128) UNIQUE,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
last_login_at TIMESTAMPTZ
);
CREATE INDEX IF NOT EXISTS ix_users_uid ON users(uid);
CREATE INDEX IF NOT EXISTS ix_users_email ON users(email);
CREATE INDEX IF NOT EXISTS ix_users_stripe_customer_id ON users(stripe_customer_id);
CREATE TABLE IF NOT EXISTS screenings (
id SERIAL PRIMARY KEY,
uid VARCHAR(36) UNIQUE NOT NULL,
user_id INTEGER,
request_id VARCHAR(16) NOT NULL,
triage_band VARCHAR(32) NOT NULL,
triage_score FLOAT NOT NULL,
triage_label VARCHAR(64) NOT NULL,
anemia_risk FLOAT,
predicted_hemoglobin FLOAT,
confidence FLOAT,
uncertainty FLOAT,
screening_label VARCHAR(32),
model_source VARCHAR(64),
quality_passed BOOLEAN NOT NULL DEFAULT TRUE,
blocked BOOLEAN NOT NULL DEFAULT FALSE,
processing_path VARCHAR(32) NOT NULL DEFAULT 'roi_crop',
guidance_source VARCHAR(16) NOT NULL DEFAULT 'fallback',
symptoms_json TEXT,
full_response_json TEXT,
share_text TEXT,
urgency_label VARCHAR(128),
headline VARCHAR(255),
processing_time_ms FLOAT NOT NULL DEFAULT 0.0,
language VARCHAR(16),
region VARCHAR(64),
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX IF NOT EXISTS ix_screenings_uid ON screenings(uid);
CREATE INDEX IF NOT EXISTS ix_screenings_user_id ON screenings(user_id);
CREATE INDEX IF NOT EXISTS ix_screenings_created_at ON screenings(created_at);
|