SendNotifications / database.sql
Hydra-Bolt
added
31eedc3
-- WARNING: This schema is for context only and is not meant to be run.
-- Table order and constraints may not be valid for execution.
CREATE TABLE public.attendee_preferences (
pref_id bigint GENERATED ALWAYS AS IDENTITY NOT NULL UNIQUE,
pref_name character varying NOT NULL DEFAULT ''::character varying,
CONSTRAINT attendee_preferences_pkey PRIMARY KEY (pref_id)
);
CREATE TABLE public.attendee_profiles (
user_id uuid NOT NULL UNIQUE,
first_name text NOT NULL,
last_name text NOT NULL,
phone_number text,
age_bracket text,
gender text,
marital_status text,
bio text,
social_links jsonb,
profile_image_url text,
preferences jsonb,
created_at timestamp with time zone DEFAULT now(),
updated_at timestamp with time zone DEFAULT now(),
email text,
CONSTRAINT attendee_profiles_pkey PRIMARY KEY (user_id),
CONSTRAINT attendee_profiles_user_id_fkey FOREIGN KEY (user_id) REFERENCES auth.users(id)
);
CREATE TABLE public.event_attendance (
id bigint GENERATED ALWAYS AS IDENTITY NOT NULL,
event_id bigint NOT NULL,
user_id uuid NOT NULL,
status USER-DEFINED NOT NULL,
created_at timestamp with time zone DEFAULT now(),
CONSTRAINT event_attendance_pkey PRIMARY KEY (id),
CONSTRAINT event_attendance_user_id_fkey FOREIGN KEY (user_id) REFERENCES auth.users(id),
CONSTRAINT event_attendance_event_id_fkey FOREIGN KEY (event_id) REFERENCES public.events(id)
);
CREATE TABLE public.event_comments (
id bigint GENERATED ALWAYS AS IDENTITY NOT NULL,
created_at timestamp with time zone NOT NULL DEFAULT now(),
commentor_id uuid DEFAULT auth.uid(),
event_id bigint,
comment_text character varying DEFAULT ''::character varying,
commentor_name character varying,
CONSTRAINT event_comments_pkey PRIMARY KEY (id),
CONSTRAINT event_comments_event_id_fkey FOREIGN KEY (event_id) REFERENCES public.events(id)
);
CREATE TABLE public.event_types (
type_id bigint GENERATED ALWAYS AS IDENTITY NOT NULL,
type_name character varying NOT NULL DEFAULT ''::character varying,
type_image_url character varying NOT NULL DEFAULT ''::character varying,
CONSTRAINT event_types_pkey PRIMARY KEY (type_id)
);
CREATE TABLE public.events (
id bigint GENERATED ALWAYS AS IDENTITY NOT NULL,
created_at timestamp with time zone NOT NULL DEFAULT now(),
name character varying DEFAULT ''::character varying,
description character varying DEFAULT ''::character varying,
type_id bigint,
organizer_email character varying DEFAULT ''::character varying,
organizer_contact_num character varying DEFAULT ''::character varying,
location USER-DEFINED,
starting_timestamp timestamp without time zone,
street_address character varying DEFAULT ''::character varying,
media jsonb DEFAULT '"[]"'::jsonb,
whos_allowed character varying DEFAULT '"Everyone"'::character varying,
organizer_id uuid DEFAULT auth.uid(),
type_name character varying DEFAULT ''::character varying,
ticket_price bigint,
ticket_link character varying,
organizer_name character varying DEFAULT ''::character varying,
CONSTRAINT events_pkey PRIMARY KEY (id),
CONSTRAINT events_type_id_fkey FOREIGN KEY (type_id) REFERENCES public.event_types(type_id)
);
CREATE TABLE public.follows (
id bigint GENERATED ALWAYS AS IDENTITY NOT NULL,
followed_at timestamp with time zone NOT NULL DEFAULT now(),
follower_id uuid NOT NULL DEFAULT auth.uid(),
followee_id character varying DEFAULT ''::character varying,
CONSTRAINT follows_pkey PRIMARY KEY (id),
CONSTRAINT follows_follower_id_fkey FOREIGN KEY (follower_id) REFERENCES public.attendee_profiles(user_id)
);
CREATE TABLE public.notifications (
id integer NOT NULL DEFAULT nextval('notifications_id_seq'::regclass),
created_at timestamp with time zone DEFAULT now(),
title character varying NOT NULL,
message text NOT NULL,
audience character varying NOT NULL,
event_id integer,
user_ids ARRAY,
action_url text,
status character varying DEFAULT 'pending'::character varying,
sent_at timestamp with time zone,
read_count integer DEFAULT 0,
sender_id uuid,
metadata jsonb,
CONSTRAINT notifications_pkey PRIMARY KEY (id),
CONSTRAINT notifications_event_id_fkey FOREIGN KEY (event_id) REFERENCES public.events(id),
CONSTRAINT notifications_sender_id_fkey FOREIGN KEY (sender_id) REFERENCES auth.users(id)
);
CREATE TABLE public.organizer_company_profiles (
user_id uuid NOT NULL,
company_name text NOT NULL,
company_email text NOT NULL UNIQUE,
phone_number text NOT NULL,
contact_person_first_name text NOT NULL,
contact_person_last_name text NOT NULL,
contact_person_email text NOT NULL,
contact_person_phone_number text NOT NULL,
contact_person_designation text NOT NULL,
company_state text NOT NULL,
company_city text NOT NULL,
company_address text NOT NULL,
company_logo_url text,
company_bio text,
event_types jsonb DEFAULT '[]'::jsonb,
created_at timestamp with time zone DEFAULT now(),
updated_at timestamp with time zone DEFAULT now(),
social_links jsonb DEFAULT '[]'::jsonb,
CONSTRAINT organizer_company_profiles_pkey PRIMARY KEY (user_id),
CONSTRAINT organizer_company_profiles_user_id_fkey FOREIGN KEY (user_id) REFERENCES auth.users(id)
);
CREATE TABLE public.organizer_individual_profiles (
user_id uuid NOT NULL,
first_name text NOT NULL,
last_name text NOT NULL,
email text NOT NULL UNIQUE,
phone_number text NOT NULL,
age_bracket text,
event_types jsonb DEFAULT '[]'::jsonb,
bio text,
profile_image_url text,
created_at timestamp with time zone DEFAULT now(),
updated_at timestamp with time zone DEFAULT now(),
social_links jsonb DEFAULT '[]'::jsonb,
CONSTRAINT organizer_individual_profiles_pkey PRIMARY KEY (user_id),
CONSTRAINT organizer_individual_profiles_user_id_fkey FOREIGN KEY (user_id) REFERENCES auth.users(id)
);
CREATE TABLE public.spatial_ref_sys (
srid integer NOT NULL CHECK (srid > 0 AND srid <= 998999),
auth_name character varying,
auth_srid integer,
srtext character varying,
proj4text character varying,
CONSTRAINT spatial_ref_sys_pkey PRIMARY KEY (srid)
);
CREATE TABLE public.user_fcm_tokens (
user_id uuid NOT NULL,
fcm_token text NOT NULL,
updated_at timestamp without time zone DEFAULT now(),
CONSTRAINT user_fcm_tokens_pkey PRIMARY KEY (user_id),
CONSTRAINT user_fcm_tokens_user_id_fkey FOREIGN KEY (user_id) REFERENCES auth.users(id)
);
CREATE TABLE public.user_notification_preferences (
user_id uuid NOT NULL,
new_events boolean DEFAULT true,
event_reminders boolean DEFAULT true,
event_updates boolean DEFAULT true,
event_cancellations boolean DEFAULT true,
organizer_updates boolean DEFAULT false,
updated_at timestamp without time zone DEFAULT now(),
CONSTRAINT user_notification_preferences_pkey PRIMARY KEY (user_id),
CONSTRAINT user_notification_preferences_user_id_fkey FOREIGN KEY (user_id) REFERENCES auth.users(id)
);
CREATE TABLE public.user_notifications (
id uuid NOT NULL DEFAULT gen_random_uuid(),
user_id uuid,
title text NOT NULL,
body text NOT NULL,
type text NOT NULL,
priority text DEFAULT 'normal'::text,
event_id bigint,
organizer_id text,
image_url text,
data jsonb,
is_read boolean DEFAULT false,
is_actionable boolean DEFAULT false,
action_url text,
action_text text,
created_at timestamp without time zone DEFAULT now(),
CONSTRAINT user_notifications_pkey PRIMARY KEY (id),
CONSTRAINT user_notifications_user_id_fkey FOREIGN KEY (user_id) REFERENCES auth.users(id),
CONSTRAINT user_notifications_event_id_fkey FOREIGN KEY (event_id) REFERENCES public.events(id)
);