Files
dolthub--doltgresql/testing/dumps/sql/julesd7_collatask.sql
T
2026-07-13 12:32:25 +08:00

457 lines
12 KiB
PL/PgSQL

-- Downloaded from: https://github.com/julesd7/collatask/blob/659e477af286721943425883fd618038bfa94ea9/structure.sql
--
-- PostgreSQL database dump
--
-- Dumped from database version 16.4
-- Dumped by pg_dump version 16.8 (Homebrew)
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: assign_user_to_project(integer, integer, character varying); Type: FUNCTION; Schema: public; Owner: -
--
CREATE FUNCTION public.assign_user_to_project(p_user_id integer, p_project_id integer, p_role character varying DEFAULT 'member'::character varying) RETURNS void
LANGUAGE plpgsql
AS $$
BEGIN
INSERT INTO project_assignments (user_id, project_id, role)
VALUES (p_user_id, p_project_id, p_role)
ON CONFLICT (user_id, project_id) DO NOTHING; -- Ignore si l'utilisateur est déjà assigné
END;
$$;
--
-- Name: create_default_boards(); Type: FUNCTION; Schema: public; Owner: -
--
CREATE FUNCTION public.create_default_boards() RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
INSERT INTO boards (project_id, title) VALUES (NEW.id, 'To Do');
INSERT INTO boards (project_id, title) VALUES (NEW.id, 'In Progress');
INSERT INTO boards (project_id, title) VALUES (NEW.id, 'Completed');
RETURN NEW;
END;
$$;
--
-- Name: set_deleted_user(); Type: FUNCTION; Schema: public; Owner: -
--
CREATE FUNCTION public.set_deleted_user() RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
UPDATE messages
SET sender = 'DeletedUser'
WHERE sender = OLD.username;
RETURN OLD;
END;
$$;
--
-- Name: update_board_timestamp(); Type: FUNCTION; Schema: public; Owner: -
--
CREATE FUNCTION public.update_board_timestamp() RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
NEW.updated_at = CURRENT_TIMESTAMP; -- Met à jour le champ updated_at à l'heure actuelle
RETURN NEW;
END;
$$;
--
-- Name: update_card_last_change(); Type: FUNCTION; Schema: public; Owner: -
--
CREATE FUNCTION public.update_card_last_change() RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
NEW.last_change = CURRENT_TIMESTAMP; -- Met à jour le champ last_change à l'heure actuelle
RETURN NEW;
END;
$$;
--
-- Name: update_project_timestamp(); Type: FUNCTION; Schema: public; Owner: -
--
CREATE FUNCTION public.update_project_timestamp() RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
UPDATE projects
SET updated_at = CURRENT_TIMESTAMP
WHERE id = NEW.project_id;
RETURN NEW;
END;
$$;
--
-- Name: update_task_timestamp(); Type: FUNCTION; Schema: public; Owner: -
--
CREATE FUNCTION public.update_task_timestamp() RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
NEW.updated_at = CURRENT_TIMESTAMP; -- Met à jour le champ updated_at à l'heure actuelle
RETURN NEW;
END;
$$;
--
-- Name: update_timestamp(); Type: FUNCTION; Schema: public; Owner: -
--
CREATE FUNCTION public.update_timestamp() RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
NEW.updated_at = CURRENT_TIMESTAMP; -- Met à jour le champ updated_at à l'heure actuelle
RETURN NEW;
END;
$$;
--
-- Name: update_updated_at(); Type: FUNCTION; Schema: public; Owner: -
--
CREATE FUNCTION public.update_updated_at() RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
NEW.updated_at = CURRENT_TIMESTAMP;
RETURN NEW;
END;
$$;
SET default_tablespace = '';
SET default_table_access_method = heap;
--
-- Name: boards; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.boards (
id uuid DEFAULT gen_random_uuid() NOT NULL,
created_at timestamp without time zone DEFAULT CURRENT_TIMESTAMP,
updated_at timestamp without time zone DEFAULT CURRENT_TIMESTAMP,
title character varying(255),
project_id uuid
);
--
-- Name: cards; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.cards (
id uuid DEFAULT gen_random_uuid() NOT NULL,
title character varying(100) NOT NULL,
description text,
start_date date,
end_date date,
last_change timestamp without time zone DEFAULT CURRENT_TIMESTAMP,
board_id uuid,
project_id uuid,
assignees_ids uuid[],
priority character varying(2),
CONSTRAINT cards_priority_check CHECK (((priority)::text = ANY ((ARRAY['P0'::character varying, 'P1'::character varying, 'P2'::character varying, 'P3'::character varying])::text[])))
);
--
-- Name: cards_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.cards_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: messages; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.messages (
id uuid DEFAULT gen_random_uuid() NOT NULL,
message text NOT NULL,
created_at timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
room uuid NOT NULL,
sender text NOT NULL
);
--
-- Name: project_assignments; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.project_assignments (
id uuid DEFAULT gen_random_uuid() NOT NULL,
role character varying(20) DEFAULT 'viewer'::character varying,
created_at timestamp without time zone DEFAULT CURRENT_TIMESTAMP,
updated_at timestamp without time zone DEFAULT CURRENT_TIMESTAMP,
user_id uuid NOT NULL,
project_id uuid NOT NULL
);
--
-- Name: projects; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.projects (
id uuid DEFAULT gen_random_uuid() NOT NULL,
title character varying(100) NOT NULL,
description text,
created_at timestamp without time zone DEFAULT CURRENT_TIMESTAMP,
updated_at timestamp without time zone DEFAULT CURRENT_TIMESTAMP,
owner_id uuid
);
--
-- Name: tasks; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.tasks (
id uuid DEFAULT gen_random_uuid() NOT NULL,
title character varying(100) NOT NULL,
description text,
status character varying(20) DEFAULT 'pending'::character varying,
board_id integer NOT NULL,
assigned_to integer,
created_at timestamp without time zone DEFAULT CURRENT_TIMESTAMP,
updated_at timestamp without time zone DEFAULT CURRENT_TIMESTAMP
);
--
-- Name: users; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.users (
id uuid DEFAULT gen_random_uuid() NOT NULL,
username character varying(50) NOT NULL,
email character varying(100) NOT NULL,
password character varying(255),
created_at timestamp without time zone DEFAULT CURRENT_TIMESTAMP,
verified boolean DEFAULT false,
verification_token character varying(255),
reset_token character varying(255),
last_connection timestamp without time zone DEFAULT CURRENT_TIMESTAMP
);
--
-- Name: boards boards_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.boards
ADD CONSTRAINT boards_pkey PRIMARY KEY (id);
--
-- Name: cards cards_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.cards
ADD CONSTRAINT cards_pkey PRIMARY KEY (id);
--
-- Name: project_assignments project_assignments_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.project_assignments
ADD CONSTRAINT project_assignments_pkey PRIMARY KEY (id);
--
-- Name: projects projects_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.projects
ADD CONSTRAINT projects_pkey PRIMARY KEY (id);
--
-- Name: tasks tasks_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.tasks
ADD CONSTRAINT tasks_pkey PRIMARY KEY (id);
--
-- Name: users users_email_key; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.users
ADD CONSTRAINT users_email_key UNIQUE (email);
--
-- Name: users users_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.users
ADD CONSTRAINT users_pkey PRIMARY KEY (id);
--
-- Name: users users_username_key; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.users
ADD CONSTRAINT users_username_key UNIQUE (username);
--
-- Name: project_assignments set_updated_at; Type: TRIGGER; Schema: public; Owner: -
--
CREATE TRIGGER set_updated_at BEFORE UPDATE ON public.project_assignments FOR EACH ROW EXECUTE FUNCTION public.update_updated_at();
--
-- Name: projects trigger_create_default_boards; Type: TRIGGER; Schema: public; Owner: -
--
CREATE TRIGGER trigger_create_default_boards AFTER INSERT ON public.projects FOR EACH ROW EXECUTE FUNCTION public.create_default_boards();
--
-- Name: boards trigger_update_board_timestamp; Type: TRIGGER; Schema: public; Owner: -
--
CREATE TRIGGER trigger_update_board_timestamp BEFORE UPDATE ON public.boards FOR EACH ROW EXECUTE FUNCTION public.update_board_timestamp();
--
-- Name: cards trigger_update_card_last_change; Type: TRIGGER; Schema: public; Owner: -
--
CREATE TRIGGER trigger_update_card_last_change BEFORE UPDATE ON public.cards FOR EACH ROW EXECUTE FUNCTION public.update_card_last_change();
--
-- Name: boards trigger_update_project_on_board_change; Type: TRIGGER; Schema: public; Owner: -
--
CREATE TRIGGER trigger_update_project_on_board_change AFTER INSERT OR DELETE OR UPDATE ON public.boards FOR EACH ROW EXECUTE FUNCTION public.update_project_timestamp();
--
-- Name: cards trigger_update_project_on_card_change; Type: TRIGGER; Schema: public; Owner: -
--
CREATE TRIGGER trigger_update_project_on_card_change AFTER INSERT OR DELETE OR UPDATE ON public.cards FOR EACH ROW EXECUTE FUNCTION public.update_project_timestamp();
--
-- Name: tasks trigger_update_task_timestamp; Type: TRIGGER; Schema: public; Owner: -
--
CREATE TRIGGER trigger_update_task_timestamp BEFORE UPDATE ON public.tasks FOR EACH ROW EXECUTE FUNCTION public.update_task_timestamp();
--
-- Name: users user_deletion_trigger; Type: TRIGGER; Schema: public; Owner: -
--
CREATE TRIGGER user_deletion_trigger BEFORE DELETE ON public.users FOR EACH ROW EXECUTE FUNCTION public.set_deleted_user();
--
-- Name: cards fk_board_id; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.cards
ADD CONSTRAINT fk_board_id FOREIGN KEY (board_id) REFERENCES public.boards(id) ON DELETE CASCADE;
--
-- Name: projects fk_owner_id; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.projects
ADD CONSTRAINT fk_owner_id FOREIGN KEY (owner_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- Name: project_assignments fk_project; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.project_assignments
ADD CONSTRAINT fk_project FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE;
--
-- Name: project_assignments fk_project_id; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.project_assignments
ADD CONSTRAINT fk_project_id FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE;
--
-- Name: boards fk_project_id; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.boards
ADD CONSTRAINT fk_project_id FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE;
--
-- Name: cards fk_project_id; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.cards
ADD CONSTRAINT fk_project_id FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE;
--
-- Name: project_assignments fk_user; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.project_assignments
ADD CONSTRAINT fk_user FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- PostgreSQL database dump complete
--