-- Create all new tables and enums that db:push might miss -- Idempotent: safe to run multiple times -- ═══ Enums ═══ DO $$ BEGIN CREATE TYPE todo_priority AS ENUM ('high', 'medium', 'low', 'none'); EXCEPTION WHEN duplicate_object THEN null; END $$; DO $$ BEGIN CREATE TYPE security_audit_status AS ENUM ('strong', 'needs_improvement', 'critical'); EXCEPTION WHEN duplicate_object THEN null; END $$; -- ═══ Todos ═══ CREATE TABLE IF NOT EXISTS todos ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), user_id TEXT NOT NULL, title TEXT NOT NULL, description TEXT, is_completed BOOLEAN NOT NULL DEFAULT false, priority todo_priority NOT NULL DEFAULT 'none', category TEXT, due_date TIMESTAMPTZ, completed_at TIMESTAMPTZ, sort_order INTEGER NOT NULL DEFAULT 0, created_at TIMESTAMPTZ NOT NULL DEFAULT now(), updated_at TIMESTAMPTZ NOT NULL DEFAULT now() ); -- ═══ Security Audits ═══ CREATE TABLE IF NOT EXISTS security_audits ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), project_name TEXT NOT NULL, category TEXT NOT NULL, findings JSONB DEFAULT '[]'::jsonb, score INTEGER NOT NULL DEFAULT 0, last_audited TIMESTAMPTZ NOT NULL DEFAULT now(), created_at TIMESTAMPTZ NOT NULL DEFAULT now(), updated_at TIMESTAMPTZ NOT NULL DEFAULT now() ); -- ═══ Daily Summaries ═══ CREATE TABLE IF NOT EXISTS daily_summaries ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), date TEXT NOT NULL UNIQUE, content TEXT NOT NULL, highlights JSONB DEFAULT '[]'::jsonb, stats JSONB DEFAULT '{}'::jsonb, created_at TIMESTAMPTZ NOT NULL DEFAULT now(), updated_at TIMESTAMPTZ NOT NULL DEFAULT now() ); -- ═══ Task Comments (if not already created) ═══ CREATE TABLE IF NOT EXISTS task_comments ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), task_id UUID NOT NULL REFERENCES tasks(id) ON DELETE CASCADE, author_id TEXT, author_name TEXT NOT NULL, content TEXT NOT NULL, created_at TIMESTAMPTZ NOT NULL DEFAULT now() );