-- Full schema baseline (idempotent) -- Safe to run on any database: new or already-initialised -- Requires pgvector extension for rag_embeddings.embedding column CREATE EXTENSION IF NOT EXISTS vector; --> statement-breakpoint CREATE TABLE IF NOT EXISTS "automations" ( "id" serial PRIMARY KEY NOT NULL, "organization_id" integer NOT NULL, "name" varchar(200) NOT NULL, "description" text, "code" text DEFAULT '' NOT NULL, "trigger" varchar(50) DEFAULT 'manual' NOT NULL, "trigger_config" jsonb, "is_active" boolean DEFAULT true, "created_by" integer NOT NULL, "created_at" timestamp DEFAULT now(), "updated_at" timestamp DEFAULT now() ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "billing_transactions" ( "id" serial PRIMARY KEY NOT NULL, "organization_id" integer NOT NULL, "amount" numeric(10, 2) NOT NULL, "type" varchar(10) NOT NULL, "description" text, "created_at" timestamp DEFAULT now(), "created_by" integer ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "bookmark_folders" ( "id" serial PRIMARY KEY NOT NULL, "organization_id" integer NOT NULL, "user_id" integer NOT NULL, "name" varchar(200) NOT NULL, "parent_id" integer, "position" integer DEFAULT 0 NOT NULL, "is_expanded" boolean DEFAULT true, "created_by" integer NOT NULL, "created_at" timestamp DEFAULT now(), "updated_at" timestamp DEFAULT now() ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "bookmarks" ( "id" serial PRIMARY KEY NOT NULL, "organization_id" integer NOT NULL, "user_id" integer NOT NULL, "folder_id" integer, "name" varchar(200) NOT NULL, "type" varchar(50) NOT NULL, "target_id" integer, "form_id" integer, "url" varchar(1000), "icon" varchar(100), "position" integer DEFAULT 0 NOT NULL, "view_config" jsonb, "created_by" integer NOT NULL, "created_at" timestamp DEFAULT now(), "updated_at" timestamp DEFAULT now() ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "bot_sessions" ( "id" serial PRIMARY KEY NOT NULL, "bot_id" integer NOT NULL, "refresh_token" varchar(500) NOT NULL, "expires_at" timestamp NOT NULL, "created_at" timestamp DEFAULT now(), "ip_address" varchar(45), "user_agent" text, CONSTRAINT "bot_sessions_refresh_token_unique" UNIQUE("refresh_token") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "bot_subscriptions" ( "id" serial PRIMARY KEY NOT NULL, "bot_id" integer NOT NULL, "organization_id" integer NOT NULL, "subscription_type" varchar(20) NOT NULL, "form_id" integer, "status_id" integer, "transition_id" integer, "events" jsonb DEFAULT '["comment","field_change","status_change"]'::jsonb NOT NULL, "filters" jsonb, "is_active" boolean DEFAULT true, "created_at" timestamp DEFAULT now() ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "bots" ( "id" serial PRIMARY KEY NOT NULL, "organization_id" integer NOT NULL, "name" varchar(200) NOT NULL, "description" text, "avatar_url" varchar(500), "login" varchar(100) NOT NULL, "password_hash" varchar(255) NOT NULL, "webhook_url" varchar(1000), "webhook_secret" varchar(255), "webhook_enabled" boolean DEFAULT true, "is_active" boolean DEFAULT true, "created_by" integer NOT NULL, "created_at" timestamp DEFAULT now(), "updated_at" timestamp DEFAULT now(), CONSTRAINT "bots_organization_id_login_unique" UNIQUE("organization_id","login") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "conversation_members" ( "id" serial PRIMARY KEY NOT NULL, "conversation_id" integer NOT NULL, "user_id" integer NOT NULL, "joined_at" timestamp DEFAULT now(), "last_read_at" timestamp, "external_org_id" integer, CONSTRAINT "conversation_members_conv_user_key" UNIQUE("conversation_id","user_id") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "conversation_messages" ( "id" serial PRIMARY KEY NOT NULL, "conversation_id" integer NOT NULL, "author_id" integer NOT NULL, "message" text DEFAULT '' NOT NULL, "reply_to_id" integer, "mentioned_user_ids" jsonb, "attachments" jsonb, "created_at" timestamp DEFAULT now(), "updated_at" timestamp DEFAULT now(), "is_deleted" boolean DEFAULT false ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "conversations" ( "id" serial PRIMARY KEY NOT NULL, "organization_id" integer NOT NULL, "type" varchar(10) DEFAULT 'direct' NOT NULL, "name" varchar(200), "created_by" integer NOT NULL, "is_default" boolean DEFAULT false, "created_at" timestamp DEFAULT now(), "updated_at" timestamp DEFAULT now() ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "custom_pages" ( "id" serial PRIMARY KEY NOT NULL, "organization_id" integer NOT NULL, "name" varchar(200) NOT NULL, "slug" varchar(100) NOT NULL, "description" text, "code" text DEFAULT '' NOT NULL, "form_ids" integer[] DEFAULT '{}', "icon" varchar(50) DEFAULT 'FileCode', "is_active" boolean DEFAULT true, "show_in_sidebar" boolean DEFAULT false, "created_by" integer NOT NULL, "created_at" timestamp DEFAULT now(), "updated_at" timestamp DEFAULT now(), CONSTRAINT "custom_pages_org_slug_unique" UNIQUE("organization_id","slug") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "custom_tab_modules" ( "id" serial PRIMARY KEY NOT NULL, "organization_id" integer NOT NULL, "type" varchar(100) NOT NULL, "label" varchar(200) NOT NULL, "icon" varchar(50) DEFAULT 'Puzzle', "description" text, "config" jsonb NOT NULL, "input_schema" jsonb, "is_active" boolean DEFAULT true, "created_by" integer NOT NULL, "created_at" timestamp DEFAULT now(), "updated_at" timestamp DEFAULT now(), CONSTRAINT "custom_tab_modules_organization_id_type_key" UNIQUE("organization_id","type") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "data_table_permissions" ( "id" serial PRIMARY KEY NOT NULL, "table_id" integer NOT NULL, "user_id" integer NOT NULL, "role" varchar(20) NOT NULL, "created_at" timestamp DEFAULT now(), CONSTRAINT "data_table_permissions_table_id_user_id_unique" UNIQUE("table_id","user_id") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "data_table_rows" ( "id" serial PRIMARY KEY NOT NULL, "table_id" integer NOT NULL, "values" jsonb NOT NULL, "position" integer DEFAULT 0 NOT NULL, "created_at" timestamp DEFAULT now(), "updated_at" timestamp DEFAULT now(), "is_deleted" boolean DEFAULT false ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "data_tables" ( "id" serial PRIMARY KEY NOT NULL, "organization_id" integer NOT NULL, "name" varchar(200) NOT NULL, "description" text, "columns" jsonb NOT NULL, "created_by" integer NOT NULL, "created_at" timestamp DEFAULT now(), "updated_at" timestamp DEFAULT now(), "is_deleted" boolean DEFAULT false ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "device_tokens" ( "id" serial PRIMARY KEY NOT NULL, "user_id" integer NOT NULL, "organization_id" integer NOT NULL, "token" text NOT NULL, "platform" varchar(20) NOT NULL, "device_info" jsonb, "last_active_at" timestamp DEFAULT now(), "created_at" timestamp DEFAULT now(), CONSTRAINT "device_tokens_user_id_token_key" UNIQUE("user_id","token") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "external_services" ( "id" serial PRIMARY KEY NOT NULL, "organization_id" integer NOT NULL, "service_type" varchar(50) NOT NULL, "service_name" varchar(200) NOT NULL, "api_key" text, "secret_key" text, "config" jsonb, "is_active" boolean DEFAULT true, "created_at" timestamp DEFAULT now(), "updated_at" timestamp DEFAULT now(), CONSTRAINT "external_services_organization_id_service_type_key" UNIQUE("organization_id","service_type") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "field_history" ( "id" serial PRIMARY KEY NOT NULL, "task_id" integer NOT NULL, "field_id" integer NOT NULL, "form_id" integer NOT NULL, "old_value" jsonb, "new_value" jsonb, "changed_by" integer NOT NULL, "changed_at" timestamp DEFAULT now() ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "form_fields" ( "id" serial PRIMARY KEY NOT NULL, "form_id" integer NOT NULL, "tab_id" integer, "name" varchar(200) NOT NULL, "code" varchar(100) NOT NULL, "type" varchar(50) NOT NULL, "is_required" boolean DEFAULT false, "placeholder" text, "default_value" text, "validation_rules" jsonb, "options" jsonb, "position" integer DEFAULT 0 NOT NULL, "linked_form_id" integer, "button_action_type" varchar(20), "button_url" text, "button_form_id" integer, "company_autofill" jsonb, "task_relation_type" varchar(10), "max_file_count" integer, "max_file_size_mb" integer, "created_at" timestamp DEFAULT now(), CONSTRAINT "form_fields_form_id_code_unique" UNIQUE("form_id","code"), CONSTRAINT "form_fields_id_form_id_unique" UNIQUE("id","form_id") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "form_statuses" ( "id" serial PRIMARY KEY NOT NULL, "form_id" integer NOT NULL, "name" varchar(100) NOT NULL, "color" varchar(7) DEFAULT '#e5e7eb' NOT NULL, "position" integer DEFAULT 0 NOT NULL, "is_initial" boolean DEFAULT false, "is_final" boolean DEFAULT false, "created_at" timestamp DEFAULT now(), CONSTRAINT "form_statuses_id_form_id_unique" UNIQUE("id","form_id") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "form_tabs" ( "id" serial PRIMARY KEY NOT NULL, "form_id" integer NOT NULL, "name" varchar(200) NOT NULL, "code" varchar(100) NOT NULL, "type" varchar(20) DEFAULT 'fields' NOT NULL, "position" integer DEFAULT 0 NOT NULL, "table_columns" jsonb, "created_at" timestamp DEFAULT now(), CONSTRAINT "form_tabs_form_id_code_unique" UNIQUE("form_id","code") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "forms" ( "id" serial PRIMARY KEY NOT NULL, "organization_id" integer NOT NULL, "name" varchar(200) NOT NULL, "description" text, "created_by" integer NOT NULL, "created_at" timestamp DEFAULT now(), "updated_at" timestamp DEFAULT now(), "is_active" boolean DEFAULT true, "chat_layout" varchar(20) DEFAULT 'default', "chat_enabled" boolean DEFAULT true, "system_fields_tab_id" integer, "default_tab_id" integer, "detail_layout_code" text, "title_template" text, "hidden_system_fields" text[] DEFAULT '{}'::text[], "ai_summary" text ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "global_fields" ( "id" serial PRIMARY KEY NOT NULL, "organization_id" integer NOT NULL, "code" varchar(100) NOT NULL, "name" varchar(200) NOT NULL, "type" varchar(50) NOT NULL, "options" jsonb, "default_value" text, "is_required" boolean DEFAULT false, "placeholder" text, "description" text, "validation_rules" jsonb, "created_by" integer NOT NULL, "created_at" timestamp DEFAULT now(), "updated_at" timestamp DEFAULT now(), CONSTRAINT "global_fields_organization_id_code_key" UNIQUE("organization_id","code") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "invitations" ( "id" serial PRIMARY KEY NOT NULL, "organization_id" integer NOT NULL, "email" varchar(255) NOT NULL, "token" varchar(64) NOT NULL, "created_by" integer NOT NULL, "created_at" timestamp DEFAULT now(), "expires_at" timestamp NOT NULL, "used_at" timestamp, CONSTRAINT "invitations_token_key" UNIQUE("token") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "message_reactions" ( "id" serial PRIMARY KEY NOT NULL, "task_message_id" integer, "conv_message_id" integer, "user_id" integer NOT NULL, "organization_id" integer NOT NULL, "emoji" varchar(10) NOT NULL, "created_at" timestamp DEFAULT now(), CONSTRAINT "mr_task_user_emoji_key" UNIQUE("task_message_id","user_id","emoji"), CONSTRAINT "mr_conv_user_emoji_key" UNIQUE("conv_message_id","user_id","emoji") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "message_reads" ( "id" serial PRIMARY KEY NOT NULL, "message_id" integer NOT NULL, "user_id" integer NOT NULL, "organization_id" integer NOT NULL, "read_at" timestamp DEFAULT now(), CONSTRAINT "message_reads_unique" UNIQUE("message_id","user_id") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "notification_event_types" ( "id" serial PRIMARY KEY NOT NULL, "code" varchar(100) NOT NULL, "name" varchar(200) NOT NULL, "description" text, "category" varchar(50) NOT NULL, "is_active" boolean DEFAULT true, "created_at" timestamp DEFAULT now(), CONSTRAINT "notification_event_types_code_unique" UNIQUE("code") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "notification_subscriptions" ( "id" serial PRIMARY KEY NOT NULL, "user_id" integer NOT NULL, "organization_id" integer NOT NULL, "event_type_code" varchar(100) NOT NULL, "target_type" varchar(50), "target_id" integer, "channels" jsonb DEFAULT '["app", "email"]'::jsonb, "is_active" boolean DEFAULT true, "created_at" timestamp DEFAULT now(), "updated_at" timestamp DEFAULT now(), CONSTRAINT "notification_subscriptions_user_id_event_type_code_target_type_" UNIQUE("user_id","event_type_code","target_type","target_id") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "org_connections" ( "id" serial PRIMARY KEY NOT NULL, "initiator_org_id" integer NOT NULL, "partner_org_id" integer, "status" varchar(20) DEFAULT 'pending' NOT NULL, "token" varchar(64) NOT NULL, "created_at" timestamp DEFAULT now(), "accepted_at" timestamp, CONSTRAINT "org_connections_token_unique" UNIQUE("token") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "organization_api_keys" ( "id" serial PRIMARY KEY NOT NULL, "organization_id" integer NOT NULL, "key_hash" varchar(64) NOT NULL, "key_prefix" varchar(16) NOT NULL, "label" varchar(100) DEFAULT 'Default' NOT NULL, "created_by" integer NOT NULL, "created_at" timestamp DEFAULT now(), "last_used_at" timestamp, "is_active" boolean DEFAULT true NOT NULL, CONSTRAINT "organization_api_keys_key_hash_key" UNIQUE("key_hash") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "organization_billing" ( "organization_id" integer PRIMARY KEY NOT NULL, "price_per_user" numeric(10, 2) DEFAULT '0' NOT NULL, "balance" numeric(10, 2) DEFAULT '0' NOT NULL, "currency" varchar(10) DEFAULT 'RUB' NOT NULL, "next_billing_date" date, "blocked_at" timestamp, "updated_at" timestamp DEFAULT now() ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "organizations" ( "id" serial PRIMARY KEY NOT NULL, "name" varchar(100) NOT NULL, "slug" varchar(50) NOT NULL, "display_name" varchar(200) NOT NULL, "logo_url" varchar(500), "theme_color" varchar(7) DEFAULT '#1976d2', "created_at" timestamp DEFAULT now(), "updated_at" timestamp DEFAULT now(), "is_active" boolean DEFAULT true, "billing_blocked" boolean DEFAULT false, CONSTRAINT "organizations_name_unique" UNIQUE("name"), CONSTRAINT "organizations_slug_unique" UNIQUE("slug") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "poll_votes" ( "id" serial PRIMARY KEY NOT NULL, "poll_id" integer NOT NULL, "user_id" integer NOT NULL, "option_indexes" integer[] DEFAULT '{}' NOT NULL, "created_at" timestamp DEFAULT now(), "updated_at" timestamp DEFAULT now(), CONSTRAINT "poll_votes_poll_user_key" UNIQUE("poll_id","user_id") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "polls" ( "id" serial PRIMARY KEY NOT NULL, "task_message_id" integer, "conv_message_id" integer, "organization_id" integer NOT NULL, "question" text NOT NULL, "options" jsonb DEFAULT '[]'::jsonb NOT NULL, "is_multiple" boolean DEFAULT false, "is_closed" boolean DEFAULT false, "created_by" integer NOT NULL, "created_at" timestamp DEFAULT now() ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "rag_embeddings" ( "id" serial PRIMARY KEY NOT NULL, "organization_id" integer NOT NULL, "entity_type" varchar(20) NOT NULL, "entity_id" integer NOT NULL, "content" text NOT NULL, "embedding" vector(1536), "metadata" jsonb DEFAULT '{}'::jsonb, "updated_at" timestamp DEFAULT now(), CONSTRAINT "rag_embeddings_org_entity_type_id_key" UNIQUE("organization_id","entity_type","entity_id") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "regular_table_rows" ( "id" serial PRIMARY KEY NOT NULL, "task_id" integer NOT NULL, "tab_id" integer NOT NULL, "position" integer DEFAULT 0 NOT NULL, "data" jsonb DEFAULT '{}'::jsonb NOT NULL, "created_by" integer NOT NULL, "created_at" timestamp DEFAULT now(), "updated_by" integer, "updated_at" timestamp DEFAULT now() ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "role_members" ( "id" serial PRIMARY KEY NOT NULL, "role_id" integer NOT NULL, "user_id" integer NOT NULL, "created_at" timestamp DEFAULT now(), CONSTRAINT "role_members_role_user_key" UNIQUE("role_id","user_id") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "roles" ( "id" serial PRIMARY KEY NOT NULL, "organization_id" integer NOT NULL, "name" varchar(100) NOT NULL, "description" text, "parent_id" integer, "created_at" timestamp DEFAULT now() ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "status_transitions" ( "id" serial PRIMARY KEY NOT NULL, "form_id" integer NOT NULL, "from_status_id" integer NOT NULL, "to_status_id" integer NOT NULL, "reject_to_status_id" integer, "action_type" varchar(20) DEFAULT 'approve' NOT NULL, "action_name" varchar(100), "conditions" jsonb, "required_role" varchar(20), "assignee_user_id" integer, "assignee_conditions" jsonb, "approve_button_text" varchar(50) DEFAULT 'Одобрить', "approve_button_color" varchar(7) DEFAULT '#22c55e', "reject_button_text" varchar(50) DEFAULT 'Отклонить', "reject_button_color" varchar(7) DEFAULT '#ef4444', "created_at" timestamp DEFAULT now() ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "super_admins" ( "id" serial PRIMARY KEY NOT NULL, "email" varchar(255) NOT NULL, "password_hash" varchar(255) NOT NULL, "name" varchar(200) NOT NULL, "created_at" timestamp DEFAULT now(), "last_login" timestamp, CONSTRAINT "super_admins_email_key" UNIQUE("email") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "system_audit_log" ( "id" serial PRIMARY KEY NOT NULL, "action" varchar(100) NOT NULL, "user_id" integer, "organization_id" integer, "task_id" integer, "details" jsonb, "ip" varchar(45), "user_agent" text, "created_at" timestamp DEFAULT now() ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "task_assignees" ( "id" serial PRIMARY KEY NOT NULL, "task_id" integer NOT NULL, "user_id" integer NOT NULL, "organization_id" integer NOT NULL, "created_at" timestamp DEFAULT now(), CONSTRAINT "task_assignees_task_user_key" UNIQUE("task_id","user_id") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "task_audit_log" ( "id" serial PRIMARY KEY NOT NULL, "task_id" integer NOT NULL, "organization_id" integer NOT NULL, "action" varchar(50) NOT NULL, "field_id" integer, "field_name" text, "old_value" jsonb, "new_value" jsonb, "changed_by" integer, "changed_by_name" text, "metadata" jsonb, "created_at" timestamp DEFAULT now() ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "task_field_values" ( "id" serial PRIMARY KEY NOT NULL, "task_id" integer NOT NULL, "field_id" integer NOT NULL, "form_id" integer NOT NULL, "value" jsonb, "created_at" timestamp DEFAULT now(), "updated_at" timestamp DEFAULT now(), CONSTRAINT "task_field_values_task_id_field_id_unique" UNIQUE("task_id","field_id") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "task_messages" ( "id" serial PRIMARY KEY NOT NULL, "task_id" integer NOT NULL, "form_id" integer NOT NULL, "author_id" integer, "bot_id" integer, "reply_to_message_id" integer, "message" text DEFAULT '' NOT NULL, "message_type" varchar(20) DEFAULT 'comment' NOT NULL, "mentioned_user_ids" jsonb, "bot_buttons" jsonb, "attachments" jsonb, "created_at" timestamp DEFAULT now() ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "task_relations" ( "id" serial PRIMARY KEY NOT NULL, "parent_task_id" integer NOT NULL, "child_task_id" integer NOT NULL, "field_id" integer, "organization_id" integer NOT NULL, "created_at" timestamp DEFAULT now(), CONSTRAINT "task_relations_parent_task_id_child_task_id_field_id_key" UNIQUE("parent_task_id","child_task_id","field_id") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "task_reminders" ( "id" serial PRIMARY KEY NOT NULL, "task_id" integer NOT NULL, "organization_id" integer NOT NULL, "created_by_user_id" integer NOT NULL, "remind_at" timestamp NOT NULL, "note" text, "recipients" jsonb DEFAULT '[]'::jsonb NOT NULL, "is_sent" boolean DEFAULT false, "created_at" timestamp DEFAULT now() ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "task_roles" ( "id" serial PRIMARY KEY NOT NULL, "task_id" integer NOT NULL, "role_id" integer NOT NULL, "organization_id" integer NOT NULL, "created_at" timestamp DEFAULT now(), CONSTRAINT "task_roles_task_role_key" UNIQUE("task_id","role_id") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "task_tab_values" ( "id" serial PRIMARY KEY NOT NULL, "task_id" integer NOT NULL, "tab_id" integer NOT NULL, "values" jsonb DEFAULT '{}'::jsonb NOT NULL, "created_at" timestamp DEFAULT now(), "updated_at" timestamp DEFAULT now(), CONSTRAINT "task_tab_values_task_id_tab_id_key" UNIQUE("task_id","tab_id") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "task_table_cell_history" ( "id" serial PRIMARY KEY NOT NULL, "cell_id" integer NOT NULL, "table_id" integer NOT NULL, "row_index" integer NOT NULL, "col_index" integer NOT NULL, "prev_value" text, "prev_formula" text, "new_value" text, "new_formula" text, "changed_by" integer, "changed_at" timestamp DEFAULT now() ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "task_table_cells" ( "id" serial PRIMARY KEY NOT NULL, "table_id" integer NOT NULL, "row_index" integer NOT NULL, "col_index" integer NOT NULL, "value" text, "formula" text, "updated_by" integer, "updated_at" timestamp DEFAULT now(), CONSTRAINT "task_table_cells_table_id_row_index_col_index_key" UNIQUE("table_id","row_index","col_index") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "task_tables" ( "id" serial PRIMARY KEY NOT NULL, "task_id" integer NOT NULL, "tab_id" integer, "name" varchar(200) NOT NULL, "columns" jsonb, "created_by" integer, "created_at" timestamp DEFAULT now(), "updated_at" timestamp DEFAULT now() ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "task_user_access" ( "id" serial PRIMARY KEY NOT NULL, "task_id" integer NOT NULL, "user_id" integer NOT NULL, "organization_id" integer NOT NULL, "granted_via" varchar(20) DEFAULT 'direct' NOT NULL, "role_id" integer, "first_interaction_at" timestamp DEFAULT now(), "revoked_at" timestamp, CONSTRAINT "task_user_access_task_user_key" UNIQUE("task_id","user_id") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "tasks" ( "id" serial PRIMARY KEY NOT NULL, "organization_id" integer, "form_id" integer NOT NULL, "title" varchar(500) NOT NULL, "description" text, "current_status_id" integer NOT NULL, "assigned_to" integer, "created_by" integer NOT NULL, "created_at" timestamp DEFAULT now(), "updated_at" timestamp DEFAULT now(), "completed_at" timestamp, "is_completed" boolean DEFAULT false, "due_date" timestamp, "parent_task_id" integer, "depth" integer DEFAULT 0, "position" integer DEFAULT 0, CONSTRAINT "tasks_id_form_id_unique" UNIQUE("id","form_id") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "user_custom_fields" ( "id" serial PRIMARY KEY NOT NULL, "organization_id" integer NOT NULL, "name" varchar(200) NOT NULL, "code" varchar(100) NOT NULL, "type" varchar(50) NOT NULL, "options" jsonb, "is_required" boolean DEFAULT false, "position" integer DEFAULT 0, "created_at" timestamp DEFAULT now(), "updated_at" timestamp DEFAULT now() ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "user_custom_values" ( "id" serial PRIMARY KEY NOT NULL, "user_id" integer NOT NULL, "field_id" integer NOT NULL, "value" text, "created_at" timestamp DEFAULT now(), "updated_at" timestamp DEFAULT now() ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "user_notifications" ( "id" serial PRIMARY KEY NOT NULL, "user_id" integer NOT NULL, "organization_id" integer NOT NULL, "type" varchar(50) NOT NULL, "title" varchar(200) NOT NULL, "message" text NOT NULL, "task_id" integer, "message_id" integer, "is_read" boolean DEFAULT false, "created_at" timestamp DEFAULT now() ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "user_presence" ( "id" serial PRIMARY KEY NOT NULL, "user_id" integer NOT NULL, "organization_id" integer NOT NULL, "is_online" boolean DEFAULT false, "last_seen_at" timestamp DEFAULT now(), "active_devices" integer DEFAULT 0, CONSTRAINT "user_presence_user_id_key" UNIQUE("user_id") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "user_sessions" ( "id" serial PRIMARY KEY NOT NULL, "user_id" integer NOT NULL, "refresh_token" varchar(500) NOT NULL, "expires_at" timestamp NOT NULL, "created_at" timestamp DEFAULT now(), "ip_address" varchar(45), "user_agent" text, CONSTRAINT "user_sessions_refresh_token_unique" UNIQUE("refresh_token") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "users" ( "id" serial PRIMARY KEY NOT NULL, "organization_id" integer NOT NULL, "email" varchar(255) NOT NULL, "password_hash" varchar(255) NOT NULL, "first_name" varchar(100) NOT NULL, "last_name" varchar(100) NOT NULL, "position" varchar(200), "role" varchar(20) DEFAULT 'user' NOT NULL, "is_active" boolean DEFAULT true, "email_verified" boolean DEFAULT false, "verification_token" varchar(255), "reset_password_token" varchar(255), "reset_password_expires" timestamp, "last_login" timestamp, "created_at" timestamp DEFAULT now(), "updated_at" timestamp DEFAULT now() ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "web_push_subscriptions" ( "id" serial PRIMARY KEY NOT NULL, "user_id" integer NOT NULL, "organization_id" integer NOT NULL, "endpoint" text NOT NULL, "subscription" text NOT NULL, "created_at" timestamp DEFAULT now(), CONSTRAINT "web_push_subscriptions_endpoint_key" UNIQUE("endpoint") ); --> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'automations_organization_id_organizations_id_fk') THEN ALTER TABLE "automations" ADD CONSTRAINT "automations_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'automations_created_by_users_id_fk') THEN ALTER TABLE "automations" ADD CONSTRAINT "automations_created_by_users_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'billing_transactions_organization_id_organizations_id_fk') THEN ALTER TABLE "billing_transactions" ADD CONSTRAINT "billing_transactions_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'bookmark_folders_organization_id_organizations_id_fk') THEN ALTER TABLE "bookmark_folders" ADD CONSTRAINT "bookmark_folders_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'bookmark_folders_user_id_users_id_fk') THEN ALTER TABLE "bookmark_folders" ADD CONSTRAINT "bookmark_folders_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'bookmark_folders_created_by_users_id_fk') THEN ALTER TABLE "bookmark_folders" ADD CONSTRAINT "bookmark_folders_created_by_users_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'bookmarks_organization_id_organizations_id_fk') THEN ALTER TABLE "bookmarks" ADD CONSTRAINT "bookmarks_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'bookmarks_user_id_users_id_fk') THEN ALTER TABLE "bookmarks" ADD CONSTRAINT "bookmarks_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'bookmarks_folder_id_bookmark_folders_id_fk') THEN ALTER TABLE "bookmarks" ADD CONSTRAINT "bookmarks_folder_id_bookmark_folders_id_fk" FOREIGN KEY ("folder_id") REFERENCES "public"."bookmark_folders"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'bookmarks_form_id_forms_id_fk') THEN ALTER TABLE "bookmarks" ADD CONSTRAINT "bookmarks_form_id_forms_id_fk" FOREIGN KEY ("form_id") REFERENCES "public"."forms"("id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'bookmarks_created_by_users_id_fk') THEN ALTER TABLE "bookmarks" ADD CONSTRAINT "bookmarks_created_by_users_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'bot_sessions_bot_id_bots_id_fk') THEN ALTER TABLE "bot_sessions" ADD CONSTRAINT "bot_sessions_bot_id_bots_id_fk" FOREIGN KEY ("bot_id") REFERENCES "public"."bots"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'bot_subscriptions_bot_id_bots_id_fk') THEN ALTER TABLE "bot_subscriptions" ADD CONSTRAINT "bot_subscriptions_bot_id_bots_id_fk" FOREIGN KEY ("bot_id") REFERENCES "public"."bots"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'bot_subscriptions_organization_id_organizations_id_fk') THEN ALTER TABLE "bot_subscriptions" ADD CONSTRAINT "bot_subscriptions_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'bot_subscriptions_form_id_forms_id_fk') THEN ALTER TABLE "bot_subscriptions" ADD CONSTRAINT "bot_subscriptions_form_id_forms_id_fk" FOREIGN KEY ("form_id") REFERENCES "public"."forms"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'bot_subscriptions_status_id_form_statuses_id_fk') THEN ALTER TABLE "bot_subscriptions" ADD CONSTRAINT "bot_subscriptions_status_id_form_statuses_id_fk" FOREIGN KEY ("status_id") REFERENCES "public"."form_statuses"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'bot_subscriptions_transition_id_status_transitions_id_fk') THEN ALTER TABLE "bot_subscriptions" ADD CONSTRAINT "bot_subscriptions_transition_id_status_transitions_id_fk" FOREIGN KEY ("transition_id") REFERENCES "public"."status_transitions"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'bots_organization_id_organizations_id_fk') THEN ALTER TABLE "bots" ADD CONSTRAINT "bots_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'bots_created_by_users_id_fk') THEN ALTER TABLE "bots" ADD CONSTRAINT "bots_created_by_users_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'conversation_members_conversation_id_conversations_id_fk') THEN ALTER TABLE "conversation_members" ADD CONSTRAINT "conversation_members_conversation_id_conversations_id_fk" FOREIGN KEY ("conversation_id") REFERENCES "public"."conversations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'conversation_members_user_id_users_id_fk') THEN ALTER TABLE "conversation_members" ADD CONSTRAINT "conversation_members_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'conversation_messages_conversation_id_conversations_id_fk') THEN ALTER TABLE "conversation_messages" ADD CONSTRAINT "conversation_messages_conversation_id_conversations_id_fk" FOREIGN KEY ("conversation_id") REFERENCES "public"."conversations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'conversation_messages_author_id_users_id_fk') THEN ALTER TABLE "conversation_messages" ADD CONSTRAINT "conversation_messages_author_id_users_id_fk" FOREIGN KEY ("author_id") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'conversations_organization_id_organizations_id_fk') THEN ALTER TABLE "conversations" ADD CONSTRAINT "conversations_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'conversations_created_by_users_id_fk') THEN ALTER TABLE "conversations" ADD CONSTRAINT "conversations_created_by_users_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'custom_pages_organization_id_organizations_id_fk') THEN ALTER TABLE "custom_pages" ADD CONSTRAINT "custom_pages_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'custom_pages_created_by_users_id_fk') THEN ALTER TABLE "custom_pages" ADD CONSTRAINT "custom_pages_created_by_users_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'custom_tab_modules_organization_id_organizations_id_fk') THEN ALTER TABLE "custom_tab_modules" ADD CONSTRAINT "custom_tab_modules_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'custom_tab_modules_created_by_users_id_fk') THEN ALTER TABLE "custom_tab_modules" ADD CONSTRAINT "custom_tab_modules_created_by_users_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'data_table_permissions_table_id_data_tables_id_fk') THEN ALTER TABLE "data_table_permissions" ADD CONSTRAINT "data_table_permissions_table_id_data_tables_id_fk" FOREIGN KEY ("table_id") REFERENCES "public"."data_tables"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'data_table_permissions_user_id_users_id_fk') THEN ALTER TABLE "data_table_permissions" ADD CONSTRAINT "data_table_permissions_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'data_table_rows_table_id_data_tables_id_fk') THEN ALTER TABLE "data_table_rows" ADD CONSTRAINT "data_table_rows_table_id_data_tables_id_fk" FOREIGN KEY ("table_id") REFERENCES "public"."data_tables"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'data_tables_organization_id_organizations_id_fk') THEN ALTER TABLE "data_tables" ADD CONSTRAINT "data_tables_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'data_tables_created_by_users_id_fk') THEN ALTER TABLE "data_tables" ADD CONSTRAINT "data_tables_created_by_users_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'device_tokens_user_id_users_id_fk') THEN ALTER TABLE "device_tokens" ADD CONSTRAINT "device_tokens_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'device_tokens_organization_id_organizations_id_fk') THEN ALTER TABLE "device_tokens" ADD CONSTRAINT "device_tokens_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'external_services_organization_id_organizations_id_fk') THEN ALTER TABLE "external_services" ADD CONSTRAINT "external_services_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'field_history_task_id_tasks_id_fk') THEN ALTER TABLE "field_history" ADD CONSTRAINT "field_history_task_id_tasks_id_fk" FOREIGN KEY ("task_id") REFERENCES "public"."tasks"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'field_history_field_id_form_fields_id_fk') THEN ALTER TABLE "field_history" ADD CONSTRAINT "field_history_field_id_form_fields_id_fk" FOREIGN KEY ("field_id") REFERENCES "public"."form_fields"("id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'field_history_form_id_forms_id_fk') THEN ALTER TABLE "field_history" ADD CONSTRAINT "field_history_form_id_forms_id_fk" FOREIGN KEY ("form_id") REFERENCES "public"."forms"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'field_history_changed_by_users_id_fk') THEN ALTER TABLE "field_history" ADD CONSTRAINT "field_history_changed_by_users_id_fk" FOREIGN KEY ("changed_by") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'fk_field_history_task_same_form') THEN ALTER TABLE "field_history" ADD CONSTRAINT "fk_field_history_task_same_form" FOREIGN KEY ("task_id","form_id") REFERENCES "public"."tasks"("id","form_id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'fk_field_history_field_same_form') THEN ALTER TABLE "field_history" ADD CONSTRAINT "fk_field_history_field_same_form" FOREIGN KEY ("field_id","form_id") REFERENCES "public"."form_fields"("id","form_id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'form_fields_form_id_forms_id_fk') THEN ALTER TABLE "form_fields" ADD CONSTRAINT "form_fields_form_id_forms_id_fk" FOREIGN KEY ("form_id") REFERENCES "public"."forms"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'form_fields_tab_id_form_tabs_id_fk') THEN ALTER TABLE "form_fields" ADD CONSTRAINT "form_fields_tab_id_form_tabs_id_fk" FOREIGN KEY ("tab_id") REFERENCES "public"."form_tabs"("id") ON DELETE set null ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'form_fields_linked_form_id_forms_id_fk') THEN ALTER TABLE "form_fields" ADD CONSTRAINT "form_fields_linked_form_id_forms_id_fk" FOREIGN KEY ("linked_form_id") REFERENCES "public"."forms"("id") ON DELETE set null ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'form_fields_button_form_id_forms_id_fk') THEN ALTER TABLE "form_fields" ADD CONSTRAINT "form_fields_button_form_id_forms_id_fk" FOREIGN KEY ("button_form_id") REFERENCES "public"."forms"("id") ON DELETE set null ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'form_statuses_form_id_forms_id_fk') THEN ALTER TABLE "form_statuses" ADD CONSTRAINT "form_statuses_form_id_forms_id_fk" FOREIGN KEY ("form_id") REFERENCES "public"."forms"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'form_tabs_form_id_forms_id_fk') THEN ALTER TABLE "form_tabs" ADD CONSTRAINT "form_tabs_form_id_forms_id_fk" FOREIGN KEY ("form_id") REFERENCES "public"."forms"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'forms_organization_id_organizations_id_fk') THEN ALTER TABLE "forms" ADD CONSTRAINT "forms_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'forms_created_by_users_id_fk') THEN ALTER TABLE "forms" ADD CONSTRAINT "forms_created_by_users_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'global_fields_organization_id_organizations_id_fk') THEN ALTER TABLE "global_fields" ADD CONSTRAINT "global_fields_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'global_fields_created_by_users_id_fk') THEN ALTER TABLE "global_fields" ADD CONSTRAINT "global_fields_created_by_users_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'invitations_organization_id_organizations_id_fk') THEN ALTER TABLE "invitations" ADD CONSTRAINT "invitations_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'invitations_created_by_users_id_fk') THEN ALTER TABLE "invitations" ADD CONSTRAINT "invitations_created_by_users_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'message_reactions_task_message_id_task_messages_id_fk') THEN ALTER TABLE "message_reactions" ADD CONSTRAINT "message_reactions_task_message_id_task_messages_id_fk" FOREIGN KEY ("task_message_id") REFERENCES "public"."task_messages"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'message_reactions_conv_message_id_conversation_messages_id_fk') THEN ALTER TABLE "message_reactions" ADD CONSTRAINT "message_reactions_conv_message_id_conversation_messages_id_fk" FOREIGN KEY ("conv_message_id") REFERENCES "public"."conversation_messages"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'message_reactions_user_id_users_id_fk') THEN ALTER TABLE "message_reactions" ADD CONSTRAINT "message_reactions_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'message_reactions_organization_id_organizations_id_fk') THEN ALTER TABLE "message_reactions" ADD CONSTRAINT "message_reactions_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'message_reads_message_id_task_messages_id_fk') THEN ALTER TABLE "message_reads" ADD CONSTRAINT "message_reads_message_id_task_messages_id_fk" FOREIGN KEY ("message_id") REFERENCES "public"."task_messages"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'message_reads_user_id_users_id_fk') THEN ALTER TABLE "message_reads" ADD CONSTRAINT "message_reads_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'message_reads_organization_id_organizations_id_fk') THEN ALTER TABLE "message_reads" ADD CONSTRAINT "message_reads_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'notification_subscriptions_user_id_users_id_fk') THEN ALTER TABLE "notification_subscriptions" ADD CONSTRAINT "notification_subscriptions_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'notification_subscriptions_organization_id_organizations_id_fk') THEN ALTER TABLE "notification_subscriptions" ADD CONSTRAINT "notification_subscriptions_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'org_connections_initiator_org_id_organizations_id_fk') THEN ALTER TABLE "org_connections" ADD CONSTRAINT "org_connections_initiator_org_id_organizations_id_fk" FOREIGN KEY ("initiator_org_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'org_connections_partner_org_id_organizations_id_fk') THEN ALTER TABLE "org_connections" ADD CONSTRAINT "org_connections_partner_org_id_organizations_id_fk" FOREIGN KEY ("partner_org_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'organization_api_keys_organization_id_organizations_id_fk') THEN ALTER TABLE "organization_api_keys" ADD CONSTRAINT "organization_api_keys_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'organization_api_keys_created_by_users_id_fk') THEN ALTER TABLE "organization_api_keys" ADD CONSTRAINT "organization_api_keys_created_by_users_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'organization_billing_organization_id_organizations_id_fk') THEN ALTER TABLE "organization_billing" ADD CONSTRAINT "organization_billing_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'poll_votes_poll_id_polls_id_fk') THEN ALTER TABLE "poll_votes" ADD CONSTRAINT "poll_votes_poll_id_polls_id_fk" FOREIGN KEY ("poll_id") REFERENCES "public"."polls"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'poll_votes_user_id_users_id_fk') THEN ALTER TABLE "poll_votes" ADD CONSTRAINT "poll_votes_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'polls_task_message_id_task_messages_id_fk') THEN ALTER TABLE "polls" ADD CONSTRAINT "polls_task_message_id_task_messages_id_fk" FOREIGN KEY ("task_message_id") REFERENCES "public"."task_messages"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'polls_conv_message_id_conversation_messages_id_fk') THEN ALTER TABLE "polls" ADD CONSTRAINT "polls_conv_message_id_conversation_messages_id_fk" FOREIGN KEY ("conv_message_id") REFERENCES "public"."conversation_messages"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'polls_organization_id_organizations_id_fk') THEN ALTER TABLE "polls" ADD CONSTRAINT "polls_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'polls_created_by_users_id_fk') THEN ALTER TABLE "polls" ADD CONSTRAINT "polls_created_by_users_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'rag_embeddings_organization_id_organizations_id_fk') THEN ALTER TABLE "rag_embeddings" ADD CONSTRAINT "rag_embeddings_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'regular_table_rows_task_id_tasks_id_fk') THEN ALTER TABLE "regular_table_rows" ADD CONSTRAINT "regular_table_rows_task_id_tasks_id_fk" FOREIGN KEY ("task_id") REFERENCES "public"."tasks"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'regular_table_rows_tab_id_form_tabs_id_fk') THEN ALTER TABLE "regular_table_rows" ADD CONSTRAINT "regular_table_rows_tab_id_form_tabs_id_fk" FOREIGN KEY ("tab_id") REFERENCES "public"."form_tabs"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'regular_table_rows_created_by_users_id_fk') THEN ALTER TABLE "regular_table_rows" ADD CONSTRAINT "regular_table_rows_created_by_users_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'regular_table_rows_updated_by_users_id_fk') THEN ALTER TABLE "regular_table_rows" ADD CONSTRAINT "regular_table_rows_updated_by_users_id_fk" FOREIGN KEY ("updated_by") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'role_members_role_id_roles_id_fk') THEN ALTER TABLE "role_members" ADD CONSTRAINT "role_members_role_id_roles_id_fk" FOREIGN KEY ("role_id") REFERENCES "public"."roles"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'role_members_user_id_users_id_fk') THEN ALTER TABLE "role_members" ADD CONSTRAINT "role_members_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'roles_organization_id_organizations_id_fk') THEN ALTER TABLE "roles" ADD CONSTRAINT "roles_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'status_transitions_form_id_forms_id_fk') THEN ALTER TABLE "status_transitions" ADD CONSTRAINT "status_transitions_form_id_forms_id_fk" FOREIGN KEY ("form_id") REFERENCES "public"."forms"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'status_transitions_from_status_id_form_statuses_id_fk') THEN ALTER TABLE "status_transitions" ADD CONSTRAINT "status_transitions_from_status_id_form_statuses_id_fk" FOREIGN KEY ("from_status_id") REFERENCES "public"."form_statuses"("id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'status_transitions_to_status_id_form_statuses_id_fk') THEN ALTER TABLE "status_transitions" ADD CONSTRAINT "status_transitions_to_status_id_form_statuses_id_fk" FOREIGN KEY ("to_status_id") REFERENCES "public"."form_statuses"("id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'status_transitions_reject_to_status_id_form_statuses_id_fk') THEN ALTER TABLE "status_transitions" ADD CONSTRAINT "status_transitions_reject_to_status_id_form_statuses_id_fk" FOREIGN KEY ("reject_to_status_id") REFERENCES "public"."form_statuses"("id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'status_transitions_assignee_user_id_users_id_fk') THEN ALTER TABLE "status_transitions" ADD CONSTRAINT "status_transitions_assignee_user_id_users_id_fk" FOREIGN KEY ("assignee_user_id") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'fk_transition_from_status_same_form') THEN ALTER TABLE "status_transitions" ADD CONSTRAINT "fk_transition_from_status_same_form" FOREIGN KEY ("from_status_id","form_id") REFERENCES "public"."form_statuses"("id","form_id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'fk_transition_to_status_same_form') THEN ALTER TABLE "status_transitions" ADD CONSTRAINT "fk_transition_to_status_same_form" FOREIGN KEY ("to_status_id","form_id") REFERENCES "public"."form_statuses"("id","form_id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'system_audit_log_user_id_users_id_fk') THEN ALTER TABLE "system_audit_log" ADD CONSTRAINT "system_audit_log_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE set null ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'system_audit_log_organization_id_organizations_id_fk') THEN ALTER TABLE "system_audit_log" ADD CONSTRAINT "system_audit_log_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE set null ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_assignees_task_id_tasks_id_fk') THEN ALTER TABLE "task_assignees" ADD CONSTRAINT "task_assignees_task_id_tasks_id_fk" FOREIGN KEY ("task_id") REFERENCES "public"."tasks"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_assignees_user_id_users_id_fk') THEN ALTER TABLE "task_assignees" ADD CONSTRAINT "task_assignees_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_assignees_organization_id_organizations_id_fk') THEN ALTER TABLE "task_assignees" ADD CONSTRAINT "task_assignees_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_audit_log_task_id_tasks_id_fk') THEN ALTER TABLE "task_audit_log" ADD CONSTRAINT "task_audit_log_task_id_tasks_id_fk" FOREIGN KEY ("task_id") REFERENCES "public"."tasks"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_audit_log_organization_id_organizations_id_fk') THEN ALTER TABLE "task_audit_log" ADD CONSTRAINT "task_audit_log_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_audit_log_changed_by_users_id_fk') THEN ALTER TABLE "task_audit_log" ADD CONSTRAINT "task_audit_log_changed_by_users_id_fk" FOREIGN KEY ("changed_by") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_field_values_task_id_tasks_id_fk') THEN ALTER TABLE "task_field_values" ADD CONSTRAINT "task_field_values_task_id_tasks_id_fk" FOREIGN KEY ("task_id") REFERENCES "public"."tasks"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_field_values_field_id_form_fields_id_fk') THEN ALTER TABLE "task_field_values" ADD CONSTRAINT "task_field_values_field_id_form_fields_id_fk" FOREIGN KEY ("field_id") REFERENCES "public"."form_fields"("id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_field_values_form_id_forms_id_fk') THEN ALTER TABLE "task_field_values" ADD CONSTRAINT "task_field_values_form_id_forms_id_fk" FOREIGN KEY ("form_id") REFERENCES "public"."forms"("id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'fk_task_field_value_task_same_form') THEN ALTER TABLE "task_field_values" ADD CONSTRAINT "fk_task_field_value_task_same_form" FOREIGN KEY ("task_id","form_id") REFERENCES "public"."tasks"("id","form_id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'fk_task_field_value_field_same_form') THEN ALTER TABLE "task_field_values" ADD CONSTRAINT "fk_task_field_value_field_same_form" FOREIGN KEY ("field_id","form_id") REFERENCES "public"."form_fields"("id","form_id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_messages_task_id_tasks_id_fk') THEN ALTER TABLE "task_messages" ADD CONSTRAINT "task_messages_task_id_tasks_id_fk" FOREIGN KEY ("task_id") REFERENCES "public"."tasks"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_messages_form_id_forms_id_fk') THEN ALTER TABLE "task_messages" ADD CONSTRAINT "task_messages_form_id_forms_id_fk" FOREIGN KEY ("form_id") REFERENCES "public"."forms"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_messages_author_id_users_id_fk') THEN ALTER TABLE "task_messages" ADD CONSTRAINT "task_messages_author_id_users_id_fk" FOREIGN KEY ("author_id") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_messages_reply_to_message_id_task_messages_id_fk') THEN ALTER TABLE "task_messages" ADD CONSTRAINT "task_messages_reply_to_message_id_task_messages_id_fk" FOREIGN KEY ("reply_to_message_id") REFERENCES "public"."task_messages"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'fk_task_message_task_same_form') THEN ALTER TABLE "task_messages" ADD CONSTRAINT "fk_task_message_task_same_form" FOREIGN KEY ("task_id","form_id") REFERENCES "public"."tasks"("id","form_id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_relations_parent_task_id_tasks_id_fk') THEN ALTER TABLE "task_relations" ADD CONSTRAINT "task_relations_parent_task_id_tasks_id_fk" FOREIGN KEY ("parent_task_id") REFERENCES "public"."tasks"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_relations_child_task_id_tasks_id_fk') THEN ALTER TABLE "task_relations" ADD CONSTRAINT "task_relations_child_task_id_tasks_id_fk" FOREIGN KEY ("child_task_id") REFERENCES "public"."tasks"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_relations_field_id_form_fields_id_fk') THEN ALTER TABLE "task_relations" ADD CONSTRAINT "task_relations_field_id_form_fields_id_fk" FOREIGN KEY ("field_id") REFERENCES "public"."form_fields"("id") ON DELETE set null ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_relations_organization_id_organizations_id_fk') THEN ALTER TABLE "task_relations" ADD CONSTRAINT "task_relations_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_reminders_task_id_tasks_id_fk') THEN ALTER TABLE "task_reminders" ADD CONSTRAINT "task_reminders_task_id_tasks_id_fk" FOREIGN KEY ("task_id") REFERENCES "public"."tasks"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_reminders_organization_id_organizations_id_fk') THEN ALTER TABLE "task_reminders" ADD CONSTRAINT "task_reminders_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_reminders_created_by_user_id_users_id_fk') THEN ALTER TABLE "task_reminders" ADD CONSTRAINT "task_reminders_created_by_user_id_users_id_fk" FOREIGN KEY ("created_by_user_id") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_roles_task_id_tasks_id_fk') THEN ALTER TABLE "task_roles" ADD CONSTRAINT "task_roles_task_id_tasks_id_fk" FOREIGN KEY ("task_id") REFERENCES "public"."tasks"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_roles_role_id_roles_id_fk') THEN ALTER TABLE "task_roles" ADD CONSTRAINT "task_roles_role_id_roles_id_fk" FOREIGN KEY ("role_id") REFERENCES "public"."roles"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_roles_organization_id_organizations_id_fk') THEN ALTER TABLE "task_roles" ADD CONSTRAINT "task_roles_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_tab_values_task_id_tasks_id_fk') THEN ALTER TABLE "task_tab_values" ADD CONSTRAINT "task_tab_values_task_id_tasks_id_fk" FOREIGN KEY ("task_id") REFERENCES "public"."tasks"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_tab_values_tab_id_form_tabs_id_fk') THEN ALTER TABLE "task_tab_values" ADD CONSTRAINT "task_tab_values_tab_id_form_tabs_id_fk" FOREIGN KEY ("tab_id") REFERENCES "public"."form_tabs"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_table_cell_history_cell_id_task_table_cells_id_fk') THEN ALTER TABLE "task_table_cell_history" ADD CONSTRAINT "task_table_cell_history_cell_id_task_table_cells_id_fk" FOREIGN KEY ("cell_id") REFERENCES "public"."task_table_cells"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_table_cell_history_table_id_task_tables_id_fk') THEN ALTER TABLE "task_table_cell_history" ADD CONSTRAINT "task_table_cell_history_table_id_task_tables_id_fk" FOREIGN KEY ("table_id") REFERENCES "public"."task_tables"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_table_cell_history_changed_by_users_id_fk') THEN ALTER TABLE "task_table_cell_history" ADD CONSTRAINT "task_table_cell_history_changed_by_users_id_fk" FOREIGN KEY ("changed_by") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_table_cells_table_id_task_tables_id_fk') THEN ALTER TABLE "task_table_cells" ADD CONSTRAINT "task_table_cells_table_id_task_tables_id_fk" FOREIGN KEY ("table_id") REFERENCES "public"."task_tables"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_table_cells_updated_by_users_id_fk') THEN ALTER TABLE "task_table_cells" ADD CONSTRAINT "task_table_cells_updated_by_users_id_fk" FOREIGN KEY ("updated_by") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_tables_task_id_tasks_id_fk') THEN ALTER TABLE "task_tables" ADD CONSTRAINT "task_tables_task_id_tasks_id_fk" FOREIGN KEY ("task_id") REFERENCES "public"."tasks"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_tables_tab_id_form_tabs_id_fk') THEN ALTER TABLE "task_tables" ADD CONSTRAINT "task_tables_tab_id_form_tabs_id_fk" FOREIGN KEY ("tab_id") REFERENCES "public"."form_tabs"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_tables_created_by_users_id_fk') THEN ALTER TABLE "task_tables" ADD CONSTRAINT "task_tables_created_by_users_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_user_access_task_id_tasks_id_fk') THEN ALTER TABLE "task_user_access" ADD CONSTRAINT "task_user_access_task_id_tasks_id_fk" FOREIGN KEY ("task_id") REFERENCES "public"."tasks"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_user_access_user_id_users_id_fk') THEN ALTER TABLE "task_user_access" ADD CONSTRAINT "task_user_access_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'task_user_access_organization_id_organizations_id_fk') THEN ALTER TABLE "task_user_access" ADD CONSTRAINT "task_user_access_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'tasks_organization_id_organizations_id_fk') THEN ALTER TABLE "tasks" ADD CONSTRAINT "tasks_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'tasks_form_id_forms_id_fk') THEN ALTER TABLE "tasks" ADD CONSTRAINT "tasks_form_id_forms_id_fk" FOREIGN KEY ("form_id") REFERENCES "public"."forms"("id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'tasks_current_status_id_form_statuses_id_fk') THEN ALTER TABLE "tasks" ADD CONSTRAINT "tasks_current_status_id_form_statuses_id_fk" FOREIGN KEY ("current_status_id") REFERENCES "public"."form_statuses"("id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'tasks_assigned_to_users_id_fk') THEN ALTER TABLE "tasks" ADD CONSTRAINT "tasks_assigned_to_users_id_fk" FOREIGN KEY ("assigned_to") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'tasks_created_by_users_id_fk') THEN ALTER TABLE "tasks" ADD CONSTRAINT "tasks_created_by_users_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'fk_task_status_same_form') THEN ALTER TABLE "tasks" ADD CONSTRAINT "fk_task_status_same_form" FOREIGN KEY ("current_status_id","form_id") REFERENCES "public"."form_statuses"("id","form_id") ON DELETE no action ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'user_custom_fields_organization_id_organizations_id_fk') THEN ALTER TABLE "user_custom_fields" ADD CONSTRAINT "user_custom_fields_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'user_custom_values_user_id_users_id_fk') THEN ALTER TABLE "user_custom_values" ADD CONSTRAINT "user_custom_values_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'user_custom_values_field_id_user_custom_fields_id_fk') THEN ALTER TABLE "user_custom_values" ADD CONSTRAINT "user_custom_values_field_id_user_custom_fields_id_fk" FOREIGN KEY ("field_id") REFERENCES "public"."user_custom_fields"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'user_notifications_user_id_users_id_fk') THEN ALTER TABLE "user_notifications" ADD CONSTRAINT "user_notifications_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'user_notifications_organization_id_organizations_id_fk') THEN ALTER TABLE "user_notifications" ADD CONSTRAINT "user_notifications_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'user_notifications_task_id_tasks_id_fk') THEN ALTER TABLE "user_notifications" ADD CONSTRAINT "user_notifications_task_id_tasks_id_fk" FOREIGN KEY ("task_id") REFERENCES "public"."tasks"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'user_notifications_message_id_task_messages_id_fk') THEN ALTER TABLE "user_notifications" ADD CONSTRAINT "user_notifications_message_id_task_messages_id_fk" FOREIGN KEY ("message_id") REFERENCES "public"."task_messages"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'user_presence_user_id_users_id_fk') THEN ALTER TABLE "user_presence" ADD CONSTRAINT "user_presence_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'user_presence_organization_id_organizations_id_fk') THEN ALTER TABLE "user_presence" ADD CONSTRAINT "user_presence_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'user_sessions_user_id_users_id_fk') THEN ALTER TABLE "user_sessions" ADD CONSTRAINT "user_sessions_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'users_organization_id_organizations_id_fk') THEN ALTER TABLE "users" ADD CONSTRAINT "users_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'web_push_subscriptions_user_id_users_id_fk') THEN ALTER TABLE "web_push_subscriptions" ADD CONSTRAINT "web_push_subscriptions_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'web_push_subscriptions_organization_id_organizations_id_fk') THEN ALTER TABLE "web_push_subscriptions" ADD CONSTRAINT "web_push_subscriptions_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; END IF; END $$;--> statement-breakpoint CREATE INDEX IF NOT EXISTS "automations_org_idx" ON "automations" USING btree ("organization_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "conversation_members_conv_idx" ON "conversation_members" USING btree ("conversation_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "conversation_members_user_idx" ON "conversation_members" USING btree ("user_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "conv_messages_conv_created_idx" ON "conversation_messages" USING btree ("conversation_id","created_at");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "conversations_org_idx" ON "conversations" USING btree ("organization_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "custom_pages_org_idx" ON "custom_pages" USING btree ("organization_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "custom_tab_modules_org_idx" ON "custom_tab_modules" USING btree ("organization_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "device_tokens_user_idx" ON "device_tokens" USING btree ("user_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "device_tokens_token_idx" ON "device_tokens" USING btree ("token");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "device_tokens_org_idx" ON "device_tokens" USING btree ("organization_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "external_services_org_idx" ON "external_services" USING btree ("organization_id","is_active");--> statement-breakpoint CREATE UNIQUE INDEX IF NOT EXISTS "one_initial_status_per_form" ON "form_statuses" USING btree ("form_id") WHERE "form_statuses"."is_initial" = true;--> statement-breakpoint CREATE INDEX IF NOT EXISTS "global_fields_org_idx" ON "global_fields" USING btree ("organization_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "mr_task_msg_idx" ON "message_reactions" USING btree ("task_message_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "mr_conv_msg_idx" ON "message_reactions" USING btree ("conv_message_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "message_reads_user_org_idx" ON "message_reads" USING btree ("user_id","organization_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "message_reads_message_org_idx" ON "message_reads" USING btree ("message_id","organization_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "notification_subs_user_idx" ON "notification_subscriptions" USING btree ("user_id","organization_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "notification_subs_event_idx" ON "notification_subscriptions" USING btree ("event_type_code","is_active");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "org_connections_initiator_idx" ON "org_connections" USING btree ("initiator_org_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "org_connections_partner_idx" ON "org_connections" USING btree ("partner_org_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "org_connections_token_idx" ON "org_connections" USING btree ("token");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "api_keys_org_idx" ON "organization_api_keys" USING btree ("organization_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "api_keys_hash_idx" ON "organization_api_keys" USING btree ("key_hash");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "poll_votes_poll_idx" ON "poll_votes" USING btree ("poll_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "polls_org_idx" ON "polls" USING btree ("organization_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "rag_embeddings_org_type_idx" ON "rag_embeddings" USING btree ("organization_id","entity_type");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "regular_table_rows_task_tab_idx" ON "regular_table_rows" USING btree ("task_id","tab_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "role_members_role_idx" ON "role_members" USING btree ("role_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "role_members_user_idx" ON "role_members" USING btree ("user_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "roles_org_idx" ON "roles" USING btree ("organization_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "roles_parent_idx" ON "roles" USING btree ("parent_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "system_audit_log_action_created_idx" ON "system_audit_log" USING btree ("action","created_at" DESC NULLS LAST);--> statement-breakpoint CREATE INDEX IF NOT EXISTS "system_audit_log_org_created_idx" ON "system_audit_log" USING btree ("organization_id","created_at" DESC NULLS LAST);--> statement-breakpoint CREATE INDEX IF NOT EXISTS "task_assignees_task_idx" ON "task_assignees" USING btree ("task_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "task_assignees_user_idx" ON "task_assignees" USING btree ("user_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "task_assignees_org_idx" ON "task_assignees" USING btree ("organization_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "task_audit_log_task_created_idx" ON "task_audit_log" USING btree ("task_id","created_at" DESC NULLS LAST);--> statement-breakpoint CREATE INDEX IF NOT EXISTS "task_field_values_task_field_idx" ON "task_field_values" USING btree ("task_id","field_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "task_messages_task_created_idx" ON "task_messages" USING btree ("task_id","created_at" DESC NULLS LAST);--> statement-breakpoint CREATE INDEX IF NOT EXISTS "task_roles_task_idx" ON "task_roles" USING btree ("task_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "task_roles_role_idx" ON "task_roles" USING btree ("role_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "task_roles_org_idx" ON "task_roles" USING btree ("organization_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "task_tab_values_task_idx" ON "task_tab_values" USING btree ("task_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "task_tab_values_tab_idx" ON "task_tab_values" USING btree ("tab_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "task_user_access_task_idx" ON "task_user_access" USING btree ("task_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "task_user_access_user_idx" ON "task_user_access" USING btree ("user_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "task_user_access_org_idx" ON "task_user_access" USING btree ("organization_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "tasks_org_id_form_id_idx" ON "tasks" USING btree ("organization_id","form_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "tasks_org_id_status_idx" ON "tasks" USING btree ("organization_id","current_status_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "tasks_org_id_assigned_idx" ON "tasks" USING btree ("organization_id","assigned_to");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "user_notifications_idx" ON "user_notifications" USING btree ("user_id","organization_id","is_read","created_at");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "user_presence_user_idx" ON "user_presence" USING btree ("user_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "user_presence_online_idx" ON "user_presence" USING btree ("is_online");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "user_presence_org_idx" ON "user_presence" USING btree ("organization_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "users_org_role_idx" ON "users" USING btree ("organization_id","role");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "web_push_user_idx" ON "web_push_subscriptions" USING btree ("user_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "web_push_org_idx" ON "web_push_subscriptions" USING btree ("organization_id");--> statement-breakpoint CREATE INDEX IF NOT EXISTS "web_push_endpoint_idx" ON "web_push_subscriptions" USING btree ("endpoint");