diff --git a/drizzle/0010_ceo_os_features.sql b/drizzle/0010_ceo_os_features.sql new file mode 100644 index 0000000..af59abf --- /dev/null +++ b/drizzle/0010_ceo_os_features.sql @@ -0,0 +1,77 @@ +-- CEO OS: Contacts (CRM), Risks (Risk Register), Projects +-- Migration 0010_ceo_os_features + +--> statement-breakpoint +CREATE TABLE IF NOT EXISTS "contacts" ( + "id" uuid DEFAULT gen_random_uuid() PRIMARY KEY NOT NULL, + "tenant_id" uuid NOT NULL, + "workspace_id" uuid, + "organization_id" uuid, + "full_name" text NOT NULL, + "email" text, + "phone" text, + "role" text, + "linkedin_url" text, + "notes" text, + "tags" text[] DEFAULT '{}' NOT NULL, + "source" text, + "consent_status" text DEFAULT 'unknown' NOT NULL, + "created_at" timestamp DEFAULT now() NOT NULL, + "updated_at" timestamp DEFAULT now() NOT NULL, + "deleted_at" timestamp +); + +--> statement-breakpoint +CREATE TABLE IF NOT EXISTS "risks" ( + "id" uuid DEFAULT gen_random_uuid() PRIMARY KEY NOT NULL, + "tenant_id" uuid NOT NULL, + "workspace_id" uuid, + "title" text NOT NULL, + "description" text, + "category" text, + "probability" text DEFAULT 'medium' NOT NULL, + "impact" text DEFAULT 'medium' NOT NULL, + "risk_score" integer GENERATED ALWAYS AS ( + CASE probability + WHEN 'low' THEN 1 + WHEN 'medium' THEN 2 + WHEN 'high' THEN 3 + WHEN 'critical' THEN 4 + ELSE 2 + END * + CASE impact + WHEN 'low' THEN 1 + WHEN 'medium' THEN 2 + WHEN 'high' THEN 3 + WHEN 'critical' THEN 4 + ELSE 2 + END + ) STORED, + "status" text DEFAULT 'open' NOT NULL, + "mitigation" text, + "owner" text, + "decision_id" uuid, + "review_due_at" timestamp, + "created_at" timestamp DEFAULT now() NOT NULL, + "updated_at" timestamp DEFAULT now() NOT NULL +); + +--> statement-breakpoint +CREATE TABLE IF NOT EXISTS "projects" ( + "id" uuid DEFAULT gen_random_uuid() PRIMARY KEY NOT NULL, + "tenant_id" uuid NOT NULL, + "workspace_id" uuid, + "organization_id" uuid, + "name" text NOT NULL, + "description" text, + "status" text DEFAULT 'planning' NOT NULL, + "priority" text DEFAULT 'medium' NOT NULL, + "start_date" date, + "due_date" date, + "budget_minor_units" bigint, + "currency" text DEFAULT 'RON', + "tags" text[] DEFAULT '{}' NOT NULL, + "created_at" timestamp DEFAULT now() NOT NULL, + "updated_at" timestamp DEFAULT now() NOT NULL, + "deleted_at" timestamp +);