Files
ProjectE/docs/internal/migration-baseline-schema.sql
T

1373 lines
35 KiB
SQL

--
-- PostgreSQL database dump
--
\restrict 2Eem1cQQ8P76XKU1UlapMz16HVQ1nlHhhz9MsVn9AUmmvesR8o23w34mR79UoaV
-- Dumped from database version 16.14
-- Dumped by pg_dump version 16.14
SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET xmloption = content;
SET client_min_messages = warning;
SET row_security = off;
--
-- Name: habit_difficulty; Type: TYPE; Schema: public; Owner: project_e
--
CREATE TYPE public.habit_difficulty AS ENUM (
'easy',
'medium',
'hard'
);
ALTER TYPE public.habit_difficulty OWNER TO project_e;
--
-- Name: habit_frequency; Type: TYPE; Schema: public; Owner: project_e
--
CREATE TYPE public.habit_frequency AS ENUM (
'daily',
'weekly',
'custom'
);
ALTER TYPE public.habit_frequency OWNER TO project_e;
--
-- Name: job_status; Type: TYPE; Schema: public; Owner: project_e
--
CREATE TYPE public.job_status AS ENUM (
'pending',
'processing',
'completed',
'failed'
);
ALTER TYPE public.job_status OWNER TO project_e;
--
-- Name: project_status; Type: TYPE; Schema: public; Owner: project_e
--
CREATE TYPE public.project_status AS ENUM (
'active',
'paused',
'completed',
'archived'
);
ALTER TYPE public.project_status OWNER TO project_e;
--
-- Name: section_kind; Type: TYPE; Schema: public; Owner: project_e
--
CREATE TYPE public.section_kind AS ENUM (
'section',
'milestone'
);
ALTER TYPE public.section_kind OWNER TO project_e;
--
-- Name: section_status; Type: TYPE; Schema: public; Owner: project_e
--
CREATE TYPE public.section_status AS ENUM (
'planned',
'in_progress',
'complete'
);
ALTER TYPE public.section_status OWNER TO project_e;
--
-- Name: tag_scope; Type: TYPE; Schema: public; Owner: project_e
--
CREATE TYPE public.tag_scope AS ENUM (
'global',
'tasks',
'habits',
'projects',
'notes'
);
ALTER TYPE public.tag_scope OWNER TO project_e;
--
-- Name: task_priority; Type: TYPE; Schema: public; Owner: project_e
--
CREATE TYPE public.task_priority AS ENUM (
'low',
'medium',
'high',
'urgent'
);
ALTER TYPE public.task_priority OWNER TO project_e;
--
-- Name: task_status; Type: TYPE; Schema: public; Owner: project_e
--
CREATE TYPE public.task_status AS ENUM (
'todo',
'in_progress',
'done',
'cancelled'
);
ALTER TYPE public.task_status OWNER TO project_e;
SET default_tablespace = '';
SET default_table_access_method = heap;
--
-- Name: activity_feed; Type: TABLE; Schema: public; Owner: project_e
--
CREATE TABLE public.activity_feed (
id uuid DEFAULT gen_random_uuid() NOT NULL,
actor text NOT NULL,
action text NOT NULL,
entity_type text NOT NULL,
entity_id uuid NOT NULL,
changes jsonb,
workspace_id uuid NOT NULL,
created_at timestamp with time zone DEFAULT now() NOT NULL
);
ALTER TABLE public.activity_feed OWNER TO project_e;
--
-- Name: api_keys; Type: TABLE; Schema: public; Owner: project_e
--
CREATE TABLE public.api_keys (
id uuid DEFAULT gen_random_uuid() NOT NULL,
user_id uuid NOT NULL,
name text NOT NULL,
key_hash text NOT NULL,
key_prefix text NOT NULL,
active boolean DEFAULT true,
last_used_at timestamp with time zone,
created_at timestamp with time zone DEFAULT now() NOT NULL,
updated_at timestamp with time zone DEFAULT now() NOT NULL
);
ALTER TABLE public.api_keys OWNER TO project_e;
--
-- Name: domains; Type: TABLE; Schema: public; Owner: project_e
--
CREATE TABLE public.domains (
id uuid DEFAULT gen_random_uuid() NOT NULL,
name text NOT NULL,
slug text NOT NULL,
color text,
icon text,
parent_id uuid,
sort_order integer DEFAULT 0,
created_at timestamp with time zone DEFAULT now() NOT NULL,
updated_at timestamp with time zone DEFAULT now() NOT NULL,
search_vector tsvector,
custom_fields jsonb DEFAULT '{}'::jsonb,
owner_id uuid
);
ALTER TABLE public.domains OWNER TO project_e;
--
-- Name: habit_completions; Type: TABLE; Schema: public; Owner: project_e
--
CREATE TABLE public.habit_completions (
id uuid DEFAULT gen_random_uuid() NOT NULL,
habit_id uuid NOT NULL,
date timestamp with time zone NOT NULL,
value integer DEFAULT 1,
mood integer,
notes text,
created_at timestamp with time zone DEFAULT now() NOT NULL
);
ALTER TABLE public.habit_completions OWNER TO project_e;
--
-- Name: habit_tags; Type: TABLE; Schema: public; Owner: project_e
--
CREATE TABLE public.habit_tags (
habit_id uuid NOT NULL,
tag_id uuid NOT NULL
);
ALTER TABLE public.habit_tags OWNER TO project_e;
--
-- Name: habits; Type: TABLE; Schema: public; Owner: project_e
--
CREATE TABLE public.habits (
id uuid DEFAULT gen_random_uuid() NOT NULL,
name text NOT NULL,
description text,
domain_id uuid NOT NULL,
frequency public.habit_frequency DEFAULT 'daily'::public.habit_frequency NOT NULL,
difficulty public.habit_difficulty DEFAULT 'medium'::public.habit_difficulty NOT NULL,
goal_per_period integer DEFAULT 1,
unit text,
reminder_time time without time zone,
skip_days integer[] DEFAULT '{}'::integer[],
streak_count integer DEFAULT 0,
best_streak integer DEFAULT 0,
mood_tracking boolean DEFAULT false,
active boolean DEFAULT true,
created_at timestamp with time zone DEFAULT now() NOT NULL,
updated_at timestamp with time zone DEFAULT now() NOT NULL,
deleted_at timestamp with time zone,
search_vector tsvector
);
ALTER TABLE public.habits OWNER TO project_e;
--
-- Name: jobs; Type: TABLE; Schema: public; Owner: project_e
--
CREATE TABLE public.jobs (
id uuid DEFAULT gen_random_uuid() NOT NULL,
type text NOT NULL,
payload jsonb DEFAULT '{}'::jsonb,
status public.job_status DEFAULT 'pending'::public.job_status NOT NULL,
attempts integer DEFAULT 0,
max_attempts integer DEFAULT 3,
next_retry_at timestamp with time zone,
last_error text,
created_at timestamp with time zone DEFAULT now() NOT NULL,
updated_at timestamp with time zone DEFAULT now() NOT NULL
);
ALTER TABLE public.jobs OWNER TO project_e;
--
-- Name: note_entity_links; Type: TABLE; Schema: public; Owner: project_e
--
CREATE TABLE public.note_entity_links (
note_id uuid NOT NULL,
entity_type text NOT NULL,
entity_id uuid NOT NULL
);
ALTER TABLE public.note_entity_links OWNER TO project_e;
--
-- Name: note_links; Type: TABLE; Schema: public; Owner: project_e
--
CREATE TABLE public.note_links (
source_note_id uuid NOT NULL,
target_note_id uuid NOT NULL
);
ALTER TABLE public.note_links OWNER TO project_e;
--
-- Name: note_tags; Type: TABLE; Schema: public; Owner: project_e
--
CREATE TABLE public.note_tags (
note_id uuid NOT NULL,
tag_id uuid NOT NULL
);
ALTER TABLE public.note_tags OWNER TO project_e;
--
-- Name: notes; Type: TABLE; Schema: public; Owner: project_e
--
CREATE TABLE public.notes (
id uuid DEFAULT gen_random_uuid() NOT NULL,
title text NOT NULL,
content text,
domain_id uuid NOT NULL,
is_pinned boolean DEFAULT false,
is_archived boolean DEFAULT false,
created_at timestamp with time zone DEFAULT now() NOT NULL,
updated_at timestamp with time zone DEFAULT now() NOT NULL,
deleted_at timestamp with time zone,
search_vector tsvector
);
ALTER TABLE public.notes OWNER TO project_e;
--
-- Name: project_tags; Type: TABLE; Schema: public; Owner: project_e
--
CREATE TABLE public.project_tags (
project_id uuid NOT NULL,
tag_id uuid NOT NULL
);
ALTER TABLE public.project_tags OWNER TO project_e;
--
-- Name: projects; Type: TABLE; Schema: public; Owner: project_e
--
CREATE TABLE public.projects (
id uuid DEFAULT gen_random_uuid() NOT NULL,
name text NOT NULL,
description text,
status public.project_status DEFAULT 'active'::public.project_status NOT NULL,
domain_id uuid NOT NULL,
color text,
icon text,
target_date timestamp with time zone,
created_at timestamp with time zone DEFAULT now() NOT NULL,
updated_at timestamp with time zone DEFAULT now() NOT NULL,
deleted_at timestamp with time zone,
search_vector tsvector
);
ALTER TABLE public.projects OWNER TO project_e;
--
-- Name: scheduled_jobs; Type: TABLE; Schema: public; Owner: project_e
--
CREATE TABLE public.scheduled_jobs (
id uuid DEFAULT gen_random_uuid() NOT NULL,
entity_type text NOT NULL,
entity_id uuid NOT NULL,
recurrence_rule text NOT NULL,
next_occurrence_at timestamp with time zone NOT NULL,
last_spawned_at timestamp with time zone,
created_at timestamp with time zone DEFAULT now() NOT NULL
);
ALTER TABLE public.scheduled_jobs OWNER TO project_e;
--
-- Name: sections; Type: TABLE; Schema: public; Owner: project_e
--
CREATE TABLE public.sections (
id uuid DEFAULT gen_random_uuid() NOT NULL,
name text NOT NULL,
project_id uuid NOT NULL,
kind public.section_kind DEFAULT 'section'::public.section_kind NOT NULL,
status public.section_status DEFAULT 'planned'::public.section_status NOT NULL,
target_date timestamp with time zone,
sort_order integer DEFAULT 0,
created_at timestamp with time zone DEFAULT now() NOT NULL,
updated_at timestamp with time zone DEFAULT now() NOT NULL
);
ALTER TABLE public.sections OWNER TO project_e;
--
-- Name: tags; Type: TABLE; Schema: public; Owner: project_e
--
CREATE TABLE public.tags (
id uuid DEFAULT gen_random_uuid() NOT NULL,
name text NOT NULL,
color text,
scope public.tag_scope DEFAULT 'global'::public.tag_scope NOT NULL,
parent_id uuid,
created_at timestamp with time zone DEFAULT now() NOT NULL,
updated_at timestamp with time zone DEFAULT now() NOT NULL
);
ALTER TABLE public.tags OWNER TO project_e;
--
-- Name: task_dependencies; Type: TABLE; Schema: public; Owner: project_e
--
CREATE TABLE public.task_dependencies (
task_id uuid NOT NULL,
depends_on_task_id uuid NOT NULL
);
ALTER TABLE public.task_dependencies OWNER TO project_e;
--
-- Name: task_tags; Type: TABLE; Schema: public; Owner: project_e
--
CREATE TABLE public.task_tags (
task_id uuid NOT NULL,
tag_id uuid NOT NULL
);
ALTER TABLE public.task_tags OWNER TO project_e;
--
-- Name: tasks; Type: TABLE; Schema: public; Owner: project_e
--
CREATE TABLE public.tasks (
id uuid DEFAULT gen_random_uuid() NOT NULL,
title text NOT NULL,
description text,
status public.task_status DEFAULT 'todo'::public.task_status NOT NULL,
priority public.task_priority DEFAULT 'medium'::public.task_priority NOT NULL,
domain_id uuid NOT NULL,
project_id uuid,
section_id uuid,
parent_id uuid,
due_date timestamp with time zone,
completed_at timestamp with time zone,
estimated_minutes integer,
tracked_minutes integer DEFAULT 0,
recurrence_rule text,
"order" integer DEFAULT 0,
custom_fields jsonb DEFAULT '{}'::jsonb,
created_at timestamp with time zone DEFAULT now() NOT NULL,
updated_at timestamp with time zone DEFAULT now() NOT NULL,
deleted_at timestamp with time zone,
search_vector tsvector
);
ALTER TABLE public.tasks OWNER TO project_e;
--
-- Name: users; Type: TABLE; Schema: public; Owner: project_e
--
CREATE TABLE public.users (
id uuid DEFAULT gen_random_uuid() NOT NULL,
email text NOT NULL,
name text NOT NULL,
password_hash text NOT NULL,
created_at timestamp with time zone DEFAULT now() NOT NULL,
updated_at timestamp with time zone DEFAULT now() NOT NULL,
passkey_credential_id text,
passkey_public_key text,
passkey_counter integer DEFAULT 0
);
ALTER TABLE public.users OWNER TO project_e;
--
-- Name: webhook_deliveries; Type: TABLE; Schema: public; Owner: project_e
--
CREATE TABLE public.webhook_deliveries (
id uuid DEFAULT gen_random_uuid() NOT NULL,
webhook_id uuid NOT NULL,
event text NOT NULL,
payload jsonb DEFAULT '{}'::jsonb,
status text DEFAULT 'pending'::text NOT NULL,
status_code integer DEFAULT 0,
response_body text,
attempts integer DEFAULT 0,
created_at timestamp with time zone DEFAULT now() NOT NULL
);
ALTER TABLE public.webhook_deliveries OWNER TO project_e;
--
-- Name: webhooks; Type: TABLE; Schema: public; Owner: project_e
--
CREATE TABLE public.webhooks (
id uuid DEFAULT gen_random_uuid() NOT NULL,
name text,
url text NOT NULL,
secret text,
events text[] DEFAULT '{}'::text[],
active boolean DEFAULT true,
workspace_id uuid NOT NULL,
created_at timestamp with time zone DEFAULT now() NOT NULL,
updated_at timestamp with time zone DEFAULT now() NOT NULL
);
ALTER TABLE public.webhooks OWNER TO project_e;
--
-- Name: activity_feed activity_feed_pkey; Type: CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.activity_feed
ADD CONSTRAINT activity_feed_pkey PRIMARY KEY (id);
--
-- Name: api_keys api_keys_pkey; Type: CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.api_keys
ADD CONSTRAINT api_keys_pkey PRIMARY KEY (id);
--
-- Name: domains domains_pkey; Type: CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.domains
ADD CONSTRAINT domains_pkey PRIMARY KEY (id);
--
-- Name: domains domains_slug_unique; Type: CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.domains
ADD CONSTRAINT domains_slug_unique UNIQUE (slug);
--
-- Name: habit_completions habit_completions_pkey; Type: CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.habit_completions
ADD CONSTRAINT habit_completions_pkey PRIMARY KEY (id);
--
-- Name: habit_tags habit_tags_habit_id_tag_id_pk; Type: CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.habit_tags
ADD CONSTRAINT habit_tags_habit_id_tag_id_pk PRIMARY KEY (habit_id, tag_id);
--
-- Name: habits habits_pkey; Type: CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.habits
ADD CONSTRAINT habits_pkey PRIMARY KEY (id);
--
-- Name: jobs jobs_pkey; Type: CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.jobs
ADD CONSTRAINT jobs_pkey PRIMARY KEY (id);
--
-- Name: note_links note_links_source_note_id_target_note_id_pk; Type: CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.note_links
ADD CONSTRAINT note_links_source_note_id_target_note_id_pk PRIMARY KEY (source_note_id, target_note_id);
--
-- Name: note_tags note_tags_note_id_tag_id_pk; Type: CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.note_tags
ADD CONSTRAINT note_tags_note_id_tag_id_pk PRIMARY KEY (note_id, tag_id);
--
-- Name: notes notes_pkey; Type: CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.notes
ADD CONSTRAINT notes_pkey PRIMARY KEY (id);
--
-- Name: project_tags project_tags_project_id_tag_id_pk; Type: CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.project_tags
ADD CONSTRAINT project_tags_project_id_tag_id_pk PRIMARY KEY (project_id, tag_id);
--
-- Name: projects projects_pkey; Type: CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.projects
ADD CONSTRAINT projects_pkey PRIMARY KEY (id);
--
-- Name: scheduled_jobs scheduled_jobs_pkey; Type: CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.scheduled_jobs
ADD CONSTRAINT scheduled_jobs_pkey PRIMARY KEY (id);
--
-- Name: sections sections_pkey; Type: CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.sections
ADD CONSTRAINT sections_pkey PRIMARY KEY (id);
--
-- Name: tags tags_pkey; Type: CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.tags
ADD CONSTRAINT tags_pkey PRIMARY KEY (id);
--
-- Name: task_dependencies task_dependencies_task_id_depends_on_task_id_pk; Type: CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.task_dependencies
ADD CONSTRAINT task_dependencies_task_id_depends_on_task_id_pk PRIMARY KEY (task_id, depends_on_task_id);
--
-- Name: task_tags task_tags_task_id_tag_id_pk; Type: CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.task_tags
ADD CONSTRAINT task_tags_task_id_tag_id_pk PRIMARY KEY (task_id, tag_id);
--
-- Name: tasks tasks_pkey; Type: CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.tasks
ADD CONSTRAINT tasks_pkey PRIMARY KEY (id);
--
-- Name: users users_email_unique; Type: CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.users
ADD CONSTRAINT users_email_unique UNIQUE (email);
--
-- Name: users users_pkey; Type: CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.users
ADD CONSTRAINT users_pkey PRIMARY KEY (id);
--
-- Name: webhook_deliveries webhook_deliveries_pkey; Type: CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.webhook_deliveries
ADD CONSTRAINT webhook_deliveries_pkey PRIMARY KEY (id);
--
-- Name: webhooks webhooks_pkey; Type: CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.webhooks
ADD CONSTRAINT webhooks_pkey PRIMARY KEY (id);
--
-- Name: activity_feed_actor_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX activity_feed_actor_idx ON public.activity_feed USING btree (actor);
--
-- Name: activity_feed_created_at_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX activity_feed_created_at_idx ON public.activity_feed USING btree (created_at);
--
-- Name: activity_feed_entity_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX activity_feed_entity_idx ON public.activity_feed USING btree (entity_type, entity_id);
--
-- Name: activity_feed_workspace_id_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX activity_feed_workspace_id_idx ON public.activity_feed USING btree (workspace_id);
--
-- Name: api_keys_active_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX api_keys_active_idx ON public.api_keys USING btree (active);
--
-- Name: api_keys_key_hash_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX api_keys_key_hash_idx ON public.api_keys USING btree (key_hash);
--
-- Name: api_keys_user_id_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX api_keys_user_id_idx ON public.api_keys USING btree (user_id);
--
-- Name: domains_owner_id_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX domains_owner_id_idx ON public.domains USING btree (owner_id);
--
-- Name: domains_parent_id_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX domains_parent_id_idx ON public.domains USING btree (parent_id);
--
-- Name: domains_search_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX domains_search_idx ON public.domains USING gin (search_vector);
--
-- Name: domains_slug_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX domains_slug_idx ON public.domains USING btree (slug);
--
-- Name: habit_completions_date_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX habit_completions_date_idx ON public.habit_completions USING btree (habit_id, date);
--
-- Name: habit_completions_habit_id_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX habit_completions_habit_id_idx ON public.habit_completions USING btree (habit_id);
--
-- Name: habit_tags_tag_id_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX habit_tags_tag_id_idx ON public.habit_tags USING btree (tag_id);
--
-- Name: habits_active_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX habits_active_idx ON public.habits USING btree (active);
--
-- Name: habits_deleted_at_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX habits_deleted_at_idx ON public.habits USING btree (deleted_at);
--
-- Name: habits_domain_id_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX habits_domain_id_idx ON public.habits USING btree (domain_id);
--
-- Name: habits_search_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX habits_search_idx ON public.habits USING gin (search_vector);
--
-- Name: jobs_next_retry_at_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX jobs_next_retry_at_idx ON public.jobs USING btree (next_retry_at);
--
-- Name: jobs_status_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX jobs_status_idx ON public.jobs USING btree (status);
--
-- Name: jobs_type_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX jobs_type_idx ON public.jobs USING btree (type);
--
-- Name: note_entity_links_entity_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX note_entity_links_entity_idx ON public.note_entity_links USING btree (entity_type, entity_id);
--
-- Name: note_entity_links_note_id_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX note_entity_links_note_id_idx ON public.note_entity_links USING btree (note_id);
--
-- Name: note_links_target_note_id_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX note_links_target_note_id_idx ON public.note_links USING btree (target_note_id);
--
-- Name: note_tags_tag_id_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX note_tags_tag_id_idx ON public.note_tags USING btree (tag_id);
--
-- Name: notes_deleted_at_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX notes_deleted_at_idx ON public.notes USING btree (deleted_at);
--
-- Name: notes_domain_id_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX notes_domain_id_idx ON public.notes USING btree (domain_id);
--
-- Name: notes_is_archived_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX notes_is_archived_idx ON public.notes USING btree (is_archived);
--
-- Name: notes_is_pinned_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX notes_is_pinned_idx ON public.notes USING btree (is_pinned);
--
-- Name: notes_search_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX notes_search_idx ON public.notes USING gin (search_vector);
--
-- Name: project_tags_tag_id_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX project_tags_tag_id_idx ON public.project_tags USING btree (tag_id);
--
-- Name: projects_deleted_at_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX projects_deleted_at_idx ON public.projects USING btree (deleted_at);
--
-- Name: projects_domain_id_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX projects_domain_id_idx ON public.projects USING btree (domain_id);
--
-- Name: projects_search_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX projects_search_idx ON public.projects USING gin (search_vector);
--
-- Name: projects_status_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX projects_status_idx ON public.projects USING btree (status);
--
-- Name: scheduled_jobs_entity_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX scheduled_jobs_entity_idx ON public.scheduled_jobs USING btree (entity_type, entity_id);
--
-- Name: scheduled_jobs_next_occurrence_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX scheduled_jobs_next_occurrence_idx ON public.scheduled_jobs USING btree (next_occurrence_at);
--
-- Name: sections_kind_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX sections_kind_idx ON public.sections USING btree (kind);
--
-- Name: sections_project_id_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX sections_project_id_idx ON public.sections USING btree (project_id);
--
-- Name: sections_sort_order_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX sections_sort_order_idx ON public.sections USING btree (project_id, sort_order);
--
-- Name: tags_parent_id_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX tags_parent_id_idx ON public.tags USING btree (parent_id);
--
-- Name: tags_scope_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX tags_scope_idx ON public.tags USING btree (scope);
--
-- Name: task_dependencies_depends_on_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX task_dependencies_depends_on_idx ON public.task_dependencies USING btree (depends_on_task_id);
--
-- Name: task_tags_tag_id_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX task_tags_tag_id_idx ON public.task_tags USING btree (tag_id);
--
-- Name: tasks_deleted_at_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX tasks_deleted_at_idx ON public.tasks USING btree (deleted_at);
--
-- Name: tasks_domain_id_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX tasks_domain_id_idx ON public.tasks USING btree (domain_id);
--
-- Name: tasks_due_date_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX tasks_due_date_idx ON public.tasks USING btree (due_date);
--
-- Name: tasks_order_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX tasks_order_idx ON public.tasks USING btree ("order");
--
-- Name: tasks_parent_id_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX tasks_parent_id_idx ON public.tasks USING btree (parent_id);
--
-- Name: tasks_priority_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX tasks_priority_idx ON public.tasks USING btree (priority);
--
-- Name: tasks_project_id_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX tasks_project_id_idx ON public.tasks USING btree (project_id);
--
-- Name: tasks_search_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX tasks_search_idx ON public.tasks USING gin (search_vector);
--
-- Name: tasks_section_id_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX tasks_section_id_idx ON public.tasks USING btree (section_id);
--
-- Name: tasks_status_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX tasks_status_idx ON public.tasks USING btree (status);
--
-- Name: webhook_deliveries_created_at_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX webhook_deliveries_created_at_idx ON public.webhook_deliveries USING btree (created_at);
--
-- Name: webhook_deliveries_status_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX webhook_deliveries_status_idx ON public.webhook_deliveries USING btree (status);
--
-- Name: webhook_deliveries_webhook_id_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX webhook_deliveries_webhook_id_idx ON public.webhook_deliveries USING btree (webhook_id);
--
-- Name: webhooks_active_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX webhooks_active_idx ON public.webhooks USING btree (active);
--
-- Name: webhooks_workspace_id_idx; Type: INDEX; Schema: public; Owner: project_e
--
CREATE INDEX webhooks_workspace_id_idx ON public.webhooks USING btree (workspace_id);
--
-- Name: activity_feed activity_feed_workspace_id_domains_id_fk; Type: FK CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.activity_feed
ADD CONSTRAINT activity_feed_workspace_id_domains_id_fk FOREIGN KEY (workspace_id) REFERENCES public.domains(id) ON DELETE CASCADE;
--
-- Name: api_keys api_keys_user_id_users_id_fk; Type: FK CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.api_keys
ADD CONSTRAINT api_keys_user_id_users_id_fk FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- Name: domains domains_owner_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.domains
ADD CONSTRAINT domains_owner_id_fkey FOREIGN KEY (owner_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- Name: domains domains_parent_id_domains_id_fk; Type: FK CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.domains
ADD CONSTRAINT domains_parent_id_domains_id_fk FOREIGN KEY (parent_id) REFERENCES public.domains(id) ON DELETE SET NULL;
--
-- Name: habit_completions habit_completions_habit_id_habits_id_fk; Type: FK CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.habit_completions
ADD CONSTRAINT habit_completions_habit_id_habits_id_fk FOREIGN KEY (habit_id) REFERENCES public.habits(id) ON DELETE CASCADE;
--
-- Name: habit_tags habit_tags_habit_id_habits_id_fk; Type: FK CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.habit_tags
ADD CONSTRAINT habit_tags_habit_id_habits_id_fk FOREIGN KEY (habit_id) REFERENCES public.habits(id) ON DELETE CASCADE;
--
-- Name: habit_tags habit_tags_tag_id_tags_id_fk; Type: FK CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.habit_tags
ADD CONSTRAINT habit_tags_tag_id_tags_id_fk FOREIGN KEY (tag_id) REFERENCES public.tags(id) ON DELETE CASCADE;
--
-- Name: habits habits_domain_id_domains_id_fk; Type: FK CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.habits
ADD CONSTRAINT habits_domain_id_domains_id_fk FOREIGN KEY (domain_id) REFERENCES public.domains(id) ON DELETE CASCADE;
--
-- Name: note_entity_links note_entity_links_note_id_notes_id_fk; Type: FK CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.note_entity_links
ADD CONSTRAINT note_entity_links_note_id_notes_id_fk FOREIGN KEY (note_id) REFERENCES public.notes(id) ON DELETE CASCADE;
--
-- Name: note_links note_links_source_note_id_notes_id_fk; Type: FK CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.note_links
ADD CONSTRAINT note_links_source_note_id_notes_id_fk FOREIGN KEY (source_note_id) REFERENCES public.notes(id) ON DELETE CASCADE;
--
-- Name: note_links note_links_target_note_id_notes_id_fk; Type: FK CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.note_links
ADD CONSTRAINT note_links_target_note_id_notes_id_fk FOREIGN KEY (target_note_id) REFERENCES public.notes(id) ON DELETE CASCADE;
--
-- Name: note_tags note_tags_note_id_notes_id_fk; Type: FK CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.note_tags
ADD CONSTRAINT note_tags_note_id_notes_id_fk FOREIGN KEY (note_id) REFERENCES public.notes(id) ON DELETE CASCADE;
--
-- Name: note_tags note_tags_tag_id_tags_id_fk; Type: FK CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.note_tags
ADD CONSTRAINT note_tags_tag_id_tags_id_fk FOREIGN KEY (tag_id) REFERENCES public.tags(id) ON DELETE CASCADE;
--
-- Name: notes notes_domain_id_domains_id_fk; Type: FK CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.notes
ADD CONSTRAINT notes_domain_id_domains_id_fk FOREIGN KEY (domain_id) REFERENCES public.domains(id) ON DELETE CASCADE;
--
-- Name: project_tags project_tags_project_id_projects_id_fk; Type: FK CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.project_tags
ADD CONSTRAINT project_tags_project_id_projects_id_fk FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE;
--
-- Name: project_tags project_tags_tag_id_tags_id_fk; Type: FK CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.project_tags
ADD CONSTRAINT project_tags_tag_id_tags_id_fk FOREIGN KEY (tag_id) REFERENCES public.tags(id) ON DELETE CASCADE;
--
-- Name: projects projects_domain_id_domains_id_fk; Type: FK CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.projects
ADD CONSTRAINT projects_domain_id_domains_id_fk FOREIGN KEY (domain_id) REFERENCES public.domains(id) ON DELETE CASCADE;
--
-- Name: sections sections_project_id_projects_id_fk; Type: FK CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.sections
ADD CONSTRAINT sections_project_id_projects_id_fk FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE;
--
-- Name: tags tags_parent_id_tags_id_fk; Type: FK CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.tags
ADD CONSTRAINT tags_parent_id_tags_id_fk FOREIGN KEY (parent_id) REFERENCES public.tags(id) ON DELETE SET NULL;
--
-- Name: task_dependencies task_dependencies_depends_on_task_id_tasks_id_fk; Type: FK CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.task_dependencies
ADD CONSTRAINT task_dependencies_depends_on_task_id_tasks_id_fk FOREIGN KEY (depends_on_task_id) REFERENCES public.tasks(id) ON DELETE CASCADE;
--
-- Name: task_dependencies task_dependencies_task_id_tasks_id_fk; Type: FK CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.task_dependencies
ADD CONSTRAINT task_dependencies_task_id_tasks_id_fk FOREIGN KEY (task_id) REFERENCES public.tasks(id) ON DELETE CASCADE;
--
-- Name: task_tags task_tags_tag_id_tags_id_fk; Type: FK CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.task_tags
ADD CONSTRAINT task_tags_tag_id_tags_id_fk FOREIGN KEY (tag_id) REFERENCES public.tags(id) ON DELETE CASCADE;
--
-- Name: task_tags task_tags_task_id_tasks_id_fk; Type: FK CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.task_tags
ADD CONSTRAINT task_tags_task_id_tasks_id_fk FOREIGN KEY (task_id) REFERENCES public.tasks(id) ON DELETE CASCADE;
--
-- Name: tasks tasks_domain_id_domains_id_fk; Type: FK CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.tasks
ADD CONSTRAINT tasks_domain_id_domains_id_fk FOREIGN KEY (domain_id) REFERENCES public.domains(id) ON DELETE CASCADE;
--
-- Name: tasks tasks_parent_id_tasks_id_fk; Type: FK CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.tasks
ADD CONSTRAINT tasks_parent_id_tasks_id_fk FOREIGN KEY (parent_id) REFERENCES public.tasks(id) ON DELETE SET NULL;
--
-- Name: tasks tasks_project_id_projects_id_fk; Type: FK CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.tasks
ADD CONSTRAINT tasks_project_id_projects_id_fk FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE SET NULL;
--
-- Name: tasks tasks_section_id_sections_id_fk; Type: FK CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.tasks
ADD CONSTRAINT tasks_section_id_sections_id_fk FOREIGN KEY (section_id) REFERENCES public.sections(id) ON DELETE SET NULL;
--
-- Name: webhook_deliveries webhook_deliveries_webhook_id_webhooks_id_fk; Type: FK CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.webhook_deliveries
ADD CONSTRAINT webhook_deliveries_webhook_id_webhooks_id_fk FOREIGN KEY (webhook_id) REFERENCES public.webhooks(id) ON DELETE CASCADE;
--
-- Name: webhooks webhooks_workspace_id_domains_id_fk; Type: FK CONSTRAINT; Schema: public; Owner: project_e
--
ALTER TABLE ONLY public.webhooks
ADD CONSTRAINT webhooks_workspace_id_domains_id_fk FOREIGN KEY (workspace_id) REFERENCES public.domains(id) ON DELETE CASCADE;
--
-- PostgreSQL database dump complete
--
\unrestrict 2Eem1cQQ8P76XKU1UlapMz16HVQ1nlHhhz9MsVn9AUmmvesR8o23w34mR79UoaV