Files
ERP/pm/sql/schema.sql
MMD 2747f9d4bb chore(pm): vendor the Aramesh/PM platform under pm/ (squash of Aramesh/PM @ 91f3271)
The PM panel (PmPanelPage -> iframe /pm/) needs the project-management
platform served at /pm/ on the ERP domain. Source: org repo Aramesh/PM,
branch feature/project-management-platform. Update via:
git subtree pull --prefix=pm aramesh-pm feature/project-management-platform --squash
2026-10-07 15:14:20 +03:30

1227 lines
32 KiB
SQL

--
-- PostgreSQL database dump
--
\restrict kNuninakYWLtRtYcUJzHdw8CZSFPdYi5ZBqLn8ENeY0KU4rYnMaZYuMvko6cgtg
-- Dumped from database version 18.6 (Debian 18.6-1.pgdg13+2)
-- Dumped by pg_dump version 18.6 (Debian 18.6-1.pgdg13+2)
SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET transaction_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: pgcrypto; Type: EXTENSION; Schema: -; Owner: -
--
CREATE EXTENSION IF NOT EXISTS pgcrypto WITH SCHEMA public;
--
-- Name: EXTENSION pgcrypto; Type: COMMENT; Schema: -; Owner:
--
COMMENT ON EXTENSION pgcrypto IS 'cryptographic functions';
--
-- Name: qc_answer; Type: TYPE; Schema: public; Owner: pm
--
CREATE TYPE public.qc_answer AS ENUM (
'pass_',
'fail',
'na'
);
ALTER TYPE public.qc_answer OWNER TO pm;
--
-- Name: qc_phase; Type: TYPE; Schema: public; Owner: pm
--
CREATE TYPE public.qc_phase AS ENUM (
'pre',
'during',
'after'
);
ALTER TYPE public.qc_phase OWNER TO pm;
SET default_tablespace = '';
SET default_table_access_method = heap;
--
-- Name: defects; Type: TABLE; Schema: public; Owner: pm
--
CREATE TABLE public.defects (
id uuid NOT NULL,
task_id uuid,
task_op_wp_id integer,
question_id uuid,
title character varying(512) NOT NULL,
description text NOT NULL,
severity character varying(16) DEFAULT 'medium'::character varying NOT NULL,
status character varying(16) DEFAULT 'open'::character varying NOT NULL,
corrective_action text NOT NULL,
resolution_notes text NOT NULL,
photo_path character varying(512),
created_at timestamp with time zone DEFAULT now() NOT NULL,
resolved_at timestamp with time zone
);
ALTER TABLE public.defects OWNER TO pm;
--
-- Name: integration_logs; Type: TABLE; Schema: public; Owner: pm
--
CREATE TABLE public.integration_logs (
id uuid NOT NULL,
ts timestamp with time zone DEFAULT now() NOT NULL,
level character varying(8) NOT NULL,
direction character varying(8) NOT NULL,
message text NOT NULL,
context json NOT NULL
);
ALTER TABLE public.integration_logs OWNER TO pm;
--
-- Name: material_requirements; Type: TABLE; Schema: public; Owner: pm
--
CREATE TABLE public.material_requirements (
id uuid NOT NULL,
task_id uuid,
task_op_wp_id integer,
erp_material_id character varying(64) NOT NULL,
material_name character varying(255) NOT NULL,
quantity double precision NOT NULL,
unit_name character varying(64) NOT NULL,
unit_id integer,
source character varying(16) DEFAULT 'manual'::character varying NOT NULL,
created_at timestamp with time zone DEFAULT now() NOT NULL
);
ALTER TABLE public.material_requirements OWNER TO pm;
--
-- Name: milestones; Type: TABLE; Schema: public; Owner: pm
--
CREATE TABLE public.milestones (
id uuid NOT NULL,
project_id uuid NOT NULL,
title character varying(255) NOT NULL,
description text DEFAULT ''::text NOT NULL,
due_date date NOT NULL,
status character varying(32) DEFAULT 'PENDING'::character varying NOT NULL,
achieved_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.milestones OWNER TO pm;
--
-- Name: pm_users; Type: TABLE; Schema: public; Owner: pm
--
CREATE TABLE public.pm_users (
id uuid NOT NULL,
username character varying(64) NOT NULL,
password_hash character varying(255) NOT NULL,
display_name character varying(255) NOT NULL,
role character varying(32) DEFAULT 'project_manager'::character varying NOT NULL,
created_at timestamp with time zone DEFAULT now() NOT NULL
);
ALTER TABLE public.pm_users OWNER TO pm;
--
-- Name: COLUMN pm_users.role; Type: COMMENT; Schema: public; Owner: pm
--
COMMENT ON COLUMN public.pm_users.role IS 'project_manager|project_supervisor';
--
-- Name: project_assignments; Type: TABLE; Schema: public; Owner: pm
--
CREATE TABLE public.project_assignments (
id uuid NOT NULL,
user_id uuid NOT NULL,
project_id uuid,
op_project_id integer,
created_at timestamp with time zone DEFAULT now() NOT NULL
);
ALTER TABLE public.project_assignments OWNER TO pm;
--
-- Name: project_members; Type: TABLE; Schema: public; Owner: pm
--
CREATE TABLE public.project_members (
id uuid NOT NULL,
project_id uuid NOT NULL,
user_id uuid NOT NULL,
role character varying(32) NOT NULL,
created_at timestamp with time zone DEFAULT now() NOT NULL
);
ALTER TABLE public.project_members OWNER TO pm;
--
-- Name: projects; Type: TABLE; Schema: public; Owner: pm
--
CREATE TABLE public.projects (
id uuid NOT NULL,
code character varying(64) NOT NULL,
name character varying(255) NOT NULL,
description text NOT NULL,
client character varying(255) NOT NULL,
location character varying(255) NOT NULL,
project_manager character varying(255) NOT NULL,
planned_start date,
planned_end date,
actual_start date,
actual_end date,
status character varying(32) DEFAULT 'ACTIVE'::character varying NOT NULL,
progress double precision NOT NULL,
erp_project_id character varying(64),
legacy_op_project_id integer,
created_at timestamp with time zone DEFAULT now() NOT NULL,
updated_at timestamp with time zone DEFAULT now() NOT NULL
);
ALTER TABLE public.projects OWNER TO pm;
--
-- Name: projects_cache; Type: TABLE; Schema: public; Owner: pm
--
CREATE TABLE public.projects_cache (
id uuid NOT NULL,
op_project_id integer NOT NULL,
name character varying(255) NOT NULL,
identifier character varying(255) NOT NULL,
active boolean NOT NULL,
last_synced_at timestamp with time zone,
erp_project_id character varying(64)
);
ALTER TABLE public.projects_cache OWNER TO pm;
--
-- Name: purchase_requests; Type: TABLE; Schema: public; Owner: pm
--
CREATE TABLE public.purchase_requests (
id uuid NOT NULL,
project_id uuid,
op_project_id integer,
task_id uuid,
task_op_wp_id integer,
erp_material_id character varying(64) NOT NULL,
material_name character varying(255) NOT NULL,
quantity double precision NOT NULL,
unit_name character varying(64) NOT NULL,
status character varying(16) DEFAULT 'new'::character varying NOT NULL,
note character varying(512) NOT NULL,
created_at timestamp with time zone DEFAULT now() NOT NULL
);
ALTER TABLE public.purchase_requests OWNER TO pm;
--
-- Name: COLUMN purchase_requests.status; Type: COMMENT; Schema: public; Owner: pm
--
COMMENT ON COLUMN public.purchase_requests.status IS 'new|sent|ordered|received|canceled';
--
-- Name: qc_questions; Type: TABLE; Schema: public; Owner: pm
--
CREATE TABLE public.qc_questions (
id uuid NOT NULL,
template_id uuid NOT NULL,
phase public.qc_phase NOT NULL,
text character varying(512) NOT NULL,
sort_order integer NOT NULL,
required boolean NOT NULL
);
ALTER TABLE public.qc_questions OWNER TO pm;
--
-- Name: qc_templates; Type: TABLE; Schema: public; Owner: pm
--
CREATE TABLE public.qc_templates (
id uuid NOT NULL,
name character varying(255) NOT NULL,
activity_type character varying(64) NOT NULL,
description text NOT NULL,
created_at timestamp with time zone DEFAULT now() NOT NULL
);
ALTER TABLE public.qc_templates OWNER TO pm;
--
-- Name: reservations; Type: TABLE; Schema: public; Owner: pm
--
CREATE TABLE public.reservations (
id uuid NOT NULL,
task_id uuid,
task_op_wp_id integer,
erp_material_id character varying(64) NOT NULL,
material_name character varying(255) NOT NULL,
unit_name character varying(64) NOT NULL,
quantity double precision NOT NULL,
status character varying(16) DEFAULT 'active'::character varying NOT NULL,
note character varying(512) NOT NULL,
created_at timestamp with time zone DEFAULT now() NOT NULL
);
ALTER TABLE public.reservations OWNER TO pm;
--
-- Name: COLUMN reservations.status; Type: COMMENT; Schema: public; Owner: pm
--
COMMENT ON COLUMN public.reservations.status IS 'active|consumed|canceled';
--
-- Name: sync_events; Type: TABLE; Schema: public; Owner: pm
--
CREATE TABLE public.sync_events (
id uuid NOT NULL,
direction character varying(8) NOT NULL,
entity character varying(32) NOT NULL,
op_wp_id integer,
summary character varying(255) NOT NULL,
payload json NOT NULL,
status character varying(16) DEFAULT 'queued'::character varying NOT NULL,
attempts integer NOT NULL,
last_error text,
created_at timestamp with time zone DEFAULT now() NOT NULL,
sent_at timestamp with time zone
);
ALTER TABLE public.sync_events OWNER TO pm;
--
-- Name: COLUMN sync_events.status; Type: COMMENT; Schema: public; Owner: pm
--
COMMENT ON COLUMN public.sync_events.status IS 'queued|sent|failed|conflicted';
--
-- Name: sync_state; Type: TABLE; Schema: public; Owner: pm
--
CREATE TABLE public.sync_state (
key character varying(64) NOT NULL,
value json NOT NULL
);
ALTER TABLE public.sync_state OWNER TO pm;
--
-- Name: task_qc_definitions; Type: TABLE; Schema: public; Owner: pm
--
CREATE TABLE public.task_qc_definitions (
id uuid NOT NULL,
task_id uuid,
task_op_wp_id integer,
name character varying(255) NOT NULL,
source_template_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.task_qc_definitions OWNER TO pm;
--
-- Name: task_qc_questions; Type: TABLE; Schema: public; Owner: pm
--
CREATE TABLE public.task_qc_questions (
id uuid NOT NULL,
definition_id uuid NOT NULL,
phase public.qc_phase NOT NULL,
text character varying(512) NOT NULL,
sort_order integer NOT NULL,
required boolean NOT NULL
);
ALTER TABLE public.task_qc_questions OWNER TO pm;
--
-- Name: task_qc_results; Type: TABLE; Schema: public; Owner: pm
--
CREATE TABLE public.task_qc_results (
id uuid NOT NULL,
question_id uuid NOT NULL,
answer public.qc_answer NOT NULL,
comment text NOT NULL,
evaluated_at timestamp with time zone DEFAULT now() NOT NULL,
evaluated_by character varying(255) NOT NULL
);
ALTER TABLE public.task_qc_results OWNER TO pm;
--
-- Name: task_refs; Type: TABLE; Schema: public; Owner: pm
--
CREATE TABLE public.task_refs (
id uuid NOT NULL,
op_wp_id integer NOT NULL,
op_project_id integer NOT NULL,
subject character varying(512) NOT NULL,
wp_type character varying(64) NOT NULL,
status character varying(64) NOT NULL,
is_closed boolean NOT NULL,
percentage_done integer NOT NULL,
start_date date,
due_date date,
assignee character varying(255),
priority character varying(64),
parent_op_wp_id integer,
lock_version integer NOT NULL,
relations json NOT NULL,
qc_status character varying(32) DEFAULT 'none'::character varying NOT NULL,
deleted boolean NOT NULL,
op_updated_at timestamp with time zone,
last_synced_at timestamp with time zone
);
ALTER TABLE public.task_refs OWNER TO pm;
--
-- Name: task_relations; Type: TABLE; Schema: public; Owner: pm
--
CREATE TABLE public.task_relations (
id uuid NOT NULL,
project_id uuid NOT NULL,
from_task_id uuid NOT NULL,
to_task_id uuid NOT NULL,
relation_type character varying(8) DEFAULT 'FS'::character varying NOT NULL,
lag_days integer DEFAULT 0 NOT NULL,
created_at timestamp with time zone DEFAULT now() NOT NULL
);
ALTER TABLE public.task_relations OWNER TO pm;
--
-- Name: tasks; Type: TABLE; Schema: public; Owner: pm
--
CREATE TABLE public.tasks (
id uuid NOT NULL,
project_id uuid NOT NULL,
parent_id uuid,
title character varying(512) NOT NULL,
description text NOT NULL,
status character varying(32) DEFAULT 'TODO'::character varying NOT NULL,
priority character varying(32) DEFAULT 'medium'::character varying NOT NULL,
assignee_id uuid,
assignee_name character varying(255),
planned_start date,
planned_end date,
actual_start date,
actual_end date,
duration integer DEFAULT 1 NOT NULL,
progress integer DEFAULT 0 NOT NULL,
planned_progress integer DEFAULT 0 NOT NULL,
qc_status character varying(32) DEFAULT 'none'::character varying NOT NULL,
legacy_op_wp_id integer,
created_at timestamp with time zone DEFAULT now() NOT NULL,
updated_at timestamp with time zone DEFAULT now() NOT NULL,
human_resources jsonb DEFAULT '[]'::jsonb,
materials jsonb DEFAULT '[]'::jsonb
);
ALTER TABLE public.tasks OWNER TO pm;
--
-- Name: COLUMN tasks.qc_status; Type: COMMENT; Schema: public; Owner: pm
--
COMMENT ON COLUMN public.tasks.qc_status IS 'none|pre_qc_pending|pre_qc_failed|ready|exec_qc_pending|in_progress|qc_failed_rework|final_passed';
--
-- Name: webhook_deliveries; Type: TABLE; Schema: public; Owner: pm
--
CREATE TABLE public.webhook_deliveries (
id uuid NOT NULL,
delivery_id character varying(255) NOT NULL,
op_wp_id integer,
received_at timestamp with time zone DEFAULT now() NOT NULL,
processed boolean NOT NULL
);
ALTER TABLE public.webhook_deliveries OWNER TO pm;
--
-- Name: defects defects_pkey; Type: CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.defects
ADD CONSTRAINT defects_pkey PRIMARY KEY (id);
--
-- Name: integration_logs integration_logs_pkey; Type: CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.integration_logs
ADD CONSTRAINT integration_logs_pkey PRIMARY KEY (id);
--
-- Name: material_requirements material_requirements_pkey; Type: CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.material_requirements
ADD CONSTRAINT material_requirements_pkey PRIMARY KEY (id);
--
-- Name: milestones milestones_pkey; Type: CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.milestones
ADD CONSTRAINT milestones_pkey PRIMARY KEY (id);
--
-- Name: pm_users pm_users_pkey; Type: CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.pm_users
ADD CONSTRAINT pm_users_pkey PRIMARY KEY (id);
--
-- Name: project_assignments project_assignments_pkey; Type: CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.project_assignments
ADD CONSTRAINT project_assignments_pkey PRIMARY KEY (id);
--
-- Name: project_members project_members_pkey; Type: CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.project_members
ADD CONSTRAINT project_members_pkey PRIMARY KEY (id);
--
-- Name: projects_cache projects_cache_pkey; Type: CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.projects_cache
ADD CONSTRAINT projects_cache_pkey PRIMARY KEY (id);
--
-- Name: projects projects_pkey; Type: CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.projects
ADD CONSTRAINT projects_pkey PRIMARY KEY (id);
--
-- Name: purchase_requests purchase_requests_pkey; Type: CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.purchase_requests
ADD CONSTRAINT purchase_requests_pkey PRIMARY KEY (id);
--
-- Name: qc_questions qc_questions_pkey; Type: CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.qc_questions
ADD CONSTRAINT qc_questions_pkey PRIMARY KEY (id);
--
-- Name: qc_templates qc_templates_pkey; Type: CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.qc_templates
ADD CONSTRAINT qc_templates_pkey PRIMARY KEY (id);
--
-- Name: reservations reservations_pkey; Type: CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.reservations
ADD CONSTRAINT reservations_pkey PRIMARY KEY (id);
--
-- Name: sync_events sync_events_pkey; Type: CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.sync_events
ADD CONSTRAINT sync_events_pkey PRIMARY KEY (id);
--
-- Name: sync_state sync_state_pkey; Type: CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.sync_state
ADD CONSTRAINT sync_state_pkey PRIMARY KEY (key);
--
-- Name: task_qc_definitions task_qc_definitions_pkey; Type: CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.task_qc_definitions
ADD CONSTRAINT task_qc_definitions_pkey PRIMARY KEY (id);
--
-- Name: task_qc_questions task_qc_questions_pkey; Type: CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.task_qc_questions
ADD CONSTRAINT task_qc_questions_pkey PRIMARY KEY (id);
--
-- Name: task_qc_results task_qc_results_pkey; Type: CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.task_qc_results
ADD CONSTRAINT task_qc_results_pkey PRIMARY KEY (id);
--
-- Name: task_refs task_refs_pkey; Type: CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.task_refs
ADD CONSTRAINT task_refs_pkey PRIMARY KEY (id);
--
-- Name: task_relations task_relations_pkey; Type: CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.task_relations
ADD CONSTRAINT task_relations_pkey PRIMARY KEY (id);
--
-- Name: tasks tasks_pkey; Type: CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.tasks
ADD CONSTRAINT tasks_pkey PRIMARY KEY (id);
--
-- Name: project_members uq_project_member; Type: CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.project_members
ADD CONSTRAINT uq_project_member UNIQUE (project_id, user_id);
--
-- Name: task_relations uq_task_relations_pair; Type: CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.task_relations
ADD CONSTRAINT uq_task_relations_pair UNIQUE (from_task_id, to_task_id);
--
-- Name: webhook_deliveries webhook_deliveries_pkey; Type: CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.webhook_deliveries
ADD CONSTRAINT webhook_deliveries_pkey PRIMARY KEY (id);
--
-- Name: ix_defects_task; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_defects_task ON public.defects USING btree (task_op_wp_id);
--
-- Name: ix_defects_task_id; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_defects_task_id ON public.defects USING btree (task_id);
--
-- Name: ix_material_requirements_erp_material_id; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_material_requirements_erp_material_id ON public.material_requirements USING btree (erp_material_id);
--
-- Name: ix_material_requirements_task_id; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_material_requirements_task_id ON public.material_requirements USING btree (task_id);
--
-- Name: ix_material_requirements_task_op_wp_id; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_material_requirements_task_op_wp_id ON public.material_requirements USING btree (task_op_wp_id);
--
-- Name: ix_milestones_project; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_milestones_project ON public.milestones USING btree (project_id);
--
-- Name: ix_milestones_project_id; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_milestones_project_id ON public.milestones USING btree (project_id);
--
-- Name: ix_pm_users_username; Type: INDEX; Schema: public; Owner: pm
--
CREATE UNIQUE INDEX ix_pm_users_username ON public.pm_users USING btree (username);
--
-- Name: ix_project_assignments_op_project_id; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_project_assignments_op_project_id ON public.project_assignments USING btree (op_project_id);
--
-- Name: ix_project_assignments_project_id; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_project_assignments_project_id ON public.project_assignments USING btree (project_id);
--
-- Name: ix_project_assignments_user_id; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_project_assignments_user_id ON public.project_assignments USING btree (user_id);
--
-- Name: ix_project_members_project_id; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_project_members_project_id ON public.project_members USING btree (project_id);
--
-- Name: ix_project_members_user_id; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_project_members_user_id ON public.project_members USING btree (user_id);
--
-- Name: ix_projects_cache_op_project_id; Type: INDEX; Schema: public; Owner: pm
--
CREATE UNIQUE INDEX ix_projects_cache_op_project_id ON public.projects_cache USING btree (op_project_id);
--
-- Name: ix_projects_code; Type: INDEX; Schema: public; Owner: pm
--
CREATE UNIQUE INDEX ix_projects_code ON public.projects USING btree (code);
--
-- Name: ix_projects_legacy_op_project_id; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_projects_legacy_op_project_id ON public.projects USING btree (legacy_op_project_id);
--
-- Name: ix_projects_name; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_projects_name ON public.projects USING btree (name);
--
-- Name: ix_projects_status; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_projects_status ON public.projects USING btree (status);
--
-- Name: ix_purchase_requests_erp_material_id; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_purchase_requests_erp_material_id ON public.purchase_requests USING btree (erp_material_id);
--
-- Name: ix_purchase_requests_op_project_id; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_purchase_requests_op_project_id ON public.purchase_requests USING btree (op_project_id);
--
-- Name: ix_purchase_requests_project_id; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_purchase_requests_project_id ON public.purchase_requests USING btree (project_id);
--
-- Name: ix_purchase_requests_task_id; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_purchase_requests_task_id ON public.purchase_requests USING btree (task_id);
--
-- Name: ix_qc_questions_template_id; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_qc_questions_template_id ON public.qc_questions USING btree (template_id);
--
-- Name: ix_qc_templates_activity_type; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_qc_templates_activity_type ON public.qc_templates USING btree (activity_type);
--
-- Name: ix_reservations_erp_material_id; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_reservations_erp_material_id ON public.reservations USING btree (erp_material_id);
--
-- Name: ix_reservations_task_id; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_reservations_task_id ON public.reservations USING btree (task_id);
--
-- Name: ix_reservations_task_op_wp_id; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_reservations_task_op_wp_id ON public.reservations USING btree (task_op_wp_id);
--
-- Name: ix_sync_events_op_wp_id; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_sync_events_op_wp_id ON public.sync_events USING btree (op_wp_id);
--
-- Name: ix_sync_events_status; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_sync_events_status ON public.sync_events USING btree (status);
--
-- Name: ix_task_qc_def_task; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_task_qc_def_task ON public.task_qc_definitions USING btree (task_op_wp_id);
--
-- Name: ix_task_qc_definitions_task_id; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_task_qc_definitions_task_id ON public.task_qc_definitions USING btree (task_id);
--
-- Name: ix_task_qc_q_def; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_task_qc_q_def ON public.task_qc_questions USING btree (definition_id);
--
-- Name: ix_task_qc_res_q; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_task_qc_res_q ON public.task_qc_results USING btree (question_id);
--
-- Name: ix_task_refs_op_wp_id; Type: INDEX; Schema: public; Owner: pm
--
CREATE UNIQUE INDEX ix_task_refs_op_wp_id ON public.task_refs USING btree (op_wp_id);
--
-- Name: ix_task_refs_project; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_task_refs_project ON public.task_refs USING btree (op_project_id);
--
-- Name: ix_task_relations_from; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_task_relations_from ON public.task_relations USING btree (from_task_id);
--
-- Name: ix_task_relations_from_task_id; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_task_relations_from_task_id ON public.task_relations USING btree (from_task_id);
--
-- Name: ix_task_relations_project; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_task_relations_project ON public.task_relations USING btree (project_id);
--
-- Name: ix_task_relations_project_id; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_task_relations_project_id ON public.task_relations USING btree (project_id);
--
-- Name: ix_task_relations_to; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_task_relations_to ON public.task_relations USING btree (to_task_id);
--
-- Name: ix_task_relations_to_task_id; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_task_relations_to_task_id ON public.task_relations USING btree (to_task_id);
--
-- Name: ix_tasks_legacy_op_wp_id; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_tasks_legacy_op_wp_id ON public.tasks USING btree (legacy_op_wp_id);
--
-- Name: ix_tasks_parent; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_tasks_parent ON public.tasks USING btree (parent_id);
--
-- Name: ix_tasks_parent_id; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_tasks_parent_id ON public.tasks USING btree (parent_id);
--
-- Name: ix_tasks_project; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_tasks_project ON public.tasks USING btree (project_id);
--
-- Name: ix_tasks_project_id; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_tasks_project_id ON public.tasks USING btree (project_id);
--
-- Name: ix_tasks_status; Type: INDEX; Schema: public; Owner: pm
--
CREATE INDEX ix_tasks_status ON public.tasks USING btree (status);
--
-- Name: ix_webhook_deliveries_delivery_id; Type: INDEX; Schema: public; Owner: pm
--
CREATE UNIQUE INDEX ix_webhook_deliveries_delivery_id ON public.webhook_deliveries USING btree (delivery_id);
--
-- Name: defects defects_question_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.defects
ADD CONSTRAINT defects_question_id_fkey FOREIGN KEY (question_id) REFERENCES public.task_qc_questions(id) ON DELETE SET NULL;
--
-- Name: defects defects_task_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.defects
ADD CONSTRAINT defects_task_id_fkey FOREIGN KEY (task_id) REFERENCES public.tasks(id) ON DELETE CASCADE;
--
-- Name: material_requirements material_requirements_task_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.material_requirements
ADD CONSTRAINT material_requirements_task_id_fkey FOREIGN KEY (task_id) REFERENCES public.tasks(id) ON DELETE CASCADE;
--
-- Name: milestones milestones_project_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.milestones
ADD CONSTRAINT milestones_project_id_fkey FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE;
--
-- Name: project_assignments project_assignments_project_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.project_assignments
ADD CONSTRAINT project_assignments_project_id_fkey FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE;
--
-- Name: project_assignments project_assignments_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.project_assignments
ADD CONSTRAINT project_assignments_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.pm_users(id) ON DELETE CASCADE;
--
-- Name: project_members project_members_project_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.project_members
ADD CONSTRAINT project_members_project_id_fkey FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE;
--
-- Name: project_members project_members_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.project_members
ADD CONSTRAINT project_members_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.pm_users(id) ON DELETE CASCADE;
--
-- Name: purchase_requests purchase_requests_project_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.purchase_requests
ADD CONSTRAINT purchase_requests_project_id_fkey FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE;
--
-- Name: purchase_requests purchase_requests_task_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.purchase_requests
ADD CONSTRAINT purchase_requests_task_id_fkey FOREIGN KEY (task_id) REFERENCES public.tasks(id) ON DELETE SET NULL;
--
-- Name: qc_questions qc_questions_template_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.qc_questions
ADD CONSTRAINT qc_questions_template_id_fkey FOREIGN KEY (template_id) REFERENCES public.qc_templates(id) ON DELETE CASCADE;
--
-- Name: reservations reservations_task_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.reservations
ADD CONSTRAINT reservations_task_id_fkey FOREIGN KEY (task_id) REFERENCES public.tasks(id) ON DELETE CASCADE;
--
-- Name: task_qc_definitions task_qc_definitions_source_template_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.task_qc_definitions
ADD CONSTRAINT task_qc_definitions_source_template_id_fkey FOREIGN KEY (source_template_id) REFERENCES public.qc_templates(id) ON DELETE SET NULL;
--
-- Name: task_qc_definitions task_qc_definitions_task_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.task_qc_definitions
ADD CONSTRAINT task_qc_definitions_task_id_fkey FOREIGN KEY (task_id) REFERENCES public.tasks(id) ON DELETE CASCADE;
--
-- Name: task_qc_questions task_qc_questions_definition_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.task_qc_questions
ADD CONSTRAINT task_qc_questions_definition_id_fkey FOREIGN KEY (definition_id) REFERENCES public.task_qc_definitions(id) ON DELETE CASCADE;
--
-- Name: task_qc_results task_qc_results_question_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.task_qc_results
ADD CONSTRAINT task_qc_results_question_id_fkey FOREIGN KEY (question_id) REFERENCES public.task_qc_questions(id) ON DELETE CASCADE;
--
-- Name: task_relations task_relations_from_task_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.task_relations
ADD CONSTRAINT task_relations_from_task_id_fkey FOREIGN KEY (from_task_id) REFERENCES public.tasks(id) ON DELETE CASCADE;
--
-- Name: task_relations task_relations_project_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.task_relations
ADD CONSTRAINT task_relations_project_id_fkey FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE;
--
-- Name: task_relations task_relations_to_task_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.task_relations
ADD CONSTRAINT task_relations_to_task_id_fkey FOREIGN KEY (to_task_id) REFERENCES public.tasks(id) ON DELETE CASCADE;
--
-- Name: tasks tasks_assignee_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.tasks
ADD CONSTRAINT tasks_assignee_id_fkey FOREIGN KEY (assignee_id) REFERENCES public.pm_users(id) ON DELETE SET NULL;
--
-- Name: tasks tasks_parent_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.tasks
ADD CONSTRAINT tasks_parent_id_fkey FOREIGN KEY (parent_id) REFERENCES public.tasks(id) ON DELETE CASCADE;
--
-- Name: tasks tasks_project_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: pm
--
ALTER TABLE ONLY public.tasks
ADD CONSTRAINT tasks_project_id_fkey FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE;
--
-- PostgreSQL database dump complete
--
\unrestrict kNuninakYWLtRtYcUJzHdw8CZSFPdYi5ZBqLn8ENeY0KU4rYnMaZYuMvko6cgtg