All checks were successful
/ build (map[dockerfile:./services/hasura/Dockerfile name:hasura]) (push) Successful in 47s
/ build (map[dockerfile:./services/web/Dockerfile name:web]) (push) Successful in 1m47s
/ build (map[dockerfile:./services/watchers/Dockerfile name:watchers]) (push) Successful in 2m37s
/ build (map[dockerfile:./services/files/Dockerfile name:files]) (push) Successful in 2m52s
/ build (map[dockerfile:./services/api/Dockerfile name:api]) (push) Successful in 3m2s
/ build (map[dockerfile:./services/app/Dockerfile name:app]) (push) Successful in 31s
/ build (map[dockerfile:./services/tasks/Dockerfile name:tasks]) (push) Successful in 2m44s
/ deploy (push) Successful in 48s
1135 lines
47 KiB
PL/PgSQL
1135 lines
47 KiB
PL/PgSQL
SET check_function_bodies = false;
|
|
CREATE FUNCTION public.alert_increment_notified_count() RETURNS trigger
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
BEGIN
|
|
UPDATE "alert"
|
|
SET "notified_count" = "notified_count" + 1
|
|
WHERE "id" = NEW."alert_id";
|
|
RETURN NEW;
|
|
END;
|
|
$$;
|
|
CREATE FUNCTION public.alert_update_propagate_to_alerting() RETURNS trigger
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
BEGIN
|
|
UPDATE "alerting"
|
|
SET "updated_at" = NOW()
|
|
WHERE "alert_id" = NEW.id;
|
|
RETURN NEW;
|
|
END;
|
|
$$;
|
|
CREATE FUNCTION public.alerting__updated_seq__increment_sequence() RETURNS trigger
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
BEGIN
|
|
NEW.updated_seq := nextval('global_alerting_updated_seq');
|
|
RETURN NEW;
|
|
END;
|
|
$$;
|
|
CREATE FUNCTION public.archive_alert(p_id integer) RETURNS void
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
v_archived_alert_id INTEGER;
|
|
BEGIN
|
|
-- Insert the selected rows into the archive table
|
|
INSERT INTO archived_alert (
|
|
"alert_id",
|
|
"user_id",
|
|
"phone_number_id",
|
|
"device_id",
|
|
"location",
|
|
"alert_tag",
|
|
"created_at",
|
|
"call_emergency",
|
|
"notify_around",
|
|
"notify_relatives",
|
|
"level",
|
|
"subject",
|
|
"accuracy",
|
|
"altitude",
|
|
"altitude_accuracy",
|
|
"heading",
|
|
"speed",
|
|
"radius",
|
|
"address",
|
|
"what3words",
|
|
"nearest_place",
|
|
"uuid",
|
|
"code",
|
|
"notified_count",
|
|
"closed_at",
|
|
"keep_open_at",
|
|
"updated_at",
|
|
"suggest_close_sent",
|
|
"suggest_keep_open_sent",
|
|
"closed_by"
|
|
)
|
|
SELECT
|
|
"id",
|
|
"user_id",
|
|
"phone_number_id",
|
|
"device_id",
|
|
"location",
|
|
"alert_tag",
|
|
"created_at",
|
|
"call_emergency",
|
|
"notify_around",
|
|
"notify_relatives",
|
|
"level",
|
|
"subject",
|
|
"accuracy",
|
|
"altitude",
|
|
"altitude_accuracy",
|
|
"heading",
|
|
"speed",
|
|
"radius",
|
|
"address",
|
|
"what3words",
|
|
"nearest_place",
|
|
"uuid",
|
|
"code",
|
|
"notified_count",
|
|
"closed_at",
|
|
"keep_open_at",
|
|
"updated_at",
|
|
"suggest_close_sent",
|
|
"suggest_keep_open_sent",
|
|
"closed_by"
|
|
FROM "alert"
|
|
WHERE "id" = p_id
|
|
RETURNING "id" INTO v_archived_alert_id;
|
|
INSERT INTO
|
|
"alerted" (
|
|
"archived_alert_id",
|
|
"user_id",
|
|
"opened_once",
|
|
"created_at",
|
|
"near_location",
|
|
"opened",
|
|
"device_id",
|
|
"initial_location",
|
|
"notification_sent",
|
|
"notification_sent_at",
|
|
"initial_distance",
|
|
"geomatch_method",
|
|
"reason",
|
|
"updated_at",
|
|
"coming_help",
|
|
"relative_user_id"
|
|
)
|
|
SELECT
|
|
v_archived_alert_id,
|
|
"user_id",
|
|
"opened_once",
|
|
"created_at",
|
|
"near_location",
|
|
"opened",
|
|
"device_id",
|
|
"initial_location",
|
|
"notification_sent",
|
|
"notification_sent_at",
|
|
"initial_distance",
|
|
"geomatch_method",
|
|
"reason",
|
|
"updated_at",
|
|
"coming_help",
|
|
"relative_user_id"
|
|
FROM "alerting"
|
|
WHERE "alert_id" = p_id;
|
|
DELETE FROM "alert"
|
|
WHERE id = p_id;
|
|
END;
|
|
$$;
|
|
CREATE TABLE public.alert (
|
|
id integer NOT NULL,
|
|
user_id integer NOT NULL,
|
|
level text NOT NULL,
|
|
phone_number_id integer,
|
|
device_id integer,
|
|
state text DEFAULT 'open'::text NOT NULL,
|
|
location public.geography,
|
|
alert_tag text,
|
|
created_at timestamp with time zone DEFAULT now() NOT NULL,
|
|
call_emergency boolean,
|
|
notify_around boolean,
|
|
notify_relatives boolean,
|
|
subject text,
|
|
accuracy numeric,
|
|
altitude numeric,
|
|
altitude_accuracy numeric,
|
|
heading numeric,
|
|
speed numeric,
|
|
radius numeric,
|
|
address text,
|
|
what3words text,
|
|
nearest_place text,
|
|
uuid uuid DEFAULT public.gen_random_uuid() NOT NULL,
|
|
code text,
|
|
notified_count integer DEFAULT 0 NOT NULL,
|
|
access_code text,
|
|
closed_at timestamp with time zone,
|
|
keep_open_at timestamp with time zone,
|
|
updated_at timestamp with time zone DEFAULT now(),
|
|
suggest_close_sent boolean,
|
|
suggest_keep_open_sent boolean,
|
|
closed_by text,
|
|
emergency_calling_notification_sent boolean
|
|
);
|
|
CREATE FUNCTION public.computed_alert__username(alert_row public.alert) RETURNS text
|
|
LANGUAGE sql STABLE
|
|
AS $$
|
|
SELECT COALESCE("username",'') FROM "user" WHERE "id" = alert_row.user_id
|
|
$$;
|
|
CREATE TABLE public.archived_alert (
|
|
id integer NOT NULL,
|
|
user_id integer,
|
|
phone_number_id integer,
|
|
device_id integer,
|
|
location public.geography,
|
|
alert_tag text,
|
|
created_at timestamp with time zone NOT NULL,
|
|
call_emergency boolean,
|
|
notify_around boolean,
|
|
notify_relatives boolean,
|
|
level text NOT NULL,
|
|
subject text,
|
|
accuracy numeric,
|
|
altitude numeric,
|
|
altitude_accuracy numeric,
|
|
heading numeric,
|
|
speed numeric,
|
|
radius numeric,
|
|
address text,
|
|
what3words text,
|
|
nearest_place text,
|
|
uuid uuid NOT NULL,
|
|
code text,
|
|
notified_count integer DEFAULT 0,
|
|
closed_at timestamp with time zone,
|
|
keep_open_at timestamp with time zone,
|
|
updated_at timestamp with time zone,
|
|
suggest_close_sent boolean,
|
|
suggest_keep_open_sent boolean,
|
|
closed_by text,
|
|
alert_id integer,
|
|
archive_created_at timestamp with time zone DEFAULT now()
|
|
);
|
|
CREATE FUNCTION public.computed_archived_alert__username(alert_row public.archived_alert) RETURNS text
|
|
LANGUAGE sql STABLE
|
|
AS $$
|
|
SELECT COALESCE("username",'') FROM "user" WHERE "id" = alert_row.user_id
|
|
$$;
|
|
CREATE TABLE public.message (
|
|
id integer NOT NULL,
|
|
alert_id integer NOT NULL,
|
|
created_at timestamp with time zone DEFAULT now() NOT NULL,
|
|
user_id integer,
|
|
device_id integer,
|
|
location public.geography,
|
|
content_type text DEFAULT 'text'::text NOT NULL,
|
|
text character varying(4096),
|
|
audio_file_uuid uuid
|
|
);
|
|
CREATE FUNCTION public.computed_message__avatar_image_file_uuid(message_row public.message) RETURNS uuid
|
|
LANGUAGE sql STABLE
|
|
AS $$
|
|
SELECT "image_file_uuid" FROM "user_avatar" WHERE "user_id" = message_row.user_id
|
|
$$;
|
|
CREATE FUNCTION public.computed_message__username(message_row public.message) RETURNS text
|
|
LANGUAGE sql STABLE
|
|
AS $$
|
|
SELECT COALESCE("username",'') FROM "user" WHERE "id" = message_row.user_id
|
|
$$;
|
|
CREATE TABLE public.phone_number (
|
|
id integer NOT NULL,
|
|
user_id integer NOT NULL,
|
|
device_id integer,
|
|
number text NOT NULL,
|
|
updated_at timestamp with time zone DEFAULT now(),
|
|
created_at timestamp with time zone DEFAULT now() NOT NULL,
|
|
country text NOT NULL,
|
|
is_private boolean DEFAULT false NOT NULL
|
|
);
|
|
CREATE FUNCTION public.computed_phone_number__phone_number_key(phone_number_row public.phone_number) RETURNS text
|
|
LANGUAGE sql STABLE
|
|
AS $$
|
|
SELECT phone_number_row.country || ' ' || phone_number_row.number
|
|
$$;
|
|
CREATE FUNCTION public.device_update_fcm_token() RETURNS trigger
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
BEGIN
|
|
-- Update fcm_token to NULL for other rows with the same fcm_token
|
|
UPDATE device
|
|
SET fcm_token = NULL
|
|
WHERE fcm_token = NEW.fcm_token
|
|
AND id <> NEW.id;
|
|
-- Return the new record
|
|
RETURN NEW;
|
|
END;
|
|
$$;
|
|
CREATE FUNCTION public.insert_one_relative_by_phone_number_id(user_id integer, phone_number_id integer) RETURNS void
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
to_user_id INT;
|
|
BEGIN
|
|
-- Fetch the user_id associated with the provided phone_number_id
|
|
SELECT user_id INTO to_user_id FROM phone_number WHERE phone_number_id = phone_number_id;
|
|
-- Check if user_id was found
|
|
IF to_user_id IS NULL THEN
|
|
RAISE EXCEPTION 'No user found with the provided phone_number_id: %', phone_number_id;
|
|
END IF;
|
|
-- Insert into the relative table
|
|
INSERT INTO relative (to_user_id, user_id)
|
|
VALUES (to_user_id, user_id);
|
|
END;
|
|
$$;
|
|
CREATE FUNCTION public.phone_number__number__trim_leading_zero() RETURNS trigger
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
BEGIN
|
|
new."number" := LTRIM(new."number", '0');
|
|
RETURN new;
|
|
END;
|
|
$$;
|
|
CREATE FUNCTION public.random_between(low integer, high integer) RETURNS integer
|
|
LANGUAGE plpgsql STRICT
|
|
AS $$
|
|
BEGIN
|
|
RETURN floor(random()* (high-low + 1) + low);
|
|
END;
|
|
$$;
|
|
CREATE FUNCTION public.set_current_timestamp_updated_at() RETURNS trigger
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
_new record;
|
|
BEGIN
|
|
_new := NEW;
|
|
_new."updated_at" = NOW();
|
|
RETURN _new;
|
|
END;
|
|
$$;
|
|
CREATE FUNCTION public.set_current_timestamp_updated_at_for_alert() RETURNS trigger
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
BEGIN
|
|
-- Check if the specified columns are unchanged
|
|
IF NEW.suggest_close_sent = OLD.suggest_close_sent AND
|
|
NEW.suggest_keep_open_sent = OLD.suggest_keep_open_sent AND
|
|
NEW.notified_count = OLD.notified_count AND
|
|
NEW.state = OLD.state THEN
|
|
-- None of the specified columns have changed, update updated_at
|
|
NEW.updated_at := NOW();
|
|
END IF;
|
|
-- Return the modified NEW record
|
|
RETURN NEW;
|
|
END;
|
|
$$;
|
|
CREATE TABLE public.relative (
|
|
id integer NOT NULL,
|
|
user_id integer NOT NULL,
|
|
user_index integer NOT NULL,
|
|
to_user_id integer NOT NULL
|
|
);
|
|
CREATE FUNCTION public.upsert_many_relative_by_phone_number_id(json_input json, hasura_session json) RETURNS SETOF public.relative
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
element JSON; -- Declare a variable to hold each JSON element
|
|
BEGIN
|
|
-- Loop through each element of the JSON array
|
|
FOR element IN SELECT * FROM json_array_elements(json_input)
|
|
LOOP
|
|
-- Call the upsert function for each JSON object, extracting and casting each needed value
|
|
RETURN QUERY SELECT * FROM upsert_one_relative_by_phone_number_id(
|
|
(element->>'phone_number_id')::INT,
|
|
(element->>'user_index')::INT,
|
|
hasura_session
|
|
);
|
|
END LOOP;
|
|
RETURN;
|
|
END;
|
|
$$;
|
|
CREATE FUNCTION public.upsert_one_relative_by_invitation_id(input_relative_invitation_id integer, input_user_index integer, hasura_session json) RETURNS SETOF public.relative
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
v_user_id INT;
|
|
v_to_user_id INT;
|
|
new_relative RECORD;
|
|
BEGIN
|
|
v_user_id := (hasura_session ->> 'x-hasura-user-id')::INT;
|
|
SELECT user_id INTO v_to_user_id
|
|
FROM relative_invitation
|
|
WHERE id = input_relative_invitation_id AND to_user_id = v_user_id;
|
|
IF NOT FOUND THEN
|
|
RAISE EXCEPTION 'Unauthorized operation for user %', v_user_id;
|
|
END IF;
|
|
INSERT INTO relative ("user_id", "to_user_id", "user_index")
|
|
VALUES (v_user_id, v_to_user_id, input_user_index)
|
|
ON CONFLICT ("user_id", "to_user_id") DO UPDATE
|
|
SET to_user_id = EXCLUDED.to_user_id
|
|
RETURNING * INTO new_relative;
|
|
INSERT INTO relative_allow (relative_id, allowed)
|
|
VALUES (new_relative.id, true)
|
|
ON CONFLICT (relative_id) DO UPDATE
|
|
SET allowed = EXCLUDED.allowed;
|
|
DELETE FROM relative_invitation
|
|
WHERE id = input_relative_invitation_id;
|
|
RETURN NEXT new_relative;
|
|
END;
|
|
$$;
|
|
CREATE FUNCTION public.upsert_one_relative_by_phone_number_id(input_phone_number_id integer, input_user_index integer, hasura_session json) RETURNS SETOF public.relative
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
fetched_to_user_id INT;
|
|
new_relative RECORD;
|
|
BEGIN
|
|
IF NOT (input_user_index BETWEEN 1 AND 5) THEN
|
|
RAISE EXCEPTION 'Invalid user_index: %, must be between 1 and 5', user_index;
|
|
END IF;
|
|
-- Check if is registered as relative
|
|
IF NOT EXISTS (SELECT 1 FROM user_phone_number_relative WHERE phone_number_id = input_phone_number_id) THEN
|
|
RAISE EXCEPTION 'phone_number_id % not found in user_phone_number_relative', input_phone_number_id;
|
|
END IF;
|
|
-- Fetch the user_id associated with the provided phone_number_id
|
|
SELECT phone_number.user_id INTO fetched_to_user_id FROM phone_number WHERE phone_number.id = input_phone_number_id;
|
|
-- Check if user_id was found
|
|
IF fetched_to_user_id IS NULL THEN
|
|
RAISE EXCEPTION 'No user found with the provided phone_number_id: %', phone_number_id;
|
|
END IF;
|
|
-- Perform an upsert into the relative table
|
|
INSERT INTO relative ("to_user_id", "user_id", "user_index")
|
|
VALUES (fetched_to_user_id, (hasura_session ->> 'x-hasura-user-id')::int, input_user_index)
|
|
ON CONFLICT ("user_id", "user_index") DO UPDATE
|
|
SET to_user_id = EXCLUDED.to_user_id
|
|
RETURNING * INTO new_relative;
|
|
-- Attempt to insert into the subtable
|
|
INSERT INTO relative_allow (relative_id)
|
|
VALUES (new_relative.id)
|
|
ON CONFLICT (relative_id) DO NOTHING;
|
|
-- Return the result of the main operation
|
|
RETURN NEXT new_relative;
|
|
END;
|
|
$$;
|
|
CREATE TABLE public.relative_invitation (
|
|
id integer NOT NULL,
|
|
user_id integer NOT NULL,
|
|
created_at timestamp with time zone DEFAULT now() NOT NULL,
|
|
updated_at timestamp with time zone DEFAULT now() NOT NULL,
|
|
to_user_id integer NOT NULL
|
|
);
|
|
CREATE FUNCTION public.upsert_one_relative_invitation_by_phone_number_id(input_phone_number_id integer, hasura_session json) RETURNS SETOF public.relative_invitation
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
fetched_to_user_id INT;
|
|
BEGIN
|
|
-- Check if is registered as relative
|
|
IF NOT EXISTS (SELECT 1 FROM user_phone_number_relative WHERE phone_number_id = input_phone_number_id) THEN
|
|
RAISE EXCEPTION 'phone_number_id % not found in user_phone_number_relative', input_phone_number_id;
|
|
END IF;
|
|
-- Fetch the user_id associated with the provided phone_number_id
|
|
SELECT phone_number.user_id INTO fetched_to_user_id
|
|
FROM phone_number
|
|
WHERE
|
|
phone_number.id = input_phone_number_id;
|
|
-- Check if user_id was found
|
|
IF fetched_to_user_id IS NULL THEN RAISE EXCEPTION 'No user found with the provided phone_number_id: %',
|
|
phone_number_id;
|
|
END
|
|
IF;
|
|
-- Perform an upsert into the relative_invitation table
|
|
RETURN QUERY
|
|
INSERT INTO
|
|
relative_invitation (to_user_id, user_id)
|
|
VALUES (fetched_to_user_id, (hasura_session ->> 'x-hasura-user-id')::int) ON CONFLICT (to_user_id, user_id) DO
|
|
UPDATE
|
|
SET
|
|
to_user_id = EXCLUDED.to_user_id RETURNING *;
|
|
-- Return the newly inserted or updated row
|
|
END;
|
|
$$;
|
|
CREATE TABLE public.alert_group (
|
|
id integer NOT NULL,
|
|
name text NOT NULL,
|
|
created_at timestamp with time zone DEFAULT now() NOT NULL
|
|
);
|
|
CREATE SEQUENCE public.alert_group_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
ALTER SEQUENCE public.alert_group_id_seq OWNED BY public.alert_group.id;
|
|
CREATE TABLE public.alert_group_link (
|
|
id integer NOT NULL,
|
|
alert_group_id integer NOT NULL,
|
|
alert_id integer NOT NULL,
|
|
created_at timestamp with time zone DEFAULT now() NOT NULL
|
|
);
|
|
CREATE SEQUENCE public.alert_group_link_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
ALTER SEQUENCE public.alert_group_link_id_seq OWNED BY public.alert_group_link.id;
|
|
CREATE SEQUENCE public.alert_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
ALTER SEQUENCE public.alert_id_seq OWNED BY public.alert.id;
|
|
CREATE TABLE public.alert_link (
|
|
id integer NOT NULL,
|
|
alert1_id integer NOT NULL,
|
|
alert2_id integer NOT NULL,
|
|
created_at timestamp with time zone DEFAULT now() NOT NULL
|
|
);
|
|
CREATE SEQUENCE public.alert_link_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
ALTER SEQUENCE public.alert_link_id_seq OWNED BY public.alert_link.id;
|
|
CREATE TABLE public.alert_tag (
|
|
value text NOT NULL
|
|
);
|
|
CREATE TABLE public.alerted (
|
|
id bigint NOT NULL,
|
|
user_id integer NOT NULL,
|
|
archived_alert_id integer NOT NULL,
|
|
opened_once boolean DEFAULT false NOT NULL,
|
|
created_at timestamp with time zone,
|
|
near_location boolean DEFAULT true NOT NULL,
|
|
opened boolean DEFAULT false NOT NULL,
|
|
device_id integer,
|
|
initial_location public.geography,
|
|
notification_sent boolean,
|
|
notification_sent_at timestamp with time zone,
|
|
initial_distance numeric,
|
|
geomatch_method text,
|
|
reason text,
|
|
updated_at timestamp with time zone DEFAULT now(),
|
|
coming_help boolean,
|
|
relative_user_id integer
|
|
);
|
|
CREATE SEQUENCE public.alerted_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
ALTER SEQUENCE public.alerted_id_seq OWNED BY public.alerted.id;
|
|
CREATE TABLE public.alerting (
|
|
id integer NOT NULL,
|
|
user_id integer NOT NULL,
|
|
alert_id integer NOT NULL,
|
|
opened boolean DEFAULT false NOT NULL,
|
|
near_location boolean DEFAULT true NOT NULL,
|
|
opened_once boolean DEFAULT false NOT NULL,
|
|
created_at timestamp with time zone DEFAULT now() NOT NULL,
|
|
device_id integer,
|
|
initial_location public.geography,
|
|
notification_sent boolean,
|
|
notification_sent_at timestamp with time zone,
|
|
initial_distance numeric,
|
|
geomatch_method text,
|
|
reason text,
|
|
updated_at timestamp with time zone DEFAULT now() NOT NULL,
|
|
updated_seq bigint NOT NULL,
|
|
coming_help boolean,
|
|
relative_user_id integer
|
|
);
|
|
CREATE SEQUENCE public.alerting_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
ALTER SEQUENCE public.alerting_id_seq OWNED BY public.alerting.id;
|
|
CREATE SEQUENCE public.archived_alert_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
ALTER SEQUENCE public.archived_alert_id_seq OWNED BY public.archived_alert.id;
|
|
CREATE TABLE public.auth_connect_email (
|
|
id integer NOT NULL,
|
|
email_id integer NOT NULL,
|
|
user_id integer NOT NULL,
|
|
connection_code text,
|
|
connection_email_sent_time timestamp with time zone
|
|
);
|
|
CREATE SEQUENCE public.auth_connect_email_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
ALTER SEQUENCE public.auth_connect_email_id_seq OWNED BY public.auth_connect_email.id;
|
|
CREATE TABLE public.auth_sign_key (
|
|
id integer NOT NULL,
|
|
user_id integer NOT NULL,
|
|
key text NOT NULL
|
|
);
|
|
CREATE SEQUENCE public.auth_sign_key_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
ALTER SEQUENCE public.auth_sign_key_id_seq OWNED BY public.auth_sign_key.id;
|
|
CREATE TABLE public.auth_token (
|
|
id integer NOT NULL,
|
|
user_id integer,
|
|
auth_token text NOT NULL,
|
|
created_at timestamp with time zone DEFAULT now() NOT NULL,
|
|
device_id integer
|
|
);
|
|
CREATE SEQUENCE public.auth_token_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
ALTER SEQUENCE public.auth_token_id_seq OWNED BY public.auth_token.id;
|
|
CREATE TABLE public.device (
|
|
id integer NOT NULL,
|
|
user_id integer NOT NULL,
|
|
phone_model text,
|
|
location public.geography,
|
|
updated_at timestamp with time zone DEFAULT now() NOT NULL,
|
|
created_at timestamp with time zone DEFAULT now() NOT NULL,
|
|
altitude numeric,
|
|
heading numeric,
|
|
speed numeric,
|
|
accuracy numeric,
|
|
altitude_accuracy numeric,
|
|
radius_all numeric,
|
|
radius_reach numeric,
|
|
fcm_token text,
|
|
uuid uuid DEFAULT public.gen_random_uuid(),
|
|
notification_alert_level text,
|
|
preferred_emergency_call text
|
|
);
|
|
CREATE SEQUENCE public.device_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
ALTER SEQUENCE public.device_id_seq OWNED BY public.device.id;
|
|
CREATE TABLE public.email (
|
|
id integer NOT NULL,
|
|
user_id integer NOT NULL,
|
|
email text NOT NULL,
|
|
verified boolean DEFAULT false NOT NULL,
|
|
created_at timestamp with time zone DEFAULT now() NOT NULL,
|
|
verification_code uuid DEFAULT public.gen_random_uuid() NOT NULL,
|
|
verification_email_sent boolean DEFAULT false NOT NULL,
|
|
verification_email_sent_time timestamp with time zone
|
|
);
|
|
CREATE SEQUENCE public.email_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
ALTER SEQUENCE public.email_id_seq OWNED BY public.email.id;
|
|
CREATE SEQUENCE public.emergency_contact_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
ALTER SEQUENCE public.emergency_contact_id_seq OWNED BY public.relative.id;
|
|
CREATE TABLE public.enum_alert_closed_by (
|
|
value text NOT NULL
|
|
);
|
|
CREATE TABLE public.enum_alert_level (
|
|
value text NOT NULL
|
|
);
|
|
CREATE TABLE public.enum_alert_state (
|
|
value text NOT NULL
|
|
);
|
|
CREATE TABLE public.enum_alerting_reason (
|
|
value text NOT NULL
|
|
);
|
|
CREATE TABLE public.enum_content_type (
|
|
value text NOT NULL
|
|
);
|
|
CREATE TABLE public.enum_emergency_call (
|
|
value text NOT NULL
|
|
);
|
|
CREATE TABLE public.enum_user_login_request_type (
|
|
value text NOT NULL
|
|
);
|
|
CREATE TABLE public.enum_user_role (
|
|
value text NOT NULL
|
|
);
|
|
CREATE TABLE public.external_public_config (
|
|
key text NOT NULL,
|
|
value text NOT NULL
|
|
);
|
|
CREATE SEQUENCE public.global_alerting_updated_seq
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
CREATE SEQUENCE public.message_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
ALTER SEQUENCE public.message_id_seq OWNED BY public.message.id;
|
|
CREATE SEQUENCE public.phone_number_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
ALTER SEQUENCE public.phone_number_id_seq OWNED BY public.phone_number.id;
|
|
CREATE TABLE public.relative_allow (
|
|
id integer NOT NULL,
|
|
allowed boolean,
|
|
relative_id integer NOT NULL,
|
|
ask_notification_sent boolean
|
|
);
|
|
CREATE SEQUENCE public.relative_allow_in_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
ALTER SEQUENCE public.relative_allow_in_id_seq OWNED BY public.relative_allow.id;
|
|
CREATE SEQUENCE public.relative_invitation_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
ALTER SEQUENCE public.relative_invitation_id_seq OWNED BY public.relative_invitation.id;
|
|
CREATE TABLE public."user" (
|
|
id integer NOT NULL,
|
|
username text,
|
|
created_at timestamp with time zone DEFAULT now() NOT NULL,
|
|
updated_at timestamp with time zone DEFAULT now(),
|
|
deleted boolean DEFAULT false NOT NULL
|
|
);
|
|
CREATE TABLE public.user_avatar (
|
|
id integer NOT NULL,
|
|
user_id integer NOT NULL,
|
|
image_file_uuid uuid
|
|
);
|
|
CREATE SEQUENCE public.user_avatar_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
ALTER SEQUENCE public.user_avatar_id_seq OWNED BY public.user_avatar.id;
|
|
CREATE TABLE public.user_login_request (
|
|
id integer NOT NULL,
|
|
type text NOT NULL,
|
|
user_id integer NOT NULL,
|
|
phone_number_id integer,
|
|
email_id integer,
|
|
updated_at timestamp with time zone DEFAULT now()
|
|
);
|
|
CREATE SEQUENCE public.user_connect_request_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
ALTER SEQUENCE public.user_connect_request_id_seq OWNED BY public.user_login_request.id;
|
|
CREATE TABLE public.user_group (
|
|
id integer NOT NULL,
|
|
name text NOT NULL
|
|
);
|
|
CREATE SEQUENCE public.user_group_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
ALTER SEQUENCE public.user_group_id_seq OWNED BY public.user_group.id;
|
|
CREATE TABLE public.user_group_member (
|
|
id integer NOT NULL,
|
|
user_id integer NOT NULL,
|
|
user_group_id integer NOT NULL
|
|
);
|
|
CREATE SEQUENCE public.user_group_member_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
ALTER SEQUENCE public.user_group_member_id_seq OWNED BY public.user_group_member.id;
|
|
CREATE SEQUENCE public.user_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
ALTER SEQUENCE public.user_id_seq OWNED BY public."user".id;
|
|
CREATE TABLE public.user_phone_number_relative (
|
|
id integer NOT NULL,
|
|
user_id integer NOT NULL,
|
|
phone_number_id integer NOT NULL
|
|
);
|
|
CREATE SEQUENCE public.user_relative_phone_number_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
ALTER SEQUENCE public.user_relative_phone_number_id_seq OWNED BY public.user_phone_number_relative.id;
|
|
CREATE TABLE public.user_role (
|
|
id integer NOT NULL,
|
|
user_id integer NOT NULL,
|
|
role text NOT NULL
|
|
);
|
|
CREATE SEQUENCE public.user_role_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
ALTER SEQUENCE public.user_role_id_seq OWNED BY public.user_role.id;
|
|
CREATE VIEW public.view_relative_invitation_phone_number AS
|
|
SELECT user_phone_number_relative.phone_number_id,
|
|
relative_invitation.id AS relative_invitation_id,
|
|
upnri_to.phone_number_id AS to_phone_number_id
|
|
FROM ((public.relative_invitation
|
|
JOIN public.user_phone_number_relative ON ((relative_invitation.user_id = user_phone_number_relative.user_id)))
|
|
JOIN public.user_phone_number_relative upnri_to ON ((relative_invitation.to_user_id = upnri_to.user_id)));
|
|
CREATE VIEW public.view_relative_phone_number AS
|
|
SELECT user_phone_number_relative.phone_number_id,
|
|
relative.id AS relative_id,
|
|
upnr_to.phone_number_id AS to_phone_number_id
|
|
FROM ((public.relative
|
|
JOIN public.user_phone_number_relative ON ((relative.user_id = user_phone_number_relative.user_id)))
|
|
JOIN public.user_phone_number_relative upnr_to ON ((relative.to_user_id = upnr_to.user_id)));
|
|
ALTER TABLE ONLY public.alert ALTER COLUMN id SET DEFAULT nextval('public.alert_id_seq'::regclass);
|
|
ALTER TABLE ONLY public.alert_group ALTER COLUMN id SET DEFAULT nextval('public.alert_group_id_seq'::regclass);
|
|
ALTER TABLE ONLY public.alert_group_link ALTER COLUMN id SET DEFAULT nextval('public.alert_group_link_id_seq'::regclass);
|
|
ALTER TABLE ONLY public.alert_link ALTER COLUMN id SET DEFAULT nextval('public.alert_link_id_seq'::regclass);
|
|
ALTER TABLE ONLY public.alerted ALTER COLUMN id SET DEFAULT nextval('public.alerted_id_seq'::regclass);
|
|
ALTER TABLE ONLY public.alerting ALTER COLUMN id SET DEFAULT nextval('public.alerting_id_seq'::regclass);
|
|
ALTER TABLE ONLY public.archived_alert ALTER COLUMN id SET DEFAULT nextval('public.archived_alert_id_seq'::regclass);
|
|
ALTER TABLE ONLY public.auth_connect_email ALTER COLUMN id SET DEFAULT nextval('public.auth_connect_email_id_seq'::regclass);
|
|
ALTER TABLE ONLY public.auth_sign_key ALTER COLUMN id SET DEFAULT nextval('public.auth_sign_key_id_seq'::regclass);
|
|
ALTER TABLE ONLY public.auth_token ALTER COLUMN id SET DEFAULT nextval('public.auth_token_id_seq'::regclass);
|
|
ALTER TABLE ONLY public.device ALTER COLUMN id SET DEFAULT nextval('public.device_id_seq'::regclass);
|
|
ALTER TABLE ONLY public.email ALTER COLUMN id SET DEFAULT nextval('public.email_id_seq'::regclass);
|
|
ALTER TABLE ONLY public.message ALTER COLUMN id SET DEFAULT nextval('public.message_id_seq'::regclass);
|
|
ALTER TABLE ONLY public.phone_number ALTER COLUMN id SET DEFAULT nextval('public.phone_number_id_seq'::regclass);
|
|
ALTER TABLE ONLY public.relative ALTER COLUMN id SET DEFAULT nextval('public.emergency_contact_id_seq'::regclass);
|
|
ALTER TABLE ONLY public.relative_allow ALTER COLUMN id SET DEFAULT nextval('public.relative_allow_in_id_seq'::regclass);
|
|
ALTER TABLE ONLY public.relative_invitation ALTER COLUMN id SET DEFAULT nextval('public.relative_invitation_id_seq'::regclass);
|
|
ALTER TABLE ONLY public."user" ALTER COLUMN id SET DEFAULT nextval('public.user_id_seq'::regclass);
|
|
ALTER TABLE ONLY public.user_avatar ALTER COLUMN id SET DEFAULT nextval('public.user_avatar_id_seq'::regclass);
|
|
ALTER TABLE ONLY public.user_group ALTER COLUMN id SET DEFAULT nextval('public.user_group_id_seq'::regclass);
|
|
ALTER TABLE ONLY public.user_group_member ALTER COLUMN id SET DEFAULT nextval('public.user_group_member_id_seq'::regclass);
|
|
ALTER TABLE ONLY public.user_login_request ALTER COLUMN id SET DEFAULT nextval('public.user_connect_request_id_seq'::regclass);
|
|
ALTER TABLE ONLY public.user_phone_number_relative ALTER COLUMN id SET DEFAULT nextval('public.user_relative_phone_number_id_seq'::regclass);
|
|
ALTER TABLE ONLY public.user_role ALTER COLUMN id SET DEFAULT nextval('public.user_role_id_seq'::regclass);
|
|
ALTER TABLE ONLY public.alert_group_link
|
|
ADD CONSTRAINT alert_group_link_alert_group_id_alert_id_key UNIQUE (alert_group_id, alert_id);
|
|
ALTER TABLE ONLY public.alert_group_link
|
|
ADD CONSTRAINT alert_group_link_pkey PRIMARY KEY (id);
|
|
ALTER TABLE ONLY public.alert_group
|
|
ADD CONSTRAINT alert_group_pkey PRIMARY KEY (id);
|
|
ALTER TABLE ONLY public.enum_alert_level
|
|
ADD CONSTRAINT alert_level_pkey PRIMARY KEY (value);
|
|
ALTER TABLE ONLY public.alert_link
|
|
ADD CONSTRAINT alert_link_alert1_id_alert2_id_key UNIQUE (alert1_id, alert2_id);
|
|
ALTER TABLE ONLY public.alert_link
|
|
ADD CONSTRAINT alert_link_pkey PRIMARY KEY (id);
|
|
ALTER TABLE ONLY public.alert
|
|
ADD CONSTRAINT alert_pkey PRIMARY KEY (id);
|
|
ALTER TABLE ONLY public.enum_alert_state
|
|
ADD CONSTRAINT alert_state_pkey PRIMARY KEY (value);
|
|
ALTER TABLE ONLY public.alert_tag
|
|
ADD CONSTRAINT alert_tag_pkey PRIMARY KEY (value);
|
|
ALTER TABLE ONLY public.alert
|
|
ADD CONSTRAINT alert_uuid_key UNIQUE (uuid);
|
|
ALTER TABLE ONLY public.alerted
|
|
ADD CONSTRAINT alerted_pkey PRIMARY KEY (id);
|
|
ALTER TABLE ONLY public.alerted
|
|
ADD CONSTRAINT alerted_user_id_archived_alert_id_key UNIQUE (user_id, archived_alert_id);
|
|
ALTER TABLE ONLY public.alerting
|
|
ADD CONSTRAINT alerting_pkey PRIMARY KEY (id);
|
|
ALTER TABLE ONLY public.enum_alerting_reason
|
|
ADD CONSTRAINT alerting_reason_pkey PRIMARY KEY (value);
|
|
ALTER TABLE ONLY public.alerting
|
|
ADD CONSTRAINT alerting_user_id_alert_id_key UNIQUE (user_id, alert_id);
|
|
ALTER TABLE ONLY public.archived_alert
|
|
ADD CONSTRAINT archived_alert_pkey PRIMARY KEY (id);
|
|
ALTER TABLE ONLY public.auth_connect_email
|
|
ADD CONSTRAINT auth_connect_email_pkey PRIMARY KEY (id);
|
|
ALTER TABLE ONLY public.auth_connect_email
|
|
ADD CONSTRAINT auth_connect_email_user_id_key UNIQUE (user_id);
|
|
ALTER TABLE ONLY public.auth_sign_key
|
|
ADD CONSTRAINT auth_sign_key_pkey PRIMARY KEY (id);
|
|
ALTER TABLE ONLY public.auth_sign_key
|
|
ADD CONSTRAINT auth_sign_key_user_id_key UNIQUE (user_id);
|
|
ALTER TABLE ONLY public.auth_token
|
|
ADD CONSTRAINT auth_token_device_id_key UNIQUE (device_id);
|
|
ALTER TABLE ONLY public.auth_token
|
|
ADD CONSTRAINT auth_token_pkey PRIMARY KEY (id);
|
|
ALTER TABLE ONLY public.enum_content_type
|
|
ADD CONSTRAINT content_type_enum_pkey PRIMARY KEY (value);
|
|
ALTER TABLE ONLY public.device
|
|
ADD CONSTRAINT device_pkey PRIMARY KEY (id);
|
|
ALTER TABLE ONLY public.email
|
|
ADD CONSTRAINT email_pkey PRIMARY KEY (id);
|
|
ALTER TABLE ONLY public.email
|
|
ADD CONSTRAINT email_user_id_key UNIQUE (user_id);
|
|
ALTER TABLE ONLY public.enum_alert_closed_by
|
|
ADD CONSTRAINT enum_alert_closed_by_pkey PRIMARY KEY (value);
|
|
ALTER TABLE ONLY public.enum_emergency_call
|
|
ADD CONSTRAINT enum_emergency_call_pkey PRIMARY KEY (value);
|
|
ALTER TABLE ONLY public.enum_user_login_request_type
|
|
ADD CONSTRAINT enum_user_login_request_type_pkey PRIMARY KEY (value);
|
|
ALTER TABLE ONLY public.external_public_config
|
|
ADD CONSTRAINT external_public_config_pkey PRIMARY KEY (key);
|
|
ALTER TABLE ONLY public.message
|
|
ADD CONSTRAINT message_pkey PRIMARY KEY (id);
|
|
ALTER TABLE ONLY public.phone_number
|
|
ADD CONSTRAINT phone_number_number_country_key UNIQUE (number, country);
|
|
ALTER TABLE ONLY public.phone_number
|
|
ADD CONSTRAINT phone_number_pkey PRIMARY KEY (id);
|
|
ALTER TABLE ONLY public.relative_allow
|
|
ADD CONSTRAINT relative_allow_in_pkey PRIMARY KEY (id);
|
|
ALTER TABLE ONLY public.relative_invitation
|
|
ADD CONSTRAINT relative_invitation_pkey PRIMARY KEY (id);
|
|
ALTER TABLE ONLY public.relative_invitation
|
|
ADD CONSTRAINT relative_invitation_user_id_to_user_id_key UNIQUE (user_id, to_user_id);
|
|
ALTER TABLE ONLY public.relative_allow
|
|
ADD CONSTRAINT relative_phone_number_allow_relative_phone_number_id_key UNIQUE (relative_id);
|
|
ALTER TABLE ONLY public.relative
|
|
ADD CONSTRAINT relative_phone_number_pkey PRIMARY KEY (id);
|
|
ALTER TABLE ONLY public.relative
|
|
ADD CONSTRAINT relative_phone_number_user_id_user_index_key UNIQUE (user_id, user_index);
|
|
ALTER TABLE ONLY public.relative
|
|
ADD CONSTRAINT relative_user_id_to_user_id_key UNIQUE (user_id, to_user_id);
|
|
ALTER TABLE ONLY public.enum_user_role
|
|
ADD CONSTRAINT role_pkey PRIMARY KEY (value);
|
|
ALTER TABLE ONLY public.user_avatar
|
|
ADD CONSTRAINT user_avatar_pkey PRIMARY KEY (id);
|
|
ALTER TABLE ONLY public.user_avatar
|
|
ADD CONSTRAINT user_avatar_user_id_key UNIQUE (user_id);
|
|
ALTER TABLE ONLY public.user_login_request
|
|
ADD CONSTRAINT user_connect_request_pkey PRIMARY KEY (id);
|
|
ALTER TABLE ONLY public.user_group_member
|
|
ADD CONSTRAINT user_group_member_pkey PRIMARY KEY (id);
|
|
ALTER TABLE ONLY public.user_group
|
|
ADD CONSTRAINT user_group_name_key UNIQUE (name);
|
|
ALTER TABLE ONLY public.user_group
|
|
ADD CONSTRAINT user_group_pkey PRIMARY KEY (id);
|
|
ALTER TABLE ONLY public."user"
|
|
ADD CONSTRAINT user_login_key UNIQUE (username);
|
|
ALTER TABLE ONLY public.user_login_request
|
|
ADD CONSTRAINT user_login_request_user_id_key UNIQUE (user_id);
|
|
ALTER TABLE ONLY public.user_phone_number_relative
|
|
ADD CONSTRAINT user_phone_number_relative_user_id_key UNIQUE (user_id);
|
|
ALTER TABLE ONLY public."user"
|
|
ADD CONSTRAINT user_pkey PRIMARY KEY (id);
|
|
ALTER TABLE ONLY public.user_phone_number_relative
|
|
ADD CONSTRAINT user_relative_phone_number_pkey PRIMARY KEY (id);
|
|
ALTER TABLE ONLY public.user_role
|
|
ADD CONSTRAINT user_role_pkey PRIMARY KEY (id);
|
|
ALTER TABLE ONLY public.user_role
|
|
ADD CONSTRAINT user_role_user_id_role_key UNIQUE (user_id, role);
|
|
CREATE INDEX alert_state ON public.alert USING hash (state);
|
|
CREATE INDEX device_fcm ON public.device USING hash (fcm_token);
|
|
CREATE INDEX device_location_geography ON public.device USING gist (location);
|
|
CREATE UNIQUE INDEX email_email_where_verified_true_key ON public.email USING btree (email) WHERE verified;
|
|
CREATE TRIGGER set_public_alert_updated_at BEFORE UPDATE ON public.alert FOR EACH ROW EXECUTE PROCEDURE public.set_current_timestamp_updated_at_for_alert();
|
|
CREATE TRIGGER set_public_alerting_updated_at BEFORE UPDATE ON public.alerting FOR EACH ROW EXECUTE PROCEDURE public.set_current_timestamp_updated_at();
|
|
COMMENT ON TRIGGER set_public_alerting_updated_at ON public.alerting IS 'trigger to set value of column "updated_at" to current timestamp on row update';
|
|
CREATE TRIGGER set_public_device_updated_at BEFORE UPDATE ON public.device FOR EACH ROW EXECUTE PROCEDURE public.set_current_timestamp_updated_at();
|
|
COMMENT ON TRIGGER set_public_device_updated_at ON public.device IS 'trigger to set value of column "updated_at" to current timestamp on row update';
|
|
CREATE TRIGGER set_public_phone_number_updated_at BEFORE UPDATE ON public.phone_number FOR EACH ROW EXECUTE PROCEDURE public.set_current_timestamp_updated_at();
|
|
COMMENT ON TRIGGER set_public_phone_number_updated_at ON public.phone_number IS 'trigger to set value of column "updated_at" to current timestamp on row update';
|
|
CREATE TRIGGER set_public_relative_invitation_updated_at BEFORE UPDATE ON public.relative_invitation FOR EACH ROW EXECUTE PROCEDURE public.set_current_timestamp_updated_at();
|
|
COMMENT ON TRIGGER set_public_relative_invitation_updated_at ON public.relative_invitation IS 'trigger to set value of column "updated_at" to current timestamp on row update';
|
|
CREATE TRIGGER set_public_user_login_request_updated_at BEFORE UPDATE ON public.user_login_request FOR EACH ROW EXECUTE PROCEDURE public.set_current_timestamp_updated_at();
|
|
COMMENT ON TRIGGER set_public_user_login_request_updated_at ON public.user_login_request IS 'trigger to set value of column "updated_at" to current timestamp on row update';
|
|
CREATE TRIGGER set_public_user_updated_at BEFORE UPDATE ON public."user" FOR EACH ROW EXECUTE PROCEDURE public.set_current_timestamp_updated_at();
|
|
COMMENT ON TRIGGER set_public_user_updated_at ON public."user" IS 'trigger to set value of column "updated_at" to current timestamp on row update';
|
|
CREATE TRIGGER trigger_alert_increment_notified_count_after_alerting_insert AFTER INSERT ON public.alerting FOR EACH ROW EXECUTE PROCEDURE public.alert_increment_notified_count();
|
|
CREATE TRIGGER trigger_alert_update_propagate_to_alerting_after_update AFTER UPDATE ON public.alert FOR EACH ROW EXECUTE PROCEDURE public.alert_update_propagate_to_alerting();
|
|
CREATE TRIGGER trigger_alerting__updated_seq__increment_sequence_before_insert BEFORE INSERT ON public.alerting FOR EACH ROW EXECUTE PROCEDURE public.alerting__updated_seq__increment_sequence();
|
|
CREATE TRIGGER trigger_alerting__updated_seq__increment_sequence_before_update BEFORE UPDATE ON public.alerting FOR EACH ROW EXECUTE PROCEDURE public.alerting__updated_seq__increment_sequence();
|
|
CREATE TRIGGER trigger_device__device_update_fcm_token AFTER UPDATE ON public.device FOR EACH ROW WHEN ((old.fcm_token IS DISTINCT FROM new.fcm_token)) EXECUTE PROCEDURE public.device_update_fcm_token();
|
|
CREATE TRIGGER trigger_phone_number__number__trim_leading_zero BEFORE INSERT OR UPDATE ON public.phone_number FOR EACH ROW EXECUTE PROCEDURE public.phone_number__number__trim_leading_zero();
|
|
ALTER TABLE ONLY public.alert
|
|
ADD CONSTRAINT alert_alert_tag_fkey FOREIGN KEY (alert_tag) REFERENCES public.alert_tag(value) ON UPDATE SET NULL ON DELETE SET NULL;
|
|
ALTER TABLE ONLY public.alert
|
|
ADD CONSTRAINT alert_closed_by_fkey FOREIGN KEY (closed_by) REFERENCES public.enum_alert_closed_by(value) ON UPDATE RESTRICT ON DELETE RESTRICT;
|
|
ALTER TABLE ONLY public.alert
|
|
ADD CONSTRAINT alert_device_id_fkey FOREIGN KEY (device_id) REFERENCES public.device(id) ON UPDATE SET NULL ON DELETE SET NULL;
|
|
ALTER TABLE ONLY public.alert_group_link
|
|
ADD CONSTRAINT alert_group_link_alert_group_id_fkey FOREIGN KEY (alert_group_id) REFERENCES public.alert_group(id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
ALTER TABLE ONLY public.alert_group_link
|
|
ADD CONSTRAINT alert_group_link_alert_id_fkey FOREIGN KEY (alert_id) REFERENCES public.alert(id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
ALTER TABLE ONLY public.alert
|
|
ADD CONSTRAINT alert_level_fkey FOREIGN KEY (level) REFERENCES public.enum_alert_level(value) ON UPDATE RESTRICT ON DELETE RESTRICT;
|
|
ALTER TABLE ONLY public.alert_link
|
|
ADD CONSTRAINT alert_link_alert1_id_fkey FOREIGN KEY (alert1_id) REFERENCES public.alert(id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
ALTER TABLE ONLY public.alert_link
|
|
ADD CONSTRAINT alert_link_alert2_id_fkey FOREIGN KEY (alert2_id) REFERENCES public.alert(id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
ALTER TABLE ONLY public.alert
|
|
ADD CONSTRAINT alert_phone_number_id_fkey FOREIGN KEY (phone_number_id) REFERENCES public.phone_number(id) ON UPDATE SET NULL ON DELETE SET NULL;
|
|
ALTER TABLE ONLY public.alert
|
|
ADD CONSTRAINT alert_state_fkey FOREIGN KEY (state) REFERENCES public.enum_alert_state(value) ON UPDATE SET NULL ON DELETE SET NULL;
|
|
ALTER TABLE ONLY public.alert
|
|
ADD CONSTRAINT alert_user_id_fkey FOREIGN KEY (user_id) REFERENCES public."user"(id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
ALTER TABLE ONLY public.alerted
|
|
ADD CONSTRAINT alerted_archived_alert_id_fkey FOREIGN KEY (archived_alert_id) REFERENCES public.archived_alert(id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
ALTER TABLE ONLY public.alerted
|
|
ADD CONSTRAINT alerted_reason_fkey FOREIGN KEY (reason) REFERENCES public.enum_alerting_reason(value);
|
|
ALTER TABLE ONLY public.alerted
|
|
ADD CONSTRAINT alerted_relative_user_id_fkey FOREIGN KEY (relative_user_id) REFERENCES public."user"(id);
|
|
ALTER TABLE ONLY public.alerted
|
|
ADD CONSTRAINT alerted_user_id_fkey FOREIGN KEY (user_id) REFERENCES public."user"(id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
ALTER TABLE ONLY public.alerting
|
|
ADD CONSTRAINT alerting_alert_id_fkey FOREIGN KEY (alert_id) REFERENCES public.alert(id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
ALTER TABLE ONLY public.alerting
|
|
ADD CONSTRAINT alerting_reason_fkey FOREIGN KEY (reason) REFERENCES public.enum_alerting_reason(value) ON UPDATE RESTRICT ON DELETE RESTRICT;
|
|
ALTER TABLE ONLY public.alerting
|
|
ADD CONSTRAINT alerting_relative_user_id_fkey FOREIGN KEY (relative_user_id) REFERENCES public."user"(id) ON UPDATE SET NULL ON DELETE SET NULL;
|
|
ALTER TABLE ONLY public.alerting
|
|
ADD CONSTRAINT alerting_user_id_fkey FOREIGN KEY (user_id) REFERENCES public."user"(id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
ALTER TABLE ONLY public.archived_alert
|
|
ADD CONSTRAINT archived_alert_alert_tag_fkey FOREIGN KEY (alert_tag) REFERENCES public.alert_tag(value);
|
|
ALTER TABLE ONLY public.archived_alert
|
|
ADD CONSTRAINT archived_alert_closed_by_fkey FOREIGN KEY (closed_by) REFERENCES public.enum_alert_closed_by(value);
|
|
ALTER TABLE ONLY public.archived_alert
|
|
ADD CONSTRAINT archived_alert_device_id_fkey FOREIGN KEY (device_id) REFERENCES public.device(id);
|
|
ALTER TABLE ONLY public.archived_alert
|
|
ADD CONSTRAINT archived_alert_level_fkey FOREIGN KEY (level) REFERENCES public.enum_alert_level(value);
|
|
ALTER TABLE ONLY public.archived_alert
|
|
ADD CONSTRAINT archived_alert_phone_number_id_fkey FOREIGN KEY (phone_number_id) REFERENCES public.phone_number(id);
|
|
ALTER TABLE ONLY public.archived_alert
|
|
ADD CONSTRAINT archived_alert_user_id_fkey FOREIGN KEY (user_id) REFERENCES public."user"(id);
|
|
ALTER TABLE ONLY public.auth_connect_email
|
|
ADD CONSTRAINT auth_connect_email_email_id_fkey FOREIGN KEY (email_id) REFERENCES public.email(id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
ALTER TABLE ONLY public.auth_connect_email
|
|
ADD CONSTRAINT auth_connect_email_user_id_fkey FOREIGN KEY (user_id) REFERENCES public."user"(id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
ALTER TABLE ONLY public.auth_sign_key
|
|
ADD CONSTRAINT auth_sign_key_user_id_fkey FOREIGN KEY (user_id) REFERENCES public."user"(id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
ALTER TABLE ONLY public.auth_token
|
|
ADD CONSTRAINT auth_token_device_id_fkey FOREIGN KEY (device_id) REFERENCES public.device(id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
ALTER TABLE ONLY public.auth_token
|
|
ADD CONSTRAINT auth_token_user_id_fkey FOREIGN KEY (user_id) REFERENCES public."user"(id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
ALTER TABLE ONLY public.device
|
|
ADD CONSTRAINT device_notification_alert_level_fkey FOREIGN KEY (notification_alert_level) REFERENCES public.enum_alert_level(value) ON UPDATE RESTRICT ON DELETE RESTRICT;
|
|
ALTER TABLE ONLY public.device
|
|
ADD CONSTRAINT device_preferred_emergency_call_fkey FOREIGN KEY (preferred_emergency_call) REFERENCES public.enum_emergency_call(value) ON UPDATE RESTRICT ON DELETE RESTRICT;
|
|
ALTER TABLE ONLY public.device
|
|
ADD CONSTRAINT device_user_id_fkey FOREIGN KEY (user_id) REFERENCES public."user"(id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
ALTER TABLE ONLY public.email
|
|
ADD CONSTRAINT email_user_id_fkey FOREIGN KEY (user_id) REFERENCES public."user"(id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
ALTER TABLE ONLY public.message
|
|
ADD CONSTRAINT message_alert_id_fkey FOREIGN KEY (alert_id) REFERENCES public.alert(id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
ALTER TABLE ONLY public.message
|
|
ADD CONSTRAINT message_content_type_fkey FOREIGN KEY (content_type) REFERENCES public.enum_content_type(value) ON UPDATE RESTRICT ON DELETE RESTRICT;
|
|
ALTER TABLE ONLY public.message
|
|
ADD CONSTRAINT message_device_id_fkey FOREIGN KEY (device_id) REFERENCES public.device(id) ON UPDATE SET NULL ON DELETE SET NULL;
|
|
ALTER TABLE ONLY public.message
|
|
ADD CONSTRAINT message_user_id_fkey FOREIGN KEY (user_id) REFERENCES public."user"(id) ON UPDATE SET NULL ON DELETE SET NULL;
|
|
ALTER TABLE ONLY public.phone_number
|
|
ADD CONSTRAINT phone_number_device_id_fkey FOREIGN KEY (device_id) REFERENCES public.device(id) ON UPDATE SET NULL ON DELETE SET NULL;
|
|
ALTER TABLE ONLY public.phone_number
|
|
ADD CONSTRAINT phone_number_user_id_fkey FOREIGN KEY (user_id) REFERENCES public."user"(id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
ALTER TABLE ONLY public.relative_invitation
|
|
ADD CONSTRAINT relative_invitation_to_user_id_fkey FOREIGN KEY (to_user_id) REFERENCES public."user"(id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
ALTER TABLE ONLY public.relative_invitation
|
|
ADD CONSTRAINT relative_invitation_user_id_fkey FOREIGN KEY (user_id) REFERENCES public."user"(id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
ALTER TABLE ONLY public.relative_allow
|
|
ADD CONSTRAINT relative_phone_number_allow_relative_phone_number_id_fkey FOREIGN KEY (relative_id) REFERENCES public.relative(id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
ALTER TABLE ONLY public.relative
|
|
ADD CONSTRAINT relative_phone_number_user_id_fkey FOREIGN KEY (user_id) REFERENCES public."user"(id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
ALTER TABLE ONLY public.user_avatar
|
|
ADD CONSTRAINT user_avatar_user_id_fkey FOREIGN KEY (user_id) REFERENCES public."user"(id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
ALTER TABLE ONLY public.user_login_request
|
|
ADD CONSTRAINT user_connect_request_email_id_fkey FOREIGN KEY (email_id) REFERENCES public.email(id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
ALTER TABLE ONLY public.user_login_request
|
|
ADD CONSTRAINT user_connect_request_phone_number_id_fkey FOREIGN KEY (phone_number_id) REFERENCES public.phone_number(id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
ALTER TABLE ONLY public.user_login_request
|
|
ADD CONSTRAINT user_connect_request_user_id_fkey FOREIGN KEY (user_id) REFERENCES public."user"(id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
ALTER TABLE ONLY public.user_group_member
|
|
ADD CONSTRAINT user_group_member_user_group_id_fkey FOREIGN KEY (user_group_id) REFERENCES public.user_group(id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
ALTER TABLE ONLY public.user_group_member
|
|
ADD CONSTRAINT user_group_member_user_id_fkey FOREIGN KEY (user_id) REFERENCES public."user"(id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
ALTER TABLE ONLY public.user_login_request
|
|
ADD CONSTRAINT user_login_request_type_fkey FOREIGN KEY (type) REFERENCES public.enum_user_login_request_type(value) ON UPDATE RESTRICT ON DELETE RESTRICT;
|
|
ALTER TABLE ONLY public.user_phone_number_relative
|
|
ADD CONSTRAINT user_relative_phone_number_phone_number_id_fkey FOREIGN KEY (phone_number_id) REFERENCES public.phone_number(id) ON UPDATE RESTRICT ON DELETE RESTRICT;
|
|
ALTER TABLE ONLY public.user_phone_number_relative
|
|
ADD CONSTRAINT user_relative_phone_number_user_id_fkey FOREIGN KEY (user_id) REFERENCES public."user"(id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
ALTER TABLE ONLY public.user_role
|
|
ADD CONSTRAINT user_role_role_fkey FOREIGN KEY (role) REFERENCES public.enum_user_role(value) ON UPDATE RESTRICT ON DELETE RESTRICT;
|
|
ALTER TABLE ONLY public.user_role
|
|
ADD CONSTRAINT user_role_user_id_fkey FOREIGN KEY (user_id) REFERENCES public."user"(id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
INSERT INTO public.enum_alert_closed_by VALUES ('user');
|
|
INSERT INTO public.enum_alert_closed_by VALUES ('auto');
|
|
INSERT INTO public.enum_alert_level VALUES ('red');
|
|
INSERT INTO public.enum_alert_level VALUES ('yellow');
|
|
INSERT INTO public.enum_alert_level VALUES ('green');
|
|
INSERT INTO public.enum_alert_state VALUES ('open');
|
|
INSERT INTO public.enum_alert_state VALUES ('closed');
|
|
INSERT INTO public.enum_alerting_reason VALUES ('around');
|
|
INSERT INTO public.enum_alerting_reason VALUES ('relative');
|
|
INSERT INTO public.enum_alerting_reason VALUES ('agent');
|
|
INSERT INTO public.enum_alerting_reason VALUES ('self');
|
|
INSERT INTO public.enum_alerting_reason VALUES ('connect');
|
|
INSERT INTO public.enum_content_type VALUES ('text');
|
|
INSERT INTO public.enum_content_type VALUES ('audio');
|
|
INSERT INTO public.enum_emergency_call VALUES ('voice');
|
|
INSERT INTO public.enum_emergency_call VALUES ('sms');
|
|
INSERT INTO public.enum_user_login_request_type VALUES ('phone_number');
|
|
INSERT INTO public.enum_user_login_request_type VALUES ('email');
|
|
INSERT INTO public.enum_user_role VALUES ('admin');
|
|
INSERT INTO public.enum_user_role VALUES ('user');
|
|
INSERT INTO public.enum_user_role VALUES ('dev');
|