Planned schema changes: CREATE SCHEMA IF NOT EXISTS "tasks"; CREATE TYPE "tasks"."frequency" AS ENUM ('daily', 'weekly', 'monthly', 'yearly'); CREATE TYPE "tasks"."schedule_type" AS ENUM ('fixed', 'completion'); CREATE TYPE "tasks"."task_action" AS ENUM ('created', 'updated', 'completed', 'uncompleted', 'deferred', 'undeferred', 'deleted'); -- POSTGRES TABLE: tasks.contexts -- CREATE TABLE "tasks"."contexts" ( "id" uuid PRIMARY KEY NOT NULL DEFAULT gen_random_uuid(), "user_id" uuid NOT NULL, "name" text NOT NULL, "color" text, "sort_order" integer NOT NULL DEFAULT 0, "created_at" timestamptz NOT NULL DEFAULT now() ); -- POSTGRES TABLE: tasks.context_time_windows -- CREATE TABLE "tasks"."context_time_windows" ( "id" uuid PRIMARY KEY NOT NULL DEFAULT gen_random_uuid(), "context_id" uuid NOT NULL, "day_of_week" integer NOT NULL, "start_time" time NOT NULL, "end_time" time NOT NULL ); -- POSTGRES TABLE: tasks.projects -- CREATE TABLE "tasks"."projects" ( "id" uuid PRIMARY KEY NOT NULL DEFAULT gen_random_uuid(), "user_id" uuid NOT NULL, "name" text NOT NULL, "description" text, "color" text, "parent_project_id" uuid, "sort_order" integer NOT NULL DEFAULT 0, "created_at" timestamptz NOT NULL DEFAULT now() ); -- POSTGRES TABLE: tasks.project_contexts -- CREATE TABLE "tasks"."project_contexts" ( "project_id" uuid NOT NULL, "context_id" uuid NOT NULL, PRIMARY KEY ("project_id", "context_id") ); -- POSTGRES TABLE: tasks.saved_filters -- CREATE TABLE "tasks"."saved_filters" ( "id" uuid PRIMARY KEY NOT NULL DEFAULT gen_random_uuid(), "user_id" uuid NOT NULL, "name" text NOT NULL, "color" text, "filter" jsonb NOT NULL, "created_at" timestamptz NOT NULL DEFAULT now() ); -- POSTGRES TABLE: tasks.tasks -- CREATE TABLE "tasks"."tasks" ( "id" uuid PRIMARY KEY NOT NULL DEFAULT gen_random_uuid(), "user_id" uuid NOT NULL, "title" text NOT NULL, "project_id" uuid, "priority" integer NOT NULL DEFAULT 2, "due_date" date, "deferred_until" timestamptz, "completed_at" timestamptz, "deleted_at" timestamptz, "created_at" timestamptz NOT NULL DEFAULT now(), "updated_at" timestamptz NOT NULL DEFAULT now() ); -- POSTGRES TABLE: tasks.recurrence_rules -- CREATE TABLE "tasks"."recurrence_rules" ( "id" uuid PRIMARY KEY NOT NULL DEFAULT gen_random_uuid(), "task_id" uuid NOT NULL, "schedule_type" tasks.schedule_type NOT NULL, "frequency" tasks.frequency, "interval" integer NOT NULL DEFAULT 1, "days_of_week" integer[], "day_of_month" integer, "month_of_year" integer, "days_after_completion" integer, "created_at" timestamptz NOT NULL DEFAULT now() ); -- POSTGRES TABLE: tasks.task_contexts -- CREATE TABLE "tasks"."task_contexts" ( "task_id" uuid NOT NULL, "context_id" uuid NOT NULL, PRIMARY KEY ("task_id", "context_id") ); -- POSTGRES TABLE: tasks.task_history -- CREATE TABLE "tasks"."task_history" ( "id" uuid PRIMARY KEY NOT NULL DEFAULT gen_random_uuid(), "user_id" uuid NOT NULL, "task_id" uuid NOT NULL, "action" tasks.task_action NOT NULL, "details" jsonb, "created_at" timestamptz NOT NULL DEFAULT now() ); -- POSTGRES TABLE: tasks.user_next_selection -- CREATE TABLE "tasks"."user_next_selection" ( "user_id" uuid PRIMARY KEY NOT NULL, "task_id" uuid, "selected_at" timestamptz NOT NULL DEFAULT now() ); -- POSTGRES TABLE: tasks.user_settings -- CREATE TABLE "tasks"."user_settings" ( "user_id" uuid PRIMARY KEY NOT NULL, "timezone" text NOT NULL DEFAULT 'UTC', "updated_at" timestamptz NOT NULL DEFAULT now() ); -- Enable RLS for tasks.context_time_windows table ALTER TABLE "tasks"."context_time_windows" ENABLE ROW LEVEL SECURITY; ALTER TABLE "tasks"."context_time_windows" FORCE ROW LEVEL SECURITY; -- Enable RLS for tasks.contexts table ALTER TABLE "tasks"."contexts" ENABLE ROW LEVEL SECURITY; ALTER TABLE "tasks"."contexts" FORCE ROW LEVEL SECURITY; -- Enable RLS for tasks.projects table ALTER TABLE "tasks"."projects" ENABLE ROW LEVEL SECURITY; ALTER TABLE "tasks"."projects" FORCE ROW LEVEL SECURITY; -- Enable RLS for tasks.recurrence_rules table ALTER TABLE "tasks"."recurrence_rules" ENABLE ROW LEVEL SECURITY; ALTER TABLE "tasks"."recurrence_rules" FORCE ROW LEVEL SECURITY; -- Enable RLS for tasks.saved_filters table ALTER TABLE "tasks"."saved_filters" ENABLE ROW LEVEL SECURITY; ALTER TABLE "tasks"."saved_filters" FORCE ROW LEVEL SECURITY; -- Enable RLS for tasks.task_history table ALTER TABLE "tasks"."task_history" ENABLE ROW LEVEL SECURITY; ALTER TABLE "tasks"."task_history" FORCE ROW LEVEL SECURITY; -- Enable RLS for tasks.tasks table ALTER TABLE "tasks"."tasks" ENABLE ROW LEVEL SECURITY; ALTER TABLE "tasks"."tasks" FORCE ROW LEVEL SECURITY; -- Enable RLS for tasks.user_settings table ALTER TABLE "tasks"."user_settings" ENABLE ROW LEVEL SECURITY; ALTER TABLE "tasks"."user_settings" FORCE ROW LEVEL SECURITY; DROP POLICY IF EXISTS "ctw_user_delete" ON "tasks"."context_time_windows"; CREATE POLICY "ctw_user_delete" ON "tasks"."context_time_windows" FOR DELETE USING (EXISTS (SELECT 1 FROM tasks.contexts WHERE id = context_id AND user_id = current_setting('app.user_id')::uuid)); DROP POLICY IF EXISTS "ctw_user_insert" ON "tasks"."context_time_windows"; CREATE POLICY "ctw_user_insert" ON "tasks"."context_time_windows" FOR INSERT WITH CHECK (EXISTS (SELECT 1 FROM tasks.contexts WHERE id = context_id AND user_id = current_setting('app.user_id')::uuid)); DROP POLICY IF EXISTS "ctw_user_select" ON "tasks"."context_time_windows"; CREATE POLICY "ctw_user_select" ON "tasks"."context_time_windows" FOR SELECT USING (EXISTS (SELECT 1 FROM tasks.contexts WHERE id = context_id AND user_id = current_setting('app.user_id')::uuid)); DROP POLICY IF EXISTS "ctw_user_update" ON "tasks"."context_time_windows"; CREATE POLICY "ctw_user_update" ON "tasks"."context_time_windows" FOR UPDATE USING (EXISTS (SELECT 1 FROM tasks.contexts WHERE id = context_id AND user_id = current_setting('app.user_id')::uuid)) WITH CHECK (EXISTS (SELECT 1 FROM tasks.contexts WHERE id = context_id AND user_id = current_setting('app.user_id')::uuid)); DROP POLICY IF EXISTS "contexts_user_delete" ON "tasks"."contexts"; CREATE POLICY "contexts_user_delete" ON "tasks"."contexts" FOR DELETE USING (user_id = current_setting('app.user_id')::uuid); DROP POLICY IF EXISTS "contexts_user_insert" ON "tasks"."contexts"; CREATE POLICY "contexts_user_insert" ON "tasks"."contexts" FOR INSERT WITH CHECK (user_id = current_setting('app.user_id')::uuid); DROP POLICY IF EXISTS "contexts_user_select" ON "tasks"."contexts"; CREATE POLICY "contexts_user_select" ON "tasks"."contexts" FOR SELECT USING (user_id = current_setting('app.user_id')::uuid); DROP POLICY IF EXISTS "contexts_user_update" ON "tasks"."contexts"; CREATE POLICY "contexts_user_update" ON "tasks"."contexts" FOR UPDATE USING (user_id = current_setting('app.user_id')::uuid) WITH CHECK (user_id = current_setting('app.user_id')::uuid); DROP POLICY IF EXISTS "projects_user_delete" ON "tasks"."projects"; CREATE POLICY "projects_user_delete" ON "tasks"."projects" FOR DELETE USING (user_id = current_setting('app.user_id')::uuid); DROP POLICY IF EXISTS "projects_user_insert" ON "tasks"."projects"; CREATE POLICY "projects_user_insert" ON "tasks"."projects" FOR INSERT WITH CHECK (user_id = current_setting('app.user_id')::uuid); DROP POLICY IF EXISTS "projects_user_select" ON "tasks"."projects"; CREATE POLICY "projects_user_select" ON "tasks"."projects" FOR SELECT USING (user_id = current_setting('app.user_id')::uuid); DROP POLICY IF EXISTS "projects_user_update" ON "tasks"."projects"; CREATE POLICY "projects_user_update" ON "tasks"."projects" FOR UPDATE USING (user_id = current_setting('app.user_id')::uuid) WITH CHECK (user_id = current_setting('app.user_id')::uuid); DROP POLICY IF EXISTS "recurrence_user_delete" ON "tasks"."recurrence_rules"; CREATE POLICY "recurrence_user_delete" ON "tasks"."recurrence_rules" FOR DELETE USING (EXISTS (SELECT 1 FROM tasks.tasks WHERE id = task_id AND user_id = current_setting('app.user_id')::uuid)); DROP POLICY IF EXISTS "recurrence_user_insert" ON "tasks"."recurrence_rules"; CREATE POLICY "recurrence_user_insert" ON "tasks"."recurrence_rules" FOR INSERT WITH CHECK (EXISTS (SELECT 1 FROM tasks.tasks WHERE id = task_id AND user_id = current_setting('app.user_id')::uuid)); DROP POLICY IF EXISTS "recurrence_user_select" ON "tasks"."recurrence_rules"; CREATE POLICY "recurrence_user_select" ON "tasks"."recurrence_rules" FOR SELECT USING (EXISTS (SELECT 1 FROM tasks.tasks WHERE id = task_id AND user_id = current_setting('app.user_id')::uuid)); DROP POLICY IF EXISTS "recurrence_user_update" ON "tasks"."recurrence_rules"; CREATE POLICY "recurrence_user_update" ON "tasks"."recurrence_rules" FOR UPDATE USING (EXISTS (SELECT 1 FROM tasks.tasks WHERE id = task_id AND user_id = current_setting('app.user_id')::uuid)) WITH CHECK (EXISTS (SELECT 1 FROM tasks.tasks WHERE id = task_id AND user_id = current_setting('app.user_id')::uuid)); DROP POLICY IF EXISTS "saved_filters_user_delete" ON "tasks"."saved_filters"; CREATE POLICY "saved_filters_user_delete" ON "tasks"."saved_filters" FOR DELETE USING (user_id = current_setting('app.user_id')::uuid); DROP POLICY IF EXISTS "saved_filters_user_insert" ON "tasks"."saved_filters"; CREATE POLICY "saved_filters_user_insert" ON "tasks"."saved_filters" FOR INSERT WITH CHECK (user_id = current_setting('app.user_id')::uuid); DROP POLICY IF EXISTS "saved_filters_user_select" ON "tasks"."saved_filters"; CREATE POLICY "saved_filters_user_select" ON "tasks"."saved_filters" FOR SELECT USING (user_id = current_setting('app.user_id')::uuid); DROP POLICY IF EXISTS "saved_filters_user_update" ON "tasks"."saved_filters"; CREATE POLICY "saved_filters_user_update" ON "tasks"."saved_filters" FOR UPDATE USING (user_id = current_setting('app.user_id')::uuid) WITH CHECK (user_id = current_setting('app.user_id')::uuid); DROP POLICY IF EXISTS "task_history_user_delete" ON "tasks"."task_history"; CREATE POLICY "task_history_user_delete" ON "tasks"."task_history" FOR DELETE USING (user_id = current_setting('app.user_id')::uuid); DROP POLICY IF EXISTS "task_history_user_insert" ON "tasks"."task_history"; CREATE POLICY "task_history_user_insert" ON "tasks"."task_history" FOR INSERT WITH CHECK (user_id = current_setting('app.user_id')::uuid); DROP POLICY IF EXISTS "task_history_user_select" ON "tasks"."task_history"; CREATE POLICY "task_history_user_select" ON "tasks"."task_history" FOR SELECT USING (user_id = current_setting('app.user_id')::uuid); DROP POLICY IF EXISTS "task_history_user_update" ON "tasks"."task_history"; CREATE POLICY "task_history_user_update" ON "tasks"."task_history" FOR UPDATE USING (user_id = current_setting('app.user_id')::uuid) WITH CHECK (user_id = current_setting('app.user_id')::uuid); DROP POLICY IF EXISTS "tasks_user_delete" ON "tasks"."tasks"; CREATE POLICY "tasks_user_delete" ON "tasks"."tasks" FOR DELETE USING (user_id = current_setting('app.user_id')::uuid); DROP POLICY IF EXISTS "tasks_user_insert" ON "tasks"."tasks"; CREATE POLICY "tasks_user_insert" ON "tasks"."tasks" FOR INSERT WITH CHECK (user_id = current_setting('app.user_id')::uuid); DROP POLICY IF EXISTS "tasks_user_select" ON "tasks"."tasks"; CREATE POLICY "tasks_user_select" ON "tasks"."tasks" FOR SELECT USING (user_id = current_setting('app.user_id')::uuid); DROP POLICY IF EXISTS "tasks_user_update" ON "tasks"."tasks"; CREATE POLICY "tasks_user_update" ON "tasks"."tasks" FOR UPDATE USING (user_id = current_setting('app.user_id')::uuid) WITH CHECK (user_id = current_setting('app.user_id')::uuid); DROP POLICY IF EXISTS "user_settings_user_delete" ON "tasks"."user_settings"; CREATE POLICY "user_settings_user_delete" ON "tasks"."user_settings" FOR DELETE USING (user_id = current_setting('app.user_id')::uuid); DROP POLICY IF EXISTS "user_settings_user_insert" ON "tasks"."user_settings"; CREATE POLICY "user_settings_user_insert" ON "tasks"."user_settings" FOR INSERT WITH CHECK (user_id = current_setting('app.user_id')::uuid); DROP POLICY IF EXISTS "user_settings_user_select" ON "tasks"."user_settings"; CREATE POLICY "user_settings_user_select" ON "tasks"."user_settings" FOR SELECT USING (user_id = current_setting('app.user_id')::uuid); DROP POLICY IF EXISTS "user_settings_user_update" ON "tasks"."user_settings"; CREATE POLICY "user_settings_user_update" ON "tasks"."user_settings" FOR UPDATE USING (user_id = current_setting('app.user_id')::uuid) WITH CHECK (user_id = current_setting('app.user_id')::uuid); GRANT DELETE ON TABLE "tasks"."context_time_windows" TO "tasks_app"; GRANT INSERT ON TABLE "tasks"."context_time_windows" TO "tasks_app"; GRANT SELECT ON TABLE "tasks"."context_time_windows" TO "tasks_app"; GRANT UPDATE ON TABLE "tasks"."context_time_windows" TO "tasks_app"; GRANT DELETE ON TABLE "tasks"."contexts" TO "tasks_app"; GRANT INSERT ON TABLE "tasks"."contexts" TO "tasks_app"; GRANT SELECT ON TABLE "tasks"."contexts" TO "tasks_app"; GRANT UPDATE ON TABLE "tasks"."contexts" TO "tasks_app"; GRANT DELETE ON TABLE "tasks"."project_contexts" TO "tasks_app"; GRANT INSERT ON TABLE "tasks"."project_contexts" TO "tasks_app"; GRANT SELECT ON TABLE "tasks"."project_contexts" TO "tasks_app"; GRANT UPDATE ON TABLE "tasks"."project_contexts" TO "tasks_app"; GRANT DELETE ON TABLE "tasks"."projects" TO "tasks_app"; GRANT INSERT ON TABLE "tasks"."projects" TO "tasks_app"; GRANT SELECT ON TABLE "tasks"."projects" TO "tasks_app"; GRANT UPDATE ON TABLE "tasks"."projects" TO "tasks_app"; GRANT DELETE ON TABLE "tasks"."recurrence_rules" TO "tasks_app"; GRANT INSERT ON TABLE "tasks"."recurrence_rules" TO "tasks_app"; GRANT SELECT ON TABLE "tasks"."recurrence_rules" TO "tasks_app"; GRANT UPDATE ON TABLE "tasks"."recurrence_rules" TO "tasks_app"; GRANT DELETE ON TABLE "tasks"."saved_filters" TO "tasks_app"; GRANT INSERT ON TABLE "tasks"."saved_filters" TO "tasks_app"; GRANT SELECT ON TABLE "tasks"."saved_filters" TO "tasks_app"; GRANT UPDATE ON TABLE "tasks"."saved_filters" TO "tasks_app"; GRANT DELETE ON TABLE "tasks"."task_contexts" TO "tasks_app"; GRANT INSERT ON TABLE "tasks"."task_contexts" TO "tasks_app"; GRANT SELECT ON TABLE "tasks"."task_contexts" TO "tasks_app"; GRANT UPDATE ON TABLE "tasks"."task_contexts" TO "tasks_app"; GRANT DELETE ON TABLE "tasks"."task_history" TO "tasks_app"; GRANT INSERT ON TABLE "tasks"."task_history" TO "tasks_app"; GRANT SELECT ON TABLE "tasks"."task_history" TO "tasks_app"; GRANT UPDATE ON TABLE "tasks"."task_history" TO "tasks_app"; GRANT DELETE ON TABLE "tasks"."tasks" TO "tasks_app"; GRANT INSERT ON TABLE "tasks"."tasks" TO "tasks_app"; GRANT SELECT ON TABLE "tasks"."tasks" TO "tasks_app"; GRANT UPDATE ON TABLE "tasks"."tasks" TO "tasks_app"; GRANT DELETE ON TABLE "tasks"."user_next_selection" TO "tasks_app"; GRANT INSERT ON TABLE "tasks"."user_next_selection" TO "tasks_app"; GRANT SELECT ON TABLE "tasks"."user_next_selection" TO "tasks_app"; GRANT UPDATE ON TABLE "tasks"."user_next_selection" TO "tasks_app"; GRANT DELETE ON TABLE "tasks"."user_settings" TO "tasks_app"; GRANT INSERT ON TABLE "tasks"."user_settings" TO "tasks_app"; GRANT SELECT ON TABLE "tasks"."user_settings" TO "tasks_app"; GRANT UPDATE ON TABLE "tasks"."user_settings" TO "tasks_app"; CREATE INDEX IF NOT EXISTS "idx_context_time_windows_context_id" ON "tasks"."context_time_windows" ("context_id"); CREATE INDEX IF NOT EXISTS "idx_contexts_user_id" ON "tasks"."contexts" ("user_id"); CREATE INDEX IF NOT EXISTS "idx_project_contexts_context_id" ON "tasks"."project_contexts" ("context_id"); CREATE INDEX IF NOT EXISTS "idx_projects_parent_project_id" ON "tasks"."projects" ("parent_project_id"); CREATE INDEX IF NOT EXISTS "idx_projects_user_id" ON "tasks"."projects" ("user_id"); CREATE UNIQUE INDEX IF NOT EXISTS "idx_projects_user_id_name" ON "tasks"."projects" ("user_id", "name"); CREATE INDEX IF NOT EXISTS "idx_recurrence_rules_task_id" ON "tasks"."recurrence_rules" ("task_id"); CREATE UNIQUE INDEX IF NOT EXISTS "idx_recurrence_rules_task_unique" ON "tasks"."recurrence_rules" ("task_id"); CREATE INDEX IF NOT EXISTS "idx_saved_filters_user_id" ON "tasks"."saved_filters" ("user_id"); CREATE INDEX IF NOT EXISTS "idx_task_contexts_context_id" ON "tasks"."task_contexts" ("context_id"); CREATE INDEX IF NOT EXISTS "idx_task_history_created_at" ON "tasks"."task_history" ("created_at"); CREATE INDEX IF NOT EXISTS "idx_task_history_task_id" ON "tasks"."task_history" ("task_id"); CREATE INDEX IF NOT EXISTS "idx_task_history_user_id" ON "tasks"."task_history" ("user_id"); CREATE INDEX IF NOT EXISTS "idx_tasks_completed_at" ON "tasks"."tasks" ("completed_at"); CREATE INDEX IF NOT EXISTS "idx_tasks_deleted_at" ON "tasks"."tasks" ("deleted_at"); CREATE INDEX IF NOT EXISTS "idx_tasks_due_date" ON "tasks"."tasks" ("due_date"); CREATE INDEX IF NOT EXISTS "idx_tasks_project_id" ON "tasks"."tasks" ("project_id"); CREATE INDEX IF NOT EXISTS "idx_tasks_user_id" ON "tasks"."tasks" ("user_id"); -- ALTER statements: -- ALTER TABLE "tasks"."context_time_windows" ADD CONSTRAINT "valid_day_of_week" CHECK (day_of_week >= 0 AND day_of_week <= 6); -- ALTER statements: -- ALTER TABLE "tasks"."context_time_windows" ADD CONSTRAINT "valid_time_range" CHECK (start_time < end_time); -- ALTER statements: -- ALTER TABLE "tasks"."recurrence_rules" ADD CONSTRAINT "completion_requires_days" CHECK (schedule_type::text != 'completion' OR days_after_completion IS NOT NULL); -- ALTER statements: -- ALTER TABLE "tasks"."recurrence_rules" ADD CONSTRAINT "fixed_requires_frequency" CHECK (schedule_type::text != 'fixed' OR frequency IS NOT NULL); -- ALTER statements: -- ALTER TABLE "tasks"."recurrence_rules" ADD CONSTRAINT "valid_day_of_month" CHECK (day_of_month IS NULL OR (day_of_month >= 1 AND day_of_month <= 31)); -- ALTER statements: -- ALTER TABLE "tasks"."recurrence_rules" ADD CONSTRAINT "valid_days_after_completion" CHECK (days_after_completion IS NULL OR days_after_completion >= 1); -- ALTER statements: -- ALTER TABLE "tasks"."recurrence_rules" ADD CONSTRAINT "valid_interval" CHECK (interval >= 1); -- ALTER statements: -- ALTER TABLE "tasks"."recurrence_rules" ADD CONSTRAINT "valid_month_of_year" CHECK (month_of_year IS NULL OR (month_of_year >= 1 AND month_of_year <= 12)); -- ALTER statements: -- ALTER TABLE "tasks"."tasks" ADD CONSTRAINT "valid_priority" CHECK (priority >= 1 AND priority <= 4); -- ALTER statements: -- ALTER TABLE "tasks"."tasks" ADD CONSTRAINT "valid_title_length" CHECK (length(title) <= 500); -- ALTER statements: -- ALTER TABLE "tasks"."context_time_windows" ADD CONSTRAINT "fk_context" FOREIGN KEY ("context_id") REFERENCES "tasks"."contexts"("id") ON DELETE CASCADE; -- ALTER statements: -- ALTER TABLE "tasks"."projects" ADD CONSTRAINT "fk_parent_project" FOREIGN KEY ("parent_project_id") REFERENCES "tasks"."projects"("id") ON DELETE SET NULL; -- ALTER statements: -- ALTER TABLE "tasks"."project_contexts" ADD CONSTRAINT "fk_project" FOREIGN KEY ("project_id") REFERENCES "tasks"."projects"("id") ON DELETE CASCADE; -- ALTER statements: -- ALTER TABLE "tasks"."project_contexts" ADD CONSTRAINT "fk_context" FOREIGN KEY ("context_id") REFERENCES "tasks"."contexts"("id") ON DELETE CASCADE; -- ALTER statements: -- ALTER TABLE "tasks"."tasks" ADD CONSTRAINT "fk_project" FOREIGN KEY ("project_id") REFERENCES "tasks"."projects"("id") ON DELETE SET NULL; -- ALTER statements: -- ALTER TABLE "tasks"."recurrence_rules" ADD CONSTRAINT "fk_task" FOREIGN KEY ("task_id") REFERENCES "tasks"."tasks"("id") ON DELETE CASCADE; -- ALTER statements: -- ALTER TABLE "tasks"."task_contexts" ADD CONSTRAINT "fk_task" FOREIGN KEY ("task_id") REFERENCES "tasks"."tasks"("id") ON DELETE CASCADE; -- ALTER statements: -- ALTER TABLE "tasks"."task_contexts" ADD CONSTRAINT "fk_context" FOREIGN KEY ("context_id") REFERENCES "tasks"."contexts"("id") ON DELETE CASCADE; -- ALTER statements: -- ALTER TABLE "tasks"."task_history" ADD CONSTRAINT "fk_task" FOREIGN KEY ("task_id") REFERENCES "tasks"."tasks"("id") ON DELETE CASCADE; -- ALTER statements: -- ALTER TABLE "tasks"."user_next_selection" ADD CONSTRAINT "fk_task" FOREIGN KEY ("task_id") REFERENCES "tasks"."tasks"("id") ON DELETE SET NULL; Auto-approval enabled; applying schema changes. Schema apply completed successfully.