\restrict dbmate -- Dumped from database version 18.3 -- Dumped by pg_dump version 18.6 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; SET default_tablespace = ''; SET default_table_access_method = heap; -- -- Name: course_files; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.course_files ( id integer CONSTRAINT lecture_notes_id_not_null NOT NULL, course_id integer CONSTRAINT lecture_notes_course_id_not_null NOT NULL, name text CONSTRAINT lecture_notes_title_not_null NOT NULL, has_pdf boolean DEFAULT false CONSTRAINT lecture_notes_has_pdf_not_null NOT NULL, created_at timestamp with time zone DEFAULT now() CONSTRAINT lecture_notes_created_at_not_null NOT NULL, updated_at timestamp with time zone DEFAULT now() CONSTRAINT lecture_notes_updated_at_not_null NOT NULL, kind text NOT NULL, CONSTRAINT course_files_kind_check CHECK ((kind = ANY (ARRAY['note'::text, 'upload'::text]))) ); -- -- Name: course_files_id_seq; Type: SEQUENCE; Schema: public; Owner: - -- CREATE SEQUENCE public.course_files_id_seq AS integer START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; -- -- Name: course_files_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - -- ALTER SEQUENCE public.course_files_id_seq OWNED BY public.course_files.id; -- -- Name: courses; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.courses ( id integer NOT NULL, name text NOT NULL, code text, teachers text[] DEFAULT '{}'::text[] NOT NULL, main_page_url text ); -- -- Name: courses_id_seq; Type: SEQUENCE; Schema: public; Owner: - -- CREATE SEQUENCE public.courses_id_seq AS integer START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; -- -- Name: courses_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - -- ALTER SEQUENCE public.courses_id_seq OWNED BY public.courses.id; -- -- Name: file_tags; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.file_tags ( file_id integer NOT NULL, tag_id integer NOT NULL ); -- -- Name: grades; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.grades ( id integer NOT NULL, course_id integer NOT NULL, name text NOT NULL, score double precision NOT NULL, max_score double precision NOT NULL, weight double precision NOT NULL, CONSTRAINT grades_check CHECK ((score <= max_score)), CONSTRAINT grades_max_score_check CHECK ((max_score > (0)::double precision)), CONSTRAINT grades_score_check CHECK ((score >= (0)::double precision)), CONSTRAINT grades_weight_check CHECK ((weight > (0)::double precision)) ); -- -- Name: grades_id_seq; Type: SEQUENCE; Schema: public; Owner: - -- CREATE SEQUENCE public.grades_id_seq AS integer START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; -- -- Name: grades_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - -- ALTER SEQUENCE public.grades_id_seq OWNED BY public.grades.id; -- -- Name: schema_migrations; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.schema_migrations ( version character varying NOT NULL ); -- -- Name: tags; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.tags ( id integer CONSTRAINT slot_tags_id_not_null NOT NULL, name jsonb CONSTRAINT slot_tags_name_not_null NOT NULL, color text CONSTRAINT slot_tags_color_not_null NOT NULL, scopes text[] DEFAULT '{}'::text[] NOT NULL, slug text, CONSTRAINT tags_scopes_check CHECK ((scopes <@ ARRAY['slot'::text, 'task'::text, 'file'::text])) ); -- -- Name: tags_id_seq; Type: SEQUENCE; Schema: public; Owner: - -- CREATE SEQUENCE public.tags_id_seq AS integer START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; -- -- Name: tags_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - -- ALTER SEQUENCE public.tags_id_seq OWNED BY public.tags.id; -- -- Name: task_tags; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.task_tags ( task_id integer NOT NULL, tag_id integer NOT NULL ); -- -- Name: tasks; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.tasks ( id integer NOT NULL, course_id integer NOT NULL, parent_id integer, name text NOT NULL, description text, links text[] DEFAULT '{}'::text[] NOT NULL, deadline timestamp with time zone, done boolean DEFAULT false NOT NULL ); -- -- Name: tasks_id_seq; Type: SEQUENCE; Schema: public; Owner: - -- CREATE SEQUENCE public.tasks_id_seq AS integer START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; -- -- Name: tasks_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - -- ALTER SEQUENCE public.tasks_id_seq OWNED BY public.tasks.id; -- -- Name: time_slots; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.time_slots ( id integer NOT NULL, course_id integer NOT NULL, tag_id integer NOT NULL, weekday smallint NOT NULL, start_time time without time zone NOT NULL, end_time time without time zone NOT NULL, CONSTRAINT time_slots_check CHECK ((start_time < end_time)), CONSTRAINT time_slots_weekday_check CHECK (((weekday >= 1) AND (weekday <= 7))) ); -- -- Name: time_slots_id_seq; Type: SEQUENCE; Schema: public; Owner: - -- CREATE SEQUENCE public.time_slots_id_seq AS integer START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; -- -- Name: time_slots_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - -- ALTER SEQUENCE public.time_slots_id_seq OWNED BY public.time_slots.id; -- -- Name: course_files id; Type: DEFAULT; Schema: public; Owner: - -- ALTER TABLE ONLY public.course_files ALTER COLUMN id SET DEFAULT nextval('public.course_files_id_seq'::regclass); -- -- Name: courses id; Type: DEFAULT; Schema: public; Owner: - -- ALTER TABLE ONLY public.courses ALTER COLUMN id SET DEFAULT nextval('public.courses_id_seq'::regclass); -- -- Name: grades id; Type: DEFAULT; Schema: public; Owner: - -- ALTER TABLE ONLY public.grades ALTER COLUMN id SET DEFAULT nextval('public.grades_id_seq'::regclass); -- -- Name: tags id; Type: DEFAULT; Schema: public; Owner: - -- ALTER TABLE ONLY public.tags ALTER COLUMN id SET DEFAULT nextval('public.tags_id_seq'::regclass); -- -- Name: tasks id; Type: DEFAULT; Schema: public; Owner: - -- ALTER TABLE ONLY public.tasks ALTER COLUMN id SET DEFAULT nextval('public.tasks_id_seq'::regclass); -- -- Name: time_slots id; Type: DEFAULT; Schema: public; Owner: - -- ALTER TABLE ONLY public.time_slots ALTER COLUMN id SET DEFAULT nextval('public.time_slots_id_seq'::regclass); -- -- Name: course_files course_files_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.course_files ADD CONSTRAINT course_files_pkey PRIMARY KEY (id); -- -- Name: courses courses_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.courses ADD CONSTRAINT courses_pkey PRIMARY KEY (id); -- -- Name: file_tags file_tags_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.file_tags ADD CONSTRAINT file_tags_pkey PRIMARY KEY (file_id, tag_id); -- -- Name: grades grades_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.grades ADD CONSTRAINT grades_pkey PRIMARY KEY (id); -- -- Name: schema_migrations schema_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.schema_migrations ADD CONSTRAINT schema_migrations_pkey PRIMARY KEY (version); -- -- Name: tags tags_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.tags ADD CONSTRAINT tags_pkey PRIMARY KEY (id); -- -- Name: tags tags_slug_key; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.tags ADD CONSTRAINT tags_slug_key UNIQUE (slug); -- -- Name: task_tags task_tags_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.task_tags ADD CONSTRAINT task_tags_pkey PRIMARY KEY (task_id, tag_id); -- -- Name: tasks tasks_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.tasks ADD CONSTRAINT tasks_pkey PRIMARY KEY (id); -- -- Name: time_slots time_slots_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.time_slots ADD CONSTRAINT time_slots_pkey PRIMARY KEY (id); -- -- Name: course_files_course_id_idx; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX course_files_course_id_idx ON public.course_files USING btree (course_id); -- -- Name: grades_course_id_idx; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX grades_course_id_idx ON public.grades USING btree (course_id); -- -- Name: tasks_course_id_idx; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX tasks_course_id_idx ON public.tasks USING btree (course_id); -- -- Name: time_slots_course_id_idx; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX time_slots_course_id_idx ON public.time_slots USING btree (course_id); -- -- Name: course_files course_files_course_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.course_files ADD CONSTRAINT course_files_course_id_fkey FOREIGN KEY (course_id) REFERENCES public.courses(id) ON DELETE CASCADE; -- -- Name: file_tags file_tags_file_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.file_tags ADD CONSTRAINT file_tags_file_id_fkey FOREIGN KEY (file_id) REFERENCES public.course_files(id) ON DELETE CASCADE; -- -- Name: file_tags file_tags_tag_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.file_tags ADD CONSTRAINT file_tags_tag_id_fkey FOREIGN KEY (tag_id) REFERENCES public.tags(id) ON DELETE CASCADE; -- -- Name: grades grades_course_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.grades ADD CONSTRAINT grades_course_id_fkey FOREIGN KEY (course_id) REFERENCES public.courses(id) ON DELETE CASCADE; -- -- Name: task_tags task_tags_tag_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.task_tags ADD CONSTRAINT task_tags_tag_id_fkey FOREIGN KEY (tag_id) REFERENCES public.tags(id) ON DELETE CASCADE; -- -- Name: task_tags task_tags_task_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.task_tags ADD CONSTRAINT task_tags_task_id_fkey FOREIGN KEY (task_id) REFERENCES public.tasks(id) ON DELETE CASCADE; -- -- Name: tasks tasks_course_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.tasks ADD CONSTRAINT tasks_course_id_fkey FOREIGN KEY (course_id) REFERENCES public.courses(id) ON DELETE CASCADE; -- -- Name: tasks tasks_parent_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.tasks ADD CONSTRAINT tasks_parent_id_fkey FOREIGN KEY (parent_id) REFERENCES public.tasks(id) ON DELETE CASCADE; -- -- Name: time_slots time_slots_course_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.time_slots ADD CONSTRAINT time_slots_course_id_fkey FOREIGN KEY (course_id) REFERENCES public.courses(id) ON DELETE CASCADE; -- -- Name: time_slots time_slots_tag_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.time_slots ADD CONSTRAINT time_slots_tag_id_fkey FOREIGN KEY (tag_id) REFERENCES public.tags(id); -- -- PostgreSQL database dump complete -- \unrestrict dbmate -- -- Dbmate schema migrations -- INSERT INTO public.schema_migrations (version) VALUES ('20260928120000'), ('20260928150000'), ('20260929090000');