-- Downloaded from: https://github.com/Vanesor/zenith/blob/c6e7ebf9e6e71af74a410b62b344105c301743a2/schema_new.sql -- -- PostgreSQL database dump -- -- Dumped from database version 14.18 (Ubuntu 14.18-0ubuntu0.22.04.1) -- Dumped by pg_dump version 14.18 (Ubuntu 14.18-0ubuntu0.22.04.1) 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: 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: uuid-ossp; Type: EXTENSION; Schema: -; Owner: - -- CREATE EXTENSION IF NOT EXISTS "uuid-ossp" WITH SCHEMA public; -- -- Name: EXTENSION "uuid-ossp"; Type: COMMENT; Schema: -; Owner: - -- COMMENT ON EXTENSION "uuid-ossp" IS 'generate universally unique identifiers (UUIDs)'; -- -- Name: generate_task_key(); Type: FUNCTION; Schema: public; Owner: - -- CREATE FUNCTION public.generate_task_key() RETURNS trigger LANGUAGE plpgsql AS $_$ DECLARE project_key_val text; next_number integer; BEGIN -- Get project key SELECT project_key INTO project_key_val FROM projects WHERE id = NEW.project_id; -- Get next task number for this project SELECT COALESCE(MAX(CAST(SUBSTRING(task_key FROM '[0-9]+$') AS integer)), 0) + 1 INTO next_number FROM tasks WHERE project_id = NEW.project_id; -- Generate the task key NEW.task_key := project_key_val || '-' || next_number; RETURN NEW; END; $_$; -- -- Name: update_post_search_vector(); Type: FUNCTION; Schema: public; Owner: - -- CREATE FUNCTION public.update_post_search_vector() RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN NEW.search_vector := to_tsvector('english', COALESCE(NEW.title, '') || ' ' || COALESCE(NEW.content, '') || ' ' || COALESCE(NEW.excerpt, '') || ' ' || COALESCE(array_to_string(NEW.tags, ' '), '') ); RETURN NEW; END; $$; -- -- Name: update_project_progress(); Type: FUNCTION; Schema: public; Owner: - -- CREATE FUNCTION public.update_project_progress() RETURNS trigger LANGUAGE plpgsql AS $$ DECLARE total_tasks_count integer; completed_tasks_count integer; progress_pct numeric; BEGIN -- Count total and completed tasks for the project SELECT COUNT(*) as total, COUNT(*) FILTER (WHERE is_completed = true) as completed INTO total_tasks_count, completed_tasks_count FROM tasks WHERE project_id = COALESCE(NEW.project_id, OLD.project_id); -- Calculate progress percentage IF total_tasks_count > 0 THEN progress_pct := (completed_tasks_count::numeric / total_tasks_count::numeric) * 100; ELSE progress_pct := 0; END IF; -- Update project UPDATE projects SET total_tasks = total_tasks_count, completed_tasks = completed_tasks_count, progress_percentage = progress_pct, updated_at = CURRENT_TIMESTAMP WHERE id = COALESCE(NEW.project_id, OLD.project_id); RETURN COALESCE(NEW, OLD); END; $$; -- -- Name: update_updated_at_column(); Type: FUNCTION; Schema: public; Owner: - -- CREATE FUNCTION public.update_updated_at_column() RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN NEW.updated_at = CURRENT_TIMESTAMP; RETURN NEW; END; $$; SET default_tablespace = ''; SET default_table_access_method = heap; -- -- Name: ai_assignment_generations; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.ai_assignment_generations ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, template_id uuid, generated_assignment_id uuid, source_file_url text NOT NULL, generation_prompt text, ai_model_used character varying, generation_status character varying DEFAULT 'pending'::character varying, questions_extracted integer DEFAULT 0, questions_created integer DEFAULT 0, processing_log jsonb DEFAULT '[]'::jsonb, error_details text, generated_by uuid, created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, completed_at timestamp with time zone ); -- -- Name: announcements; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.announcements ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, title character varying NOT NULL, content text NOT NULL, author_id uuid, club_id character varying, priority character varying DEFAULT 'normal'::character varying, expires_at timestamp with time zone, created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, updated_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP ); -- -- Name: assignment_attempts; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.assignment_attempts ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, assignment_id uuid NOT NULL, user_id uuid NOT NULL, attempt_number integer DEFAULT 1 NOT NULL, start_time timestamp with time zone DEFAULT CURRENT_TIMESTAMP, end_time timestamp with time zone, time_spent integer DEFAULT 0, score integer DEFAULT 0, max_score integer DEFAULT 0, percentage numeric DEFAULT 0, is_passing boolean DEFAULT false, answers jsonb DEFAULT '{}'::jsonb, graded_answers jsonb DEFAULT '{}'::jsonb, violations jsonb DEFAULT '[]'::jsonb, status character varying DEFAULT 'in_progress'::character varying, submitted_at timestamp with time zone, created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, updated_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, is_fullscreen boolean DEFAULT false, auto_save_data jsonb DEFAULT '{}'::jsonb, window_violations integer DEFAULT 0, last_auto_save timestamp with time zone, browser_info jsonb DEFAULT '{}'::jsonb ); -- -- Name: assignment_audit_log; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.assignment_audit_log ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, assignment_id uuid NOT NULL, user_id uuid NOT NULL, attempt_id uuid, action character varying NOT NULL, details jsonb DEFAULT '{}'::jsonb, created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP ); -- -- Name: assignment_questions; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.assignment_questions ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, assignment_id uuid NOT NULL, question_text text NOT NULL, question_type character varying NOT NULL, marks integer DEFAULT 1 NOT NULL, time_limit integer, code_language character varying, code_template text, test_cases jsonb, expected_output text, solution text, ordering integer DEFAULT 0 NOT NULL, created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, updated_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, type character varying, title character varying, description text, options jsonb, correct_answer jsonb, points integer DEFAULT 1, question_order integer DEFAULT 0, starter_code text, integer_min numeric, integer_max numeric, integer_step numeric DEFAULT 1, explanation text, allowed_languages jsonb DEFAULT '[]'::jsonb, allow_any_language boolean DEFAULT false, question_image_url text, question_image_alt text, question_images jsonb DEFAULT '[]'::jsonb, answer_images jsonb DEFAULT '[]'::jsonb, CONSTRAINT assignment_questions_question_type_check CHECK (((question_type)::text = ANY (ARRAY[('single_choice'::character varying)::text, ('multiple_choice'::character varying)::text, ('multi_select'::character varying)::text, ('coding'::character varying)::text, ('essay'::character varying)::text, ('true_false'::character varying)::text, ('integer'::character varying)::text]))) ); -- -- Name: assignment_submissions; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.assignment_submissions ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, assignment_id uuid, user_id uuid, submission_text text, file_url text, submitted_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, status character varying DEFAULT 'submitted'::character varying, grade integer, feedback text, started_at timestamp with time zone, completed_at timestamp with time zone, violation_count integer DEFAULT 0, time_spent integer, auto_submitted boolean DEFAULT false, ip_address character varying, user_agent text, total_score integer DEFAULT 0 ); -- -- Name: assignment_templates; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.assignment_templates ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, name character varying NOT NULL, description text, template_file_url text NOT NULL, template_type character varying NOT NULL, category character varying, subject character varying, difficulty_level character varying, estimated_questions integer, created_by uuid, is_active boolean DEFAULT true, usage_count integer DEFAULT 0, metadata jsonb DEFAULT '{}'::jsonb, created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, updated_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP ); -- -- Name: assignment_violations; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.assignment_violations ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, submission_id uuid NOT NULL, violation_type character varying NOT NULL, occurred_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, details jsonb ); -- -- Name: assignments; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.assignments ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, title character varying NOT NULL, description text NOT NULL, club_id character varying, created_by uuid, due_date timestamp with time zone NOT NULL, max_points integer DEFAULT 100, instructions text, status character varying DEFAULT 'active'::character varying, created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, updated_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, assignment_type character varying DEFAULT 'regular'::character varying, target_audience character varying DEFAULT 'club'::character varying, target_clubs character varying[] DEFAULT '{}'::character varying[], time_limit integer, allow_navigation boolean DEFAULT true, passing_score integer DEFAULT 60, is_proctored boolean DEFAULT false, shuffle_questions boolean DEFAULT false, allow_calculator boolean DEFAULT true, show_results boolean DEFAULT true, allow_review boolean DEFAULT true, shuffle_options boolean DEFAULT false, max_attempts integer DEFAULT 1, is_published boolean DEFAULT false, coding_instructions text DEFAULT 'Write your code solution. Make sure to test your code thoroughly before submitting.'::text, objective_instructions text DEFAULT 'Choose the correct answer(s) for each question. For multi-select questions, you may choose multiple options.'::text, mixed_instructions text DEFAULT 'This assignment contains different types of questions. Read each question carefully and provide appropriate answers.'::text, essay_instructions text DEFAULT 'Provide detailed written responses to the essay questions. Ensure your answers are well-structured and comprehensive.'::text, require_fullscreen boolean DEFAULT false, auto_submit_on_violation boolean DEFAULT false, max_violations integer DEFAULT 3, code_editor_settings jsonb DEFAULT '{"theme": "vs-dark", "autoSave": true, "fontSize": 14, "wordWrap": true, "autoSaveInterval": 30000}'::jsonb, require_camera boolean DEFAULT false, require_microphone boolean DEFAULT false, require_face_verification boolean DEFAULT false, proctoring_settings jsonb DEFAULT '{}'::jsonb, start_date timestamp with time zone, start_time timestamp with time zone, CONSTRAINT assignments_assignment_type_check CHECK (((assignment_type)::text = ANY (ARRAY[('regular'::character varying)::text, ('objective'::character varying)::text, ('coding'::character varying)::text, ('essay'::character varying)::text]))), CONSTRAINT assignments_target_audience_check CHECK (((target_audience)::text = ANY (ARRAY[('club'::character varying)::text, ('all_clubs'::character varying)::text, ('specific_clubs'::character varying)::text]))) ); -- -- Name: audit_logs; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.audit_logs ( id uuid DEFAULT gen_random_uuid() NOT NULL, user_id uuid, action character varying NOT NULL, resource_type character varying NOT NULL, resource_id uuid, old_values jsonb, new_values jsonb, metadata jsonb DEFAULT '{}'::jsonb, ip_address inet, user_agent text, created_at timestamp with time zone DEFAULT now() ); -- -- Name: chat_attachments; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.chat_attachments ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, message_id uuid, room_id uuid NOT NULL, filename character varying NOT NULL, original_filename character varying NOT NULL, file_path character varying NOT NULL, file_type character varying NOT NULL, file_size integer NOT NULL, mime_type character varying, encryption_key text, created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP ); -- -- Name: chat_invitations; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.chat_invitations ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, room_id uuid NOT NULL, inviter_id uuid NOT NULL, invitee_email character varying NOT NULL, invitation_token character varying NOT NULL, message text, status character varying DEFAULT 'pending'::character varying, expires_at timestamp with time zone NOT NULL, created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, accepted_at timestamp with time zone ); -- -- Name: chat_messages; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.chat_messages ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, room_id uuid, user_id uuid, message text NOT NULL, message_type character varying DEFAULT 'text'::character varying, file_url text, created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, reply_to_message_id uuid, is_edited boolean DEFAULT false, reply_to uuid, sender_id uuid, content text, is_encrypted boolean DEFAULT false, updated_at timestamp with time zone, attachments jsonb DEFAULT '[]'::jsonb, message_images jsonb DEFAULT '[]'::jsonb, reactions jsonb DEFAULT '{}'::jsonb, thread_id uuid, edited_at timestamp with time zone, edited_by uuid, can_edit_until timestamp with time zone ); -- -- Name: chat_room_members; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.chat_room_members ( id uuid DEFAULT gen_random_uuid() NOT NULL, chat_room_id uuid, user_id uuid, joined_at timestamp with time zone DEFAULT now(), role character varying DEFAULT 'member'::character varying, user_email character varying ); -- -- Name: chat_rooms; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.chat_rooms ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, name character varying NOT NULL, description text, club_id character varying, type character varying DEFAULT 'public'::character varying, created_by uuid, members uuid[] DEFAULT '{}'::uuid[], created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, updated_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, room_type character varying DEFAULT 'public'::character varying, encryption_enabled boolean DEFAULT false, cover_image_url text, room_images jsonb DEFAULT '[]'::jsonb, room_settings jsonb DEFAULT '{}'::jsonb, profile_picture_url text, edited_at timestamp with time zone, edited_by uuid, CONSTRAINT chat_room_type_check CHECK (((type)::text = ANY ((ARRAY['public'::character varying, 'club'::character varying])::text[]))) ); -- -- Name: club_members; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.club_members ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, user_id uuid NOT NULL, club_id uuid NOT NULL, is_leader boolean DEFAULT false, joined_at timestamp with time zone DEFAULT now() ); -- -- Name: club_statistics_id_seq; Type: SEQUENCE; Schema: public; Owner: - -- CREATE SEQUENCE public.club_statistics_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; -- -- Name: club_statistics; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.club_statistics ( id integer DEFAULT nextval('public.club_statistics_id_seq'::regclass) NOT NULL, club_id character varying, member_count integer DEFAULT 0, event_count integer DEFAULT 0, assignment_count integer DEFAULT 0, comment_count integer DEFAULT 0, total_engagement integer DEFAULT 0, average_engagement numeric DEFAULT 0, last_updated timestamp with time zone DEFAULT now() ); -- -- Name: clubs; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.clubs ( id character varying NOT NULL, name character varying NOT NULL, type character varying NOT NULL, description text NOT NULL, long_description text, icon character varying NOT NULL, color character varying NOT NULL, coordinator_id uuid, co_coordinator_id uuid, secretary_id uuid, media_id uuid, guidelines text, meeting_schedule jsonb DEFAULT '{}'::jsonb, created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, updated_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, logo_url text, banner_image_url text, club_images jsonb DEFAULT '[]'::jsonb, member_count integer DEFAULT 0 ); -- -- Name: code_results; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.code_results ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, response_id uuid NOT NULL, test_case_index integer, passed boolean, stdout text, stderr text, execution_time integer, memory_used integer, created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP ); -- -- Name: coding_submissions; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.coding_submissions ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, question_response_id uuid NOT NULL, language character varying NOT NULL, code text NOT NULL, is_final boolean DEFAULT false, execution_result jsonb DEFAULT '{}'::jsonb, created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP ); -- -- Name: comments; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.comments ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, post_id uuid, author_id uuid, content text NOT NULL, parent_id uuid, likes_count integer DEFAULT 0, created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, updated_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP ); -- -- Name: committee_members; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.committee_members ( id uuid DEFAULT gen_random_uuid() NOT NULL, committee_id uuid NOT NULL, role_id uuid NOT NULL, user_id uuid NOT NULL, status character varying DEFAULT 'active'::character varying, joined_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, term_start timestamp with time zone, term_end timestamp with time zone, achievements jsonb, created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, updated_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP ); -- -- Name: committee_roles; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.committee_roles ( id uuid DEFAULT gen_random_uuid() NOT NULL, committee_id uuid NOT NULL, name character varying NOT NULL, description text, hierarchy integer DEFAULT 1 NOT NULL, permissions text[] DEFAULT '{}'::text[], created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, updated_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP ); -- -- Name: committees; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.committees ( id uuid DEFAULT gen_random_uuid() NOT NULL, name character varying NOT NULL, description text, hierarchy_level integer DEFAULT 1 NOT NULL, is_active boolean DEFAULT true, created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, updated_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP ); -- -- Name: discussion_replies; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.discussion_replies ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, discussion_id uuid, author_id uuid, content text NOT NULL, parent_id uuid, likes_count integer DEFAULT 0, created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, updated_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP ); -- -- Name: discussions; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.discussions ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, title character varying NOT NULL, description text, author_id uuid, club_id character varying, tags text[] DEFAULT '{}'::text[], is_locked boolean DEFAULT false, is_pinned boolean DEFAULT false, views_count integer DEFAULT 0, replies_count integer DEFAULT 0, last_activity timestamp with time zone DEFAULT CURRENT_TIMESTAMP, created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, updated_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP ); -- -- Name: email_logs; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.email_logs ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, recipient character varying NOT NULL, subject character varying NOT NULL, content_preview text, status character varying DEFAULT 'sent'::character varying, message_id character varying, category character varying, related_id uuid, created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, sent_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, email_service character varying DEFAULT 'resend'::character varying, error_message text, updated_at timestamp with time zone DEFAULT now() ); -- -- Name: event_attendees; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.event_attendees ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, event_id uuid, user_id uuid, registered_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, attendance_status character varying DEFAULT 'registered'::character varying ); -- -- Name: event_registrations; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.event_registrations ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, event_id uuid, user_id uuid, status character varying DEFAULT 'registered'::character varying, registration_data jsonb, registered_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, updated_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP ); -- -- Name: events; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.events ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, title character varying NOT NULL, description text NOT NULL, club_id character varying, created_by uuid, event_date date NOT NULL, event_time time without time zone NOT NULL, location character varying NOT NULL, max_attendees integer, status character varying DEFAULT 'upcoming'::character varying, image_url text, created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, updated_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, event_images jsonb DEFAULT '[]'::jsonb, banner_image_url text, gallery_images jsonb DEFAULT '[]'::jsonb ); -- -- Name: likes; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.likes ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, post_id uuid, user_id uuid, created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP ); -- -- Name: media_files; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.media_files ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, filename character varying NOT NULL, original_filename character varying NOT NULL, file_size integer NOT NULL, mime_type character varying NOT NULL, file_url text NOT NULL, thumbnail_url text, alt_text text, description text, uploaded_by uuid, upload_context character varying, upload_reference_id uuid, is_public boolean DEFAULT true, metadata jsonb DEFAULT '{}'::jsonb, created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, updated_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP ); -- -- Name: messages; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.messages ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, chat_room_id uuid NOT NULL, user_id uuid NOT NULL, content text NOT NULL, attachment_url text, created_at timestamp with time zone DEFAULT now() ); -- -- Name: notifications_id_seq; Type: SEQUENCE; Schema: public; Owner: - -- CREATE SEQUENCE public.notifications_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; -- -- Name: notifications; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.notifications ( id integer DEFAULT nextval('public.notifications_id_seq'::regclass) NOT NULL, user_id uuid NOT NULL, type character varying NOT NULL, title text, message text NOT NULL, link text, read boolean DEFAULT false, delivery_method character varying DEFAULT 'in-app'::character varying, created_at timestamp with time zone DEFAULT now(), sent_by character varying, club_id character varying, email_sent boolean DEFAULT false, email_sent_at timestamp without time zone, related_id uuid, metadata jsonb DEFAULT '{}'::jsonb ); -- -- Name: posts; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.posts ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, title character varying NOT NULL, content text NOT NULL, author_id uuid, club_id character varying, category character varying DEFAULT 'blog'::character varying, post_type character varying DEFAULT 'blog'::character varying, tags text[] DEFAULT '{}'::text[], excerpt text, reading_time_minutes integer DEFAULT 0, featured_image_url text, post_images jsonb DEFAULT '[]'::jsonb, content_blocks jsonb DEFAULT '[]'::jsonb, meta_description text, slug character varying, status character varying DEFAULT 'draft'::character varying, is_featured boolean DEFAULT false, is_pinned boolean DEFAULT false, view_count integer DEFAULT 0, likes_count integer DEFAULT 0, published_at timestamp with time zone, created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, updated_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, edited_by uuid, search_vector tsvector DEFAULT to_tsvector('english'::regconfig, ''::text) ); -- -- Name: proctoring_sessions; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.proctoring_sessions ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, assignment_id uuid NOT NULL, user_id uuid NOT NULL, session_start timestamp with time zone DEFAULT CURRENT_TIMESTAMP, session_end timestamp with time zone, camera_enabled boolean DEFAULT false, microphone_enabled boolean DEFAULT false, face_verified boolean DEFAULT false, violations jsonb DEFAULT '[]'::jsonb, screenshots jsonb DEFAULT '[]'::jsonb, system_info jsonb DEFAULT '{}'::jsonb, session_data jsonb DEFAULT '{}'::jsonb ); -- -- Name: project_invitations; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.project_invitations ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, project_id uuid NOT NULL, inviter_id uuid NOT NULL, email character varying NOT NULL, role character varying DEFAULT 'member'::character varying, invitation_token character varying NOT NULL, project_password character varying, status character varying DEFAULT 'pending'::character varying, message text, expires_at timestamp with time zone DEFAULT (CURRENT_TIMESTAMP + '7 days'::interval) NOT NULL, sent_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, accepted_at timestamp with time zone, created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP ); -- -- Name: project_members; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.project_members ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, project_id uuid NOT NULL, user_id uuid NOT NULL, role character varying DEFAULT 'member'::character varying, status character varying DEFAULT 'active'::character varying, joined_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, invited_by uuid, created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP ); -- -- Name: projects; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.projects ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, name character varying NOT NULL, description text, club_id character varying NOT NULL, created_by uuid NOT NULL, project_key character varying NOT NULL, project_type character varying DEFAULT 'development'::character varying, priority character varying DEFAULT 'medium'::character varying, status character varying DEFAULT 'planning'::character varying, start_date date, target_end_date date, actual_end_date date, access_password character varying, is_public boolean DEFAULT false, progress_percentage numeric DEFAULT 0, total_tasks integer DEFAULT 0, completed_tasks integer DEFAULT 0, created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, updated_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP ); -- -- Name: query_cache; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.query_cache ( cache_key text NOT NULL, cache_value jsonb NOT NULL, last_updated timestamp with time zone DEFAULT now(), expires_at timestamp with time zone NOT NULL ); -- -- Name: question_media; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.question_media ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, question_id uuid NOT NULL, media_file_id uuid NOT NULL, media_type character varying NOT NULL, display_order integer DEFAULT 0, is_primary boolean DEFAULT false, caption text, created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP ); -- -- Name: question_options; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.question_options ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, question_id uuid NOT NULL, option_text text NOT NULL, is_correct boolean DEFAULT false, ordering integer DEFAULT 0 NOT NULL, created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP ); -- -- Name: question_responses; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.question_responses ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, submission_id uuid NOT NULL, question_id uuid NOT NULL, selected_options uuid[], code_answer text, essay_answer text, is_correct boolean, score integer DEFAULT 0, time_spent integer, feedback text, created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, updated_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, selected_language character varying, last_auto_save timestamp with time zone, attempt_history jsonb DEFAULT '[]'::jsonb ); -- -- Name: security_events; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.security_events ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, user_id uuid NOT NULL, event_type character varying NOT NULL, ip_address character varying, device_info jsonb DEFAULT '{}'::jsonb, event_data jsonb DEFAULT '{}'::jsonb, created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP ); -- -- Name: sessions; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.sessions ( id uuid DEFAULT gen_random_uuid() NOT NULL, user_id uuid, token character varying NOT NULL, expires_at timestamp with time zone NOT NULL, created_at timestamp with time zone DEFAULT now(), last_active_at timestamp with time zone DEFAULT now(), user_agent text, ip_address character varying, device_info jsonb DEFAULT '{}'::jsonb, is_trusted boolean DEFAULT false, requires_2fa boolean DEFAULT true, has_completed_2fa boolean DEFAULT false ); -- -- Name: system_statistics_id_seq; Type: SEQUENCE; Schema: public; Owner: - -- CREATE SEQUENCE public.system_statistics_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; -- -- Name: system_statistics; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.system_statistics ( id integer DEFAULT nextval('public.system_statistics_id_seq'::regclass) NOT NULL, active_users_count integer DEFAULT 0, total_users_count integer DEFAULT 0, total_clubs_count integer DEFAULT 0, total_events_count integer DEFAULT 0, total_assignments_count integer DEFAULT 0, total_comments_count integer DEFAULT 0, daily_active_users integer DEFAULT 0, weekly_active_users integer DEFAULT 0, monthly_active_users integer DEFAULT 0, "timestamp" timestamp with time zone DEFAULT now() ); -- -- Name: tasks; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.tasks ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, project_id uuid NOT NULL, title character varying NOT NULL, description text, task_key character varying NOT NULL, task_type character varying DEFAULT 'task'::character varying, priority character varying DEFAULT 'medium'::character varying, status character varying DEFAULT 'todo'::character varying, assignee_id uuid, reporter_id uuid NOT NULL, parent_task_id uuid, story_points integer, time_spent_hours numeric DEFAULT 0, due_date timestamp with time zone, completed_date timestamp with time zone, is_completed boolean DEFAULT false, created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, updated_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP ); -- -- Name: trusted_devices; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.trusted_devices ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, user_id uuid NOT NULL, device_identifier character varying NOT NULL, device_name character varying NOT NULL, device_type character varying, browser character varying, os character varying, ip_address character varying, last_used timestamp with time zone DEFAULT CURRENT_TIMESTAMP, created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, expires_at timestamp with time zone DEFAULT (CURRENT_TIMESTAMP + '30 days'::interval), trust_level character varying DEFAULT 'login_only'::character varying ); -- -- Name: user_activities_id_seq; Type: SEQUENCE; Schema: public; Owner: - -- CREATE SEQUENCE public.user_activities_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; -- -- Name: user_activities; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.user_activities ( id integer DEFAULT nextval('public.user_activities_id_seq'::regclass) NOT NULL, user_id uuid, action character varying NOT NULL, target_type character varying NOT NULL, target_id text, target_name text, details jsonb, created_at timestamp with time zone DEFAULT now() ); -- -- Name: user_badges; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.user_badges ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, user_id uuid, badge_name character varying NOT NULL, badge_description text, badge_icon character varying, earned_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP ); -- -- Name: users; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.users ( id uuid DEFAULT public.uuid_generate_v4() NOT NULL, email character varying NOT NULL, password_hash character varying NOT NULL, name character varying NOT NULL, username character varying, avatar text, role character varying DEFAULT 'student'::character varying NOT NULL, club_id character varying, bio text, social_links jsonb DEFAULT '{}'::jsonb, preferences jsonb DEFAULT '{}'::jsonb, created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, updated_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP, profile_image_url text, profile_images jsonb DEFAULT '[]'::jsonb, verification_photo_url text, phone_number character varying, date_of_birth date, address text, emergency_contact jsonb DEFAULT '{}'::jsonb, phone character varying, location character varying, website character varying, github character varying, linkedin character varying, twitter character varying, email_verified boolean DEFAULT false, email_verification_token character varying, email_verification_token_expires_at timestamp without time zone, password_reset_token character varying, password_reset_token_expires_at timestamp without time zone, oauth_provider character varying, oauth_id character varying, oauth_data jsonb, has_password boolean DEFAULT true, totp_secret character varying, totp_temp_secret character varying, totp_temp_secret_created_at timestamp without time zone, totp_enabled boolean DEFAULT false, totp_enabled_at timestamp without time zone, totp_recovery_codes jsonb, notification_preferences jsonb DEFAULT '{"email": {"events": true, "results": true, "assignments": true, "discussions": true}}'::jsonb, email_otp_enabled boolean DEFAULT false, email_otp_verified boolean DEFAULT false, email_otp_secret character varying, email_otp_backup_codes jsonb DEFAULT '[]'::jsonb, email_otp_last_used timestamp with time zone, email_otp_created_at timestamp with time zone, email_otp character(6), email_otp_expires_at timestamp with time zone, last_activity timestamp with time zone DEFAULT CURRENT_TIMESTAMP ); -- -- Name: ai_assignment_generations ai_assignment_generations_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.ai_assignment_generations ADD CONSTRAINT ai_assignment_generations_pkey PRIMARY KEY (id); -- -- Name: announcements announcements_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.announcements ADD CONSTRAINT announcements_pkey PRIMARY KEY (id); -- -- Name: assignment_attempts assignment_attempts_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.assignment_attempts ADD CONSTRAINT assignment_attempts_pkey PRIMARY KEY (id); -- -- Name: assignment_audit_log assignment_audit_log_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.assignment_audit_log ADD CONSTRAINT assignment_audit_log_pkey PRIMARY KEY (id); -- -- Name: assignment_questions assignment_questions_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.assignment_questions ADD CONSTRAINT assignment_questions_pkey PRIMARY KEY (id); -- -- Name: assignment_submissions assignment_submissions_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.assignment_submissions ADD CONSTRAINT assignment_submissions_pkey PRIMARY KEY (id); -- -- Name: assignment_templates assignment_templates_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.assignment_templates ADD CONSTRAINT assignment_templates_pkey PRIMARY KEY (id); -- -- Name: assignment_violations assignment_violations_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.assignment_violations ADD CONSTRAINT assignment_violations_pkey PRIMARY KEY (id); -- -- Name: assignments assignments_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.assignments ADD CONSTRAINT assignments_pkey PRIMARY KEY (id); -- -- Name: audit_logs audit_logs_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.audit_logs ADD CONSTRAINT audit_logs_pkey PRIMARY KEY (id); -- -- Name: chat_attachments chat_attachments_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.chat_attachments ADD CONSTRAINT chat_attachments_pkey PRIMARY KEY (id); -- -- Name: chat_invitations chat_invitations_invitation_token_key; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.chat_invitations ADD CONSTRAINT chat_invitations_invitation_token_key UNIQUE (invitation_token); -- -- Name: chat_invitations chat_invitations_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.chat_invitations ADD CONSTRAINT chat_invitations_pkey PRIMARY KEY (id); -- -- Name: chat_messages chat_messages_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.chat_messages ADD CONSTRAINT chat_messages_pkey PRIMARY KEY (id); -- -- Name: chat_room_members chat_room_members_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.chat_room_members ADD CONSTRAINT chat_room_members_pkey PRIMARY KEY (id); -- -- Name: chat_rooms chat_rooms_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.chat_rooms ADD CONSTRAINT chat_rooms_pkey PRIMARY KEY (id); -- -- Name: club_members club_members_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.club_members ADD CONSTRAINT club_members_pkey PRIMARY KEY (id); -- -- Name: club_statistics club_statistics_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.club_statistics ADD CONSTRAINT club_statistics_pkey PRIMARY KEY (id); -- -- Name: clubs clubs_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.clubs ADD CONSTRAINT clubs_pkey PRIMARY KEY (id); -- -- Name: code_results code_results_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.code_results ADD CONSTRAINT code_results_pkey PRIMARY KEY (id); -- -- Name: coding_submissions coding_submissions_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.coding_submissions ADD CONSTRAINT coding_submissions_pkey PRIMARY KEY (id); -- -- Name: comments comments_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.comments ADD CONSTRAINT comments_pkey PRIMARY KEY (id); -- -- Name: committee_members committee_members_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.committee_members ADD CONSTRAINT committee_members_pkey PRIMARY KEY (id); -- -- Name: committee_roles committee_roles_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.committee_roles ADD CONSTRAINT committee_roles_pkey PRIMARY KEY (id); -- -- Name: committees committees_name_key; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.committees ADD CONSTRAINT committees_name_key UNIQUE (name); -- -- Name: committees committees_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.committees ADD CONSTRAINT committees_pkey PRIMARY KEY (id); -- -- Name: discussion_replies discussion_replies_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.discussion_replies ADD CONSTRAINT discussion_replies_pkey PRIMARY KEY (id); -- -- Name: discussions discussions_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.discussions ADD CONSTRAINT discussions_pkey PRIMARY KEY (id); -- -- Name: email_logs email_logs_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.email_logs ADD CONSTRAINT email_logs_pkey PRIMARY KEY (id); -- -- Name: event_attendees event_attendees_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.event_attendees ADD CONSTRAINT event_attendees_pkey PRIMARY KEY (id); -- -- Name: event_registrations event_registrations_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.event_registrations ADD CONSTRAINT event_registrations_pkey PRIMARY KEY (id); -- -- Name: events events_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.events ADD CONSTRAINT events_pkey PRIMARY KEY (id); -- -- Name: likes likes_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.likes ADD CONSTRAINT likes_pkey PRIMARY KEY (id); -- -- Name: media_files media_files_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.media_files ADD CONSTRAINT media_files_pkey PRIMARY KEY (id); -- -- Name: messages messages_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.messages ADD CONSTRAINT messages_pkey PRIMARY KEY (id); -- -- Name: notifications notifications_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.notifications ADD CONSTRAINT notifications_pkey PRIMARY KEY (id); -- -- Name: posts posts_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.posts ADD CONSTRAINT posts_pkey PRIMARY KEY (id); -- -- Name: posts posts_slug_key; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.posts ADD CONSTRAINT posts_slug_key UNIQUE (slug); -- -- Name: proctoring_sessions proctoring_sessions_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.proctoring_sessions ADD CONSTRAINT proctoring_sessions_pkey PRIMARY KEY (id); -- -- Name: project_invitations project_invitations_invitation_token_key; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.project_invitations ADD CONSTRAINT project_invitations_invitation_token_key UNIQUE (invitation_token); -- -- Name: project_invitations project_invitations_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.project_invitations ADD CONSTRAINT project_invitations_pkey PRIMARY KEY (id); -- -- Name: project_members project_members_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.project_members ADD CONSTRAINT project_members_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: query_cache query_cache_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.query_cache ADD CONSTRAINT query_cache_pkey PRIMARY KEY (cache_key); -- -- Name: question_media question_media_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.question_media ADD CONSTRAINT question_media_pkey PRIMARY KEY (id); -- -- Name: question_options question_options_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.question_options ADD CONSTRAINT question_options_pkey PRIMARY KEY (id); -- -- Name: question_responses question_responses_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.question_responses ADD CONSTRAINT question_responses_pkey PRIMARY KEY (id); -- -- Name: security_events security_events_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.security_events ADD CONSTRAINT security_events_pkey PRIMARY KEY (id); -- -- Name: sessions sessions_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.sessions ADD CONSTRAINT sessions_pkey PRIMARY KEY (id); -- -- Name: sessions sessions_token_key; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.sessions ADD CONSTRAINT sessions_token_key UNIQUE (token); -- -- Name: system_statistics system_statistics_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.system_statistics ADD CONSTRAINT system_statistics_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: trusted_devices trusted_devices_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.trusted_devices ADD CONSTRAINT trusted_devices_pkey PRIMARY KEY (id); -- -- Name: likes unique_post_user_like; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.likes ADD CONSTRAINT unique_post_user_like UNIQUE (post_id, user_id); -- -- Name: projects unique_project_key_club; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.projects ADD CONSTRAINT unique_project_key_club UNIQUE (club_id, project_key); -- -- Name: project_members unique_project_member; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.project_members ADD CONSTRAINT unique_project_member UNIQUE (project_id, user_id); -- -- Name: tasks unique_task_key_project; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.tasks ADD CONSTRAINT unique_task_key_project UNIQUE (project_id, task_key); -- -- Name: user_activities user_activities_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.user_activities ADD CONSTRAINT user_activities_pkey PRIMARY KEY (id); -- -- Name: user_badges user_badges_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.user_badges ADD CONSTRAINT user_badges_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: idx_ai_generations_assignment_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_ai_generations_assignment_id ON public.ai_assignment_generations USING btree (generated_assignment_id); -- -- Name: idx_ai_generations_created_at; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_ai_generations_created_at ON public.ai_assignment_generations USING btree (created_at); -- -- Name: idx_ai_generations_status; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_ai_generations_status ON public.ai_assignment_generations USING btree (generation_status); -- -- Name: idx_ai_generations_template_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_ai_generations_template_id ON public.ai_assignment_generations USING btree (template_id); -- -- Name: idx_assignment_attempts_assignment_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_assignment_attempts_assignment_id ON public.assignment_attempts USING btree (assignment_id); -- -- Name: idx_assignment_attempts_assignment_user; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_assignment_attempts_assignment_user ON public.assignment_attempts USING btree (assignment_id, user_id); -- -- Name: idx_assignment_attempts_auto_save; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_assignment_attempts_auto_save ON public.assignment_attempts USING btree (assignment_id, user_id, last_auto_save); -- -- Name: idx_assignment_attempts_status; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_assignment_attempts_status ON public.assignment_attempts USING btree (status); -- -- Name: idx_assignment_attempts_submitted_at; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_assignment_attempts_submitted_at ON public.assignment_attempts USING btree (submitted_at); -- -- Name: idx_assignment_attempts_user_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_assignment_attempts_user_id ON public.assignment_attempts USING btree (user_id); -- -- Name: idx_assignment_attempts_user_status; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_assignment_attempts_user_status ON public.assignment_attempts USING btree (user_id, status, submitted_at DESC); -- -- Name: idx_assignment_attempts_violations; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_assignment_attempts_violations ON public.assignment_attempts USING btree (assignment_id, window_violations); -- -- Name: idx_assignment_audit_log_assignment; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_assignment_audit_log_assignment ON public.assignment_audit_log USING btree (assignment_id); -- -- Name: idx_assignment_questions_assignment_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_assignment_questions_assignment_id ON public.assignment_questions USING btree (assignment_id); -- -- Name: idx_assignment_questions_correct_answer_jsonb; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_assignment_questions_correct_answer_jsonb ON public.assignment_questions USING gin (correct_answer); -- -- Name: idx_assignment_questions_language_settings; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_assignment_questions_language_settings ON public.assignment_questions USING btree (code_language, allow_any_language); -- -- Name: idx_assignment_submissions_unique; Type: INDEX; Schema: public; Owner: - -- CREATE UNIQUE INDEX idx_assignment_submissions_unique ON public.assignment_submissions USING btree (assignment_id, user_id); -- -- Name: idx_assignment_submissions_user_submitted; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_assignment_submissions_user_submitted ON public.assignment_submissions USING btree (user_id, submitted_at DESC); -- -- Name: idx_assignment_templates_category; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_assignment_templates_category ON public.assignment_templates USING btree (category); -- -- Name: idx_assignment_templates_created_by; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_assignment_templates_created_by ON public.assignment_templates USING btree (created_by); -- -- Name: idx_assignment_templates_difficulty; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_assignment_templates_difficulty ON public.assignment_templates USING btree (difficulty_level); -- -- Name: idx_assignment_templates_subject; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_assignment_templates_subject ON public.assignment_templates USING btree (subject); -- -- Name: idx_assignment_violations_submission_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_assignment_violations_submission_id ON public.assignment_violations USING btree (submission_id); -- -- Name: idx_assignments_club_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_assignments_club_id ON public.assignments USING btree (club_id); -- -- Name: idx_assignments_created_by; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_assignments_created_by ON public.assignments USING btree (created_by); -- -- Name: idx_assignments_due_date; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_assignments_due_date ON public.assignments USING btree (due_date); -- -- Name: idx_assignments_status; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_assignments_status ON public.assignments USING btree (status); -- -- Name: idx_assignments_type; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_assignments_type ON public.assignments USING btree (assignment_type); -- -- Name: idx_attempts_assignment_status; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_attempts_assignment_status ON public.assignment_attempts USING btree (assignment_id, status); -- -- Name: idx_attempts_user_assignment; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_attempts_user_assignment ON public.assignment_attempts USING btree (user_id, assignment_id, attempt_number); -- -- Name: idx_audit_logs_created_at; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_audit_logs_created_at ON public.audit_logs USING btree (created_at); -- -- Name: idx_audit_logs_resource_type; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_audit_logs_resource_type ON public.audit_logs USING btree (resource_type); -- -- Name: idx_audit_logs_user_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_audit_logs_user_id ON public.audit_logs USING btree (user_id); -- -- Name: idx_chat_messages_can_edit_until; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_chat_messages_can_edit_until ON public.chat_messages USING btree (can_edit_until); -- -- Name: idx_chat_messages_created_at; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_chat_messages_created_at ON public.chat_messages USING btree (created_at); -- -- Name: idx_chat_messages_edited_at; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_chat_messages_edited_at ON public.chat_messages USING btree (edited_at); -- -- Name: idx_chat_messages_room_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_chat_messages_room_id ON public.chat_messages USING btree (room_id); -- -- Name: idx_chat_messages_user_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_chat_messages_user_id ON public.chat_messages USING btree (user_id); -- -- Name: idx_chat_room_members_chat_room_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_chat_room_members_chat_room_id ON public.chat_room_members USING btree (chat_room_id); -- -- Name: idx_chat_room_members_user_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_chat_room_members_user_id ON public.chat_room_members USING btree (user_id); -- -- Name: idx_chat_rooms_profile_picture; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_chat_rooms_profile_picture ON public.chat_rooms USING btree (profile_picture_url); -- -- Name: idx_club_members_club_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_club_members_club_id ON public.club_members USING btree (club_id); -- -- Name: idx_club_members_user_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_club_members_user_id ON public.club_members USING btree (user_id); -- -- Name: idx_clubs_coordinator_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_clubs_coordinator_id ON public.clubs USING btree (coordinator_id); -- -- Name: idx_clubs_type; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_clubs_type ON public.clubs USING btree (type); -- -- Name: idx_coding_submissions_question_response_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_coding_submissions_question_response_id ON public.coding_submissions USING btree (question_response_id); -- -- Name: idx_comments_author_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_comments_author_id ON public.comments USING btree (author_id); -- -- Name: idx_comments_post_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_comments_post_id ON public.comments USING btree (post_id); -- -- Name: idx_committee_members_committee_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_committee_members_committee_id ON public.committee_members USING btree (committee_id); -- -- Name: idx_committee_members_user_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_committee_members_user_id ON public.committee_members USING btree (user_id); -- -- Name: idx_committee_roles_committee_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_committee_roles_committee_id ON public.committee_roles USING btree (committee_id); -- -- Name: idx_email_logs_created_at; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_email_logs_created_at ON public.email_logs USING btree (created_at); -- -- Name: idx_email_logs_recipient; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_email_logs_recipient ON public.email_logs USING btree (recipient); -- -- Name: idx_email_logs_status; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_email_logs_status ON public.email_logs USING btree (status); -- -- Name: idx_event_attendees_event_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_event_attendees_event_id ON public.event_attendees USING btree (event_id); -- -- Name: idx_event_attendees_user_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_event_attendees_user_id ON public.event_attendees USING btree (user_id); -- -- Name: idx_events_club_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_events_club_id ON public.events USING btree (club_id); -- -- Name: idx_events_created_by; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_events_created_by ON public.events USING btree (created_by); -- -- Name: idx_events_event_date; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_events_event_date ON public.events USING btree (event_date); -- -- Name: idx_likes_post_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_likes_post_id ON public.likes USING btree (post_id); -- -- Name: idx_likes_user_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_likes_user_id ON public.likes USING btree (user_id); -- -- Name: idx_media_files_upload_context; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_media_files_upload_context ON public.media_files USING btree (upload_context); -- -- Name: idx_media_files_uploaded_by; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_media_files_uploaded_by ON public.media_files USING btree (uploaded_by); -- -- Name: idx_notifications_created_at; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_notifications_created_at ON public.notifications USING btree (created_at); -- -- Name: idx_notifications_read; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_notifications_read ON public.notifications USING btree (read); -- -- Name: idx_notifications_user_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_notifications_user_id ON public.notifications USING btree (user_id); -- -- Name: idx_posts_author_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_posts_author_id ON public.posts USING btree (author_id); -- -- Name: idx_posts_club_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_posts_club_id ON public.posts USING btree (club_id); -- -- Name: idx_posts_created_at; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_posts_created_at ON public.posts USING btree (created_at); -- -- Name: idx_posts_search_vector; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_posts_search_vector ON public.posts USING gin (search_vector); -- -- Name: idx_posts_slug; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_posts_slug ON public.posts USING btree (slug); -- -- Name: idx_posts_status; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_posts_status ON public.posts USING btree (status); -- -- Name: idx_project_members_project_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_project_members_project_id ON public.project_members USING btree (project_id); -- -- Name: idx_project_members_user_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_project_members_user_id ON public.project_members USING btree (user_id); -- -- Name: idx_projects_club_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_projects_club_id ON public.projects USING btree (club_id); -- -- Name: idx_projects_created_by; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_projects_created_by ON public.projects USING btree (created_by); -- -- Name: idx_projects_status; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_projects_status ON public.projects USING btree (status); -- -- Name: idx_question_responses_question_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_question_responses_question_id ON public.question_responses USING btree (question_id); -- -- Name: idx_question_responses_submission_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_question_responses_submission_id ON public.question_responses USING btree (submission_id); -- -- Name: idx_questions_assignment_order; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_questions_assignment_order ON public.assignment_questions USING btree (assignment_id, question_order); -- -- Name: idx_questions_type; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_questions_type ON public.assignment_questions USING btree (question_type); -- -- Name: idx_security_events_event_type; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_security_events_event_type ON public.security_events USING btree (event_type); -- -- Name: idx_security_events_user_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_security_events_user_id ON public.security_events USING btree (user_id); -- -- Name: idx_sessions_expires_at; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_sessions_expires_at ON public.sessions USING btree (expires_at); -- -- Name: idx_sessions_token; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_sessions_token ON public.sessions USING btree (token); -- -- Name: idx_sessions_user_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_sessions_user_id ON public.sessions USING btree (user_id); -- -- Name: idx_submissions_assignment_status; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_submissions_assignment_status ON public.assignment_submissions USING btree (assignment_id, status); -- -- Name: idx_submissions_status_submitted; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_submissions_status_submitted ON public.assignment_submissions USING btree (status, submitted_at DESC); -- -- Name: idx_submissions_user_submitted; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_submissions_user_submitted ON public.assignment_submissions USING btree (user_id, submitted_at DESC); -- -- Name: idx_tasks_assignee_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_tasks_assignee_id ON public.tasks USING btree (assignee_id); -- -- Name: idx_tasks_due_date; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_tasks_due_date ON public.tasks USING btree (due_date); -- -- Name: idx_tasks_project_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_tasks_project_id ON public.tasks USING btree (project_id); -- -- Name: idx_tasks_status; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_tasks_status ON public.tasks USING btree (status); -- -- Name: idx_trusted_devices_user_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_trusted_devices_user_id ON public.trusted_devices USING btree (user_id); -- -- Name: idx_user_activities_created_at; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_user_activities_created_at ON public.user_activities USING btree (created_at); -- -- Name: idx_user_activities_user_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_user_activities_user_id ON public.user_activities USING btree (user_id); -- -- Name: idx_users_club_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_users_club_id ON public.users USING btree (club_id); -- -- Name: idx_users_created_at; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_users_created_at ON public.users USING btree (created_at); -- -- Name: idx_users_email; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_users_email ON public.users USING btree (email); -- -- Name: idx_users_last_activity; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_users_last_activity ON public.users USING btree (last_activity); -- -- Name: idx_users_role; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX idx_users_role ON public.users USING btree (role); -- -- Name: posts posts_search_vector_update; Type: TRIGGER; Schema: public; Owner: - -- CREATE TRIGGER posts_search_vector_update BEFORE INSERT OR UPDATE ON public.posts FOR EACH ROW EXECUTE FUNCTION public.update_post_search_vector(); -- -- Name: tasks tasks_generate_key; Type: TRIGGER; Schema: public; Owner: - -- CREATE TRIGGER tasks_generate_key BEFORE INSERT ON public.tasks FOR EACH ROW WHEN (((new.task_key IS NULL) OR ((new.task_key)::text = ''::text))) EXECUTE FUNCTION public.generate_task_key(); -- -- Name: tasks tasks_update_project_progress; Type: TRIGGER; Schema: public; Owner: - -- CREATE TRIGGER tasks_update_project_progress AFTER INSERT OR DELETE OR UPDATE ON public.tasks FOR EACH ROW EXECUTE FUNCTION public.update_project_progress(); -- -- Name: assignments update_assignments_updated_at; Type: TRIGGER; Schema: public; Owner: - -- CREATE TRIGGER update_assignments_updated_at BEFORE UPDATE ON public.assignments FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column(); -- -- Name: clubs update_clubs_updated_at; Type: TRIGGER; Schema: public; Owner: - -- CREATE TRIGGER update_clubs_updated_at BEFORE UPDATE ON public.clubs FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column(); -- -- Name: comments update_comments_updated_at; Type: TRIGGER; Schema: public; Owner: - -- CREATE TRIGGER update_comments_updated_at BEFORE UPDATE ON public.comments FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column(); -- -- Name: committee_members update_committee_members_updated_at; Type: TRIGGER; Schema: public; Owner: - -- CREATE TRIGGER update_committee_members_updated_at BEFORE UPDATE ON public.committee_members FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column(); -- -- Name: committee_roles update_committee_roles_updated_at; Type: TRIGGER; Schema: public; Owner: - -- CREATE TRIGGER update_committee_roles_updated_at BEFORE UPDATE ON public.committee_roles FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column(); -- -- Name: committees update_committees_updated_at; Type: TRIGGER; Schema: public; Owner: - -- CREATE TRIGGER update_committees_updated_at BEFORE UPDATE ON public.committees FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column(); -- -- Name: events update_events_updated_at; Type: TRIGGER; Schema: public; Owner: - -- CREATE TRIGGER update_events_updated_at BEFORE UPDATE ON public.events FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column(); -- -- Name: posts update_posts_updated_at; Type: TRIGGER; Schema: public; Owner: - -- CREATE TRIGGER update_posts_updated_at BEFORE UPDATE ON public.posts FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column(); -- -- Name: projects update_projects_updated_at; Type: TRIGGER; Schema: public; Owner: - -- CREATE TRIGGER update_projects_updated_at BEFORE UPDATE ON public.projects FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column(); -- -- Name: tasks update_tasks_updated_at; Type: TRIGGER; Schema: public; Owner: - -- CREATE TRIGGER update_tasks_updated_at BEFORE UPDATE ON public.tasks FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column(); -- -- Name: users update_users_updated_at; Type: TRIGGER; Schema: public; Owner: - -- CREATE TRIGGER update_users_updated_at BEFORE UPDATE ON public.users FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column(); -- -- Name: chat_messages fk_chat_messages_edited_by; Type: FK CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.chat_messages ADD CONSTRAINT fk_chat_messages_edited_by FOREIGN KEY (edited_by) REFERENCES public.users(id); -- -- Name: chat_rooms fk_chat_rooms_edited_by; Type: FK CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.chat_rooms ADD CONSTRAINT fk_chat_rooms_edited_by FOREIGN KEY (edited_by) REFERENCES public.users(id); -- -- PostgreSQL database dump complete --