···11-BEGIN;
11+begin;
2233-- DROP ------------------------------------------------------------------------
44-DROP FUNCTION IF EXISTS public.query_crew_members;
55-DROP FUNCTION IF EXISTS public.assign_brigade_members;
66-DROP FUNCTION IF EXISTS public.replace_brigade_members;
77-DROP FUNCTION IF EXISTS public.assign_occurrence_brigades;
88-DROP FUNCTION IF EXISTS public.replace_occurrence_brigades;
44+drop function if exists public.query_crew_members;
55+drop function if exists public.assign_brigade_members;
66+drop function if exists public.replace_brigade_members;
77+drop function if exists public.assign_occurrence_brigades;
88+drop function if exists public.replace_occurrence_brigades;
991010-- CREATE ----------------------------------------------------------------------
11111212-- Returns all users that are in the same brigades as the target user
1313-CREATE OR REPLACE FUNCTION public.query_crew_members(p_user_id UUID)
1414-RETURNS TABLE (member_id UUID, brigade_id UUID)
1515-LANGUAGE plpgsql
1616-STABLE
1717-PARALLEL SAFE
1818-AS $$
1919-BEGIN
2020- RETURN QUERY
2121- SELECT DISTINCT bm.user_id as member_id, bm.brigade_id as brigade_id
2222- FROM public.brigade_membership AS bm
2323- INNER JOIN public.brigade_membership AS target_bm
2424- ON bm.brigade_id = target_bm.brigade_id
2525- WHERE target_bm.user_id = p_user_id
2626- AND bm.user_id <> p_user_id;
2727-END;
1313+create or replace function public.query_crew_members(p_user_id uuid)
1414+returns table (member_id uuid, brigade_id uuid)
1515+language plpgsql
1616+stable
1717+parallel safe
1818+as $$
1919+begin
2020+ return query
2121+ select distinct bm.user_id as member_id, bm.brigade_id as brigade_id
2222+ from public.brigade_membership as bm
2323+ inner join public.brigade_membership as target_bm
2424+ on bm.brigade_id = target_bm.brigade_id
2525+ where target_bm.user_id = p_user_id
2626+ and bm.user_id <> p_user_id;
2727+end;
2828$$;
29293030-- Assign members to a brigade
3131-CREATE OR REPLACE FUNCTION public.assign_brigade_members(
3232- p_brigade_id UUID,
3333- p_members_id UUID []
3131+create or replace function public.assign_brigade_members(
3232+ p_brigade_id uuid,
3333+ p_members_id uuid []
3434)
3535-RETURNS TABLE (inserted_user_id UUID)
3636-LANGUAGE plpgsql
3737-AS $$
3838-BEGIN
3939- RETURN QUERY
4040- INSERT INTO public.brigade_membership AS bm
3535+returns table (inserted_user_id uuid)
3636+language plpgsql
3737+as $$
3838+begin
3939+ return query
4040+ insert into public.brigade_membership as bm
4141 (brigade_id, user_id)
4242- SELECT
4242+ select
4343 p_brigade_id,
4444 member_id
4545- FROM unnest(p_members_id) as member_id
4646- ON CONFLICT (brigade_id, user_id)
4747- DO NOTHING
4848- RETURNING user_id;
4949-END;
4545+ from unnest(p_members_id) as member_id
4646+ on conflict (brigade_id, user_id)
4747+ do nothing
4848+ returning user_id;
4949+end;
5050$$;
515152525353-- Replace assigned members from a brigade
5454-CREATE OR REPLACE FUNCTION public.replace_brigade_members(
5555- p_brigade_id UUID,
5656- p_members_id UUID []
5454+create or replace function public.replace_brigade_members(
5555+ p_brigade_id uuid,
5656+ p_members_id uuid []
5757)
5858-RETURNS TABLE (inserted_user_id UUID)
5959-LANGUAGE plpgsql
6060-AS $$
6161-BEGIN
5858+returns table (inserted_user_id uuid)
5959+language plpgsql
6060+as $$
6161+begin
6262 -- Remove all current members
6363- DELETE FROM public.brigade_membership AS bm
6464- WHERE bm.brigade_id = p_brigade_id;
6363+ delete from public.brigade_membership as bm
6464+ where bm.brigade_id = p_brigade_id;
65656666- -- Assign the new ones
6767- RETURN QUERY
6868- SELECT b.inserted_user_id
6969- FROM public.assign_brigade_members(p_brigade_id, p_members_id) AS b;
7070-END;
6666+ -- Assign the new ones
6767+ return query
6868+ select b.inserted_user_id
6969+ from public.assign_brigade_members(p_brigade_id, p_members_id) as b;
7070+end;
7171$$;
727273737474-- Assign brigades to a occurrence
7575-CREATE OR REPLACE FUNCTION public.assign_occurrence_brigades(
7676- p_occurrence_id UUID,
7777- p_brigades_id UUID []
7575+create or replace function public.assign_occurrence_brigades(
7676+ p_occurrence_id uuid,
7777+ p_brigades_id uuid []
7878)
7979-RETURNS TABLE (inserted_brigade_id UUID)
8080-LANGUAGE plpgsql
8181-AS $$
8282-BEGIN
8383- RETURN QUERY
8484- INSERT INTO public.occurrence_brigade AS oc
7979+returns table (inserted_brigade_id uuid)
8080+language plpgsql
8181+as $$
8282+begin
8383+ return query
8484+ insert into public.occurrence_brigade as oc
8585 (occurrence_id, brigade_id)
8686- SELECT
8686+ select
8787 p_occurrence_id,
8888 brigade_id
8989- FROM unnest(p_brigades_id) as brigade_id
9090- ON CONFLICT (occurrence_id, brigade_id)
9191- DO NOTHING
9292- RETURNING brigade_id;
9393-END;
8989+ from unnest(p_brigades_id) as brigade_id
9090+ on conflict (occurrence_id, brigade_id)
9191+ do nothing
9292+ returning brigade_id;
9393+end;
9494$$;
959596969797--- Replace assigned brigades from a occurrence
9898-CREATE OR REPLACE FUNCTION public.replace_occurrence_brigades(
9999- p_occurrence_id UUID,
100100- p_brigades_id UUID []
9797+-- replace assigned brigades from a occurrence
9898+create or replace function public.replace_occurrence_brigades(
9999+ p_occurrence_id uuid,
100100+ p_brigades_id uuid []
101101)
102102-RETURNS TABLE (inserted_brigade_id UUID)
103103-LANGUAGE plpgsql
104104-AS $$
105105-BEGIN
106106- -- Remove all current assigned brigades
107107- DELETE FROM public.occurrence_brigade AS ob
108108- WHERE ob.occurrence_id = p_occurrence_id;
102102+returns table (inserted_brigade_id uuid)
103103+language plpgsql
104104+as $$
105105+begin
106106+ -- Remove all current assigned brigades
107107+ delete from public.occurrence_brigade as ob
108108+ where ob.occurrence_id = p_occurrence_id;
109109110110- -- Assign the new ones
111111- RETURN QUERY
112112- SELECT o.inserted_brigade_id
113113- FROM public.assign_occurrence_brigades(p_occurrence_id, p_brigades_id) AS o;
114114-END;
110110+ -- Assign the new ones
111111+ return query
112112+ select o.inserted_brigade_id
113113+ from public.assign_occurrence_brigades(p_occurrence_id, p_brigades_id) as o;
114114+end;
115115$$;
116116117117-COMMIT;
117117+commit;
+81-81
priv/sql/create/tables.sql
···11-BEGIN;
11+begin;
2233-- TYPES --------------------------------------------------------------------
4455-CREATE TYPE public.user_role_enum AS ENUM (
55+create type public.user_role_enum as enum (
66 'admin',
77 'analyst',
88 'firefighter',
···1111 'sargeant'
1212);
13131414-CREATE TYPE public.notification_type_enum AS ENUM (
1414+create type public.notification_type_enum as enum (
1515 'fire',
1616 'emergency',
1717 'traffic',
1818 'other'
1919);
20202121-CREATE TYPE public.occurrence_category_enum AS ENUM (
2121+create type public.occurrence_category_enum as enum (
2222 'medic_emergency',
2323 'fire',
2424 'traffic_accident',
2525 'other'
2626);
27272828-CREATE TYPE public.occurrence_subcategory_enum AS ENUM (
2828+create type public.occurrence_subcategory_enum as enum (
2929 -- Medic Emergency,
3030 'heart_stop',
3131 'pre_hospital_care',
···5151 'injured_animal'
5252);
53535454-CREATE TYPE occurrence_priority_enum AS ENUM (
5454+create type occurrence_priority_enum as enum (
5555 'low',
5656 'medium',
5757 'high'
···59596060-- TABLES -------------------------------------------------------------------
61616262-CREATE TABLE IF NOT EXISTS public.user_account (
6363- id UUID PRIMARY KEY DEFAULT UUIDV7(),
6464- user_role USER_ROLE_ENUM NOT NULL,
6565- full_name TEXT NOT NULL,
6666- password_hash TEXT NOT NULL,
6767- registration TEXT UNIQUE NOT NULL,
6868- phone TEXT UNIQUE DEFAULT NULL,
6969- email TEXT NOT NULL UNIQUE,
7070- is_active BOOLEAN NOT NULL DEFAULT TRUE,
7171- created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
7272- updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
6262+create table if not exists public.user_account (
6363+ id uuid primary key default uuidv7(),
6464+ user_role user_role_enum not null,
6565+ full_name text not null,
6666+ password_hash text not null,
6767+ registration text unique not null,
6868+ phone text unique default null,
6969+ email text not null unique,
7070+ is_active boolean not null default true,
7171+ created_at timestamp not null default current_timestamp,
7272+ updated_at timestamp not null default current_timestamp
7373);
74747575-CREATE INDEX IF NOT EXISTS idx_user_registration
7676-ON public.user_account (registration);
7575+create index if not exists idx_user_registration
7676+on public.user_account (registration);
777778787979-CREATE TABLE IF NOT EXISTS public.user_notification_preference (
8080- id UUID PRIMARY KEY DEFAULT UUIDV7(),
8181- user_id UUID NOT NULL REFERENCES public.user_account (id)
8282- ON UPDATE CASCADE ON DELETE CASCADE,
8383- notification_type NOTIFICATION_TYPE_ENUM NOT NULL,
8484- enabled BOOLEAN NOT NULL DEFAULT FALSE,
8585- created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
8686- updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
8787- UNIQUE (user_id, notification_type)
7979+create table if not exists public.user_notification_preference (
8080+ id uuid primary key default uuidv7(),
8181+ user_id uuid not null references public.user_account (id)
8282+ on update cascade on delete cascade,
8383+ notification_type notification_type_enum not null,
8484+ enabled boolean not null default false,
8585+ created_at timestamp not null default current_timestamp,
8686+ updated_at timestamp not null default current_timestamp,
8787+ unique (user_id, notification_type)
8888);
898990909191-CREATE TABLE IF NOT EXISTS public.brigade (
9292- id UUID PRIMARY KEY DEFAULT UUIDV7(),
9393- leader_id UUID NOT NULL REFERENCES public.user_account (id)
9494- ON UPDATE CASCADE ON DELETE CASCADE,
9595- vehicle_code TEXT NOT NULL,
9696- brigade_name TEXT NOT NULL,
9797- description TEXT DEFAULT NULL,
9898- is_active BOOLEAN NOT NULL DEFAULT FALSE,
9999- created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
100100- updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
9191+create table if not exists public.brigade (
9292+ id uuid primary key default uuidv7(),
9393+ leader_id uuid not null references public.user_account (id)
9494+ on update cascade on delete cascade,
9595+ vehicle_code text not null,
9696+ brigade_name text not null,
9797+ description text default null,
9898+ is_active boolean not null default false,
9999+ created_at timestamp not null default current_timestamp,
100100+ updated_at timestamp not null default current_timestamp
101101);
102102103103-CREATE INDEX IF NOT EXISTS idx_brigade_leader_id
104104-ON public.brigade (leader_id);
103103+create index if not exists idx_brigade_leader_id
104104+on public.brigade (leader_id);
105105106106107107-CREATE TABLE IF NOT EXISTS public.brigade_membership (
108108- id UUID PRIMARY KEY DEFAULT UUIDV7(),
109109- brigade_id UUID NOT NULL REFERENCES public.brigade (id)
110110- ON UPDATE CASCADE ON DELETE CASCADE,
111111- user_id UUID NOT NULL REFERENCES public.user_account (id)
112112- ON UPDATE CASCADE ON DELETE CASCADE,
113113- UNIQUE (user_id, brigade_id)
107107+create table if not exists public.brigade_membership (
108108+ id uuid primary key default uuidv7(),
109109+ brigade_id uuid not null references public.brigade (id)
110110+ on update cascade on delete cascade,
111111+ user_id uuid not null references public.user_account (id)
112112+ on update cascade on delete cascade,
113113+ unique (user_id, brigade_id)
114114);
115115116116-CREATE INDEX IF NOT EXISTS idx_brigade_membership_user_id
117117-ON public.brigade_membership (user_id);
116116+create index if not exists idx_brigade_membership_user_id
117117+on public.brigade_membership (user_id);
118118119119-CREATE INDEX IF NOT EXISTS idx_brigade_membership_brigade_id
120120-ON public.brigade_membership (brigade_id);
119119+create index if not exists idx_brigade_membership_brigade_id
120120+on public.brigade_membership (brigade_id);
121121122122123123-CREATE TABLE IF NOT EXISTS public.occurrence (
124124- id UUID PRIMARY KEY DEFAULT UUIDV7(),
125125- applicant_id UUID NOT NULL REFERENCES public.user_account (id)
126126- ON UPDATE CASCADE ON DELETE CASCADE,
127127- occurrence_category OCCURRENCE_CATEGORY_ENUM NOT NULL,
128128- occurrence_subcategory OCCURRENCE_SUBCATEGORY_ENUM,
129129- priority OCCURRENCE_PRIORITY_ENUM NOT NULL,
130130- description TEXT,
131131- occurrence_location FLOAT [],
132132- reference_point TEXT,
133133- created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
134134- arrived_at TIMESTAMP DEFAULT NULL,
135135- updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
136136- resolved_at TIMESTAMP DEFAULT NULL
123123+create table if not exists public.occurrence (
124124+ id uuid primary key default uuidv7(),
125125+ applicant_id uuid not null references public.user_account (id)
126126+ on update cascade on delete cascade,
127127+ occurrence_category occurrence_category_enum not null,
128128+ occurrence_subcategory occurrence_subcategory_enum,
129129+ priority occurrence_priority_enum not null,
130130+ description text,
131131+ occurrence_location float [],
132132+ reference_point text,
133133+ created_at timestamp not null default current_timestamp,
134134+ arrived_at timestamp default null,
135135+ updated_at timestamp not null default current_timestamp,
136136+ resolved_at timestamp default null
137137);
138138139139-CREATE INDEX IF NOT EXISTS idx_occurrence_applicant_id
140140-ON public.occurrence (applicant_id);
139139+create index if not exists idx_occurrence_applicant_id
140140+on public.occurrence (applicant_id);
141141142142-CREATE INDEX IF NOT EXISTS idx_occurrence_created_at
143143-ON public.occurrence (created_at);
142142+create index if not exists idx_occurrence_created_at
143143+on public.occurrence (created_at);
144144145145146146-CREATE TABLE IF NOT EXISTS public.occurrence_brigade (
147147- id UUID PRIMARY KEY DEFAULT UUIDV7(),
148148- occurrence_id UUID NOT NULL REFERENCES public.occurrence (id)
149149- ON UPDATE CASCADE ON DELETE CASCADE,
150150- brigade_id UUID NOT NULL REFERENCES public.brigade (id)
151151- ON UPDATE CASCADE ON DELETE CASCADE,
152152- UNIQUE (occurrence_id, brigade_id)
146146+create table if not exists public.occurrence_brigade (
147147+ id uuid primary key default uuidv7(),
148148+ occurrence_id uuid not null references public.occurrence (id)
149149+ on update cascade on delete cascade,
150150+ brigade_id uuid not null references public.brigade (id)
151151+ on update cascade on delete cascade,
152152+ unique (occurrence_id, brigade_id)
153153);
154154155155-CREATE INDEX IF NOT EXISTS idx_occurrence_brigade_occurrence_id
156156-ON public.occurrence_brigade (occurrence_id);
155155+create index if not exists idx_occurrence_brigade_occurrence_id
156156+on public.occurrence_brigade (occurrence_id);
157157158158-CREATE INDEX IF NOT EXISTS idx_occurrence_brigade_brigade_id
159159-ON public.occurrence_brigade (brigade_id);
158158+create index if not exists idx_occurrence_brigade_brigade_id
159159+on public.occurrence_brigade (brigade_id);
160160161161-COMMIT;
161161+commit;
+18-18
priv/sql/create/triggers.sql
···11-- Sets default user notification preferences when inserting a new one
22-CREATE OR REPLACE FUNCTION public.set_default_notification_preferences()
33-RETURNS TRIGGER
44-LANGUAGE plpgsql
55-AS $$
66-BEGIN
77- INSERT INTO public.user_notification_preference (user_id, notification_type)
88- VALUES
99- (NEW.id, 'fire'),
1010- (NEW.id, 'emergency'),
1111- (NEW.id, 'traffic'),
1212- (NEW.id, 'other')
1313- ON CONFLICT (user_id, notification_type) DO NOTHING;
22+create or replace function public.set_default_notification_preferences()
33+returns trigger
44+language plpgsql
55+as $$
66+begin
77+ insert into public.user_notification_preference (user_id, notification_type)
88+ values
99+ (new.id, 'fire'),
1010+ (new.id, 'emergency'),
1111+ (new.id, 'traffic'),
1212+ (new.id, 'other')
1313+ on conflict (user_id, notification_type) do nothing;
14141515- RETURN NEW;
1616-END;
1515+ return new;
1616+end;
1717$$;
18181919-CREATE OR REPLACE TRIGGER tgr_default_notification_preferences
2020-AFTER INSERT ON public.user_account
2121-FOR EACH ROW
2222-EXECUTE FUNCTION public.set_default_notification_preferences();
1919+create or replace trigger tgr_default_notification_preferences
2020+after insert on public.user_account
2121+for each row
2222+execute function public.set_default_notification_preferences();
+15-15
priv/sql/create/views.sql
···11-CREATE OR REPLACE VIEW vw_count_active_occurrences AS
22-SELECT COUNT(oc.id) AS count
33-FROM public.occurrence AS oc
44-WHERE oc.resolved_at IS NULL;
11+create or replace view vw_count_active_occurrences as
22+select count(oc.id) as count
33+from public.occurrence as oc
44+where oc.resolved_at is null;
5566-----------------------------------------------------
77-CREATE OR REPLACE VIEW vw_count_recent_occurrences AS
88-SELECT COUNT(oc.id) AS count
99-FROM public.occurrence AS oc
1010-WHERE oc.created_at >= (NOW() - '1 day'::INTERVAL);
77+create or replace view vw_count_recent_occurrences as
88+select count(oc.id) as count
99+from public.occurrence as oc
1010+where oc.created_at >= (now() - '1 day'::interval);
11111212----------------------------------------------------
1313-CREATE OR REPLACE VIEW vw_count_total_occurrences AS
1414-SELECT COUNT(oc.id) AS count
1515-FROM public.occurrence AS oc;
1313+create or replace view vw_count_total_occurrences as
1414+select count(oc.id) as count
1515+from public.occurrence as oc;
16161717------------------------------------------------------
1818-CREATE OR REPLACE VIEW vw_count_active_brigades AS
1919-SELECT COUNT(id)
2020-FROM public.brigade
2121-WHERE is_active = TRUE;
1818+create or replace view vw_count_active_brigades as
1919+select count(id)
2020+from public.brigade
2121+where is_active = true;
+18-18
priv/sql/drop.sql
···11-- VIEWS -----------------------------------------------------------------------
22-DROP VIEW IF EXISTS vw_count_active_occurrences;
33-DROP VIEW IF EXISTS vw_count_recent_occurrences;
44-DROP VIEW IF EXISTS vw_count_total_occurrences;
55-DROP VIEW IF EXISTS vw_count_active_brigades;
22+drop view if exists vw_count_active_occurrences;
33+drop view if exists vw_count_recent_occurrences;
44+drop view if exists vw_count_total_occurrences;
55+drop view if exists vw_count_active_brigades;
6677-- TRIGGERS --------------------------------------------------------------------
88-DROP TRIGGER IF EXISTS tgr_default_notification_preferences
99-ON user_account;
1010-DROP FUNCTION IF EXISTS public.set_default_notification_preferences;
88+drop trigger if exists tgr_default_notification_preferences
99+on user_account;
1010+drop function if exists public.set_default_notification_preferences;
11111212-- pgt-ignore-start lint/safety/banDropTable: We are resetting the Database
1313-DROP TABLE IF EXISTS public.occurrence_brigade;
1414-DROP TABLE IF EXISTS public.brigade_membership;
1515-DROP TABLE IF EXISTS public.occurrence;
1616-DROP TABLE IF EXISTS public.brigade;
1717-DROP TABLE IF EXISTS public.user_notification_preference;
1818-DROP TABLE IF EXISTS public.user_account;
1313+drop table if exists public.occurrence_brigade;
1414+drop table if exists public.brigade_membership;
1515+drop table if exists public.occurrence;
1616+drop table if exists public.brigade;
1717+drop table if exists public.user_notification_preference;
1818+drop table if exists public.user_account;
1919-- pgt-ignore-end lint/safety/banDropTable
20202121-- TYPES -----------------------------------------------------------------------
2222-DROP TYPE IF EXISTS public.NOTIFICATION_TYPE_ENUM;
2323-DROP TYPE IF EXISTS public.OCCURRENCE_CATEGORY_ENUM;
2424-DROP TYPE IF EXISTS public.OCCURRENCE_SUBCATEGORY_ENUM;
2525-DROP TYPE IF EXISTS public.USER_ROLE_ENUM;
2626-DROP TYPE IF EXISTS public.OCCURRENCE_PRIORITY_ENUM;
2222+drop type if exists public.notification_type_enum;
2323+drop type if exists public.occurrence_category_enum;
2424+drop type if exists public.occurrence_subcategory_enum;
2525+drop type if exists public.user_role_enum;
2626+drop type if exists public.occurrence_priority_enum;
+2-2
priv/sql/query/dev_list_brigades.sql
···11-SELECT
11+select
22 b.id,
33 b.brigade_name,
44 b.description
55-FROM public.brigade AS b;
55+from public.brigade as b;
+2-2
priv/sql/query/dev_list_user_accounts.sql
···11-SELECT
11+select
22 u.id,
33 u.full_name,
44 u.registration,
55 u.user_role
66-FROM public.user_account AS u;
66+from public.user_account as u;
···11-- Update an user's information as admin
22-UPDATE public.user_account AS u
33-SET
22+update public.user_account as u
33+set
44 full_name = $2,
55 email = $3,
66 user_role = $4,
77 registration = $5,
88 is_active = $6,
99- updated_at = CURRENT_TIMESTAMP
1010-WHERE u.id = $1
1111-RETURNING
99+ updated_at = current_timestamp
1010+where u.id = $1
1111+returning
1212 u.id,
1313 u.full_name,
1414 u.email,
+2-2
src/app/domain/admin/sql/count_total_users.sql
···11-- Count the total number of users in our system
22-SELECT COUNT(u.id) AS total
33-FROM public.user_account AS u;
22+select count(u.id) as total
33+from public.user_account as u;
···11-- Assign a list of members to a brigade
22-SELECT b.inserted_user_id
33-FROM public.assign_brigade_members($1, $2) AS b;
22+select b.inserted_user_id
33+from public.assign_brigade_members($1, $2) as b;
···11-- Remove a brigade from the DataBase
22-DELETE FROM public.brigade AS b
33-WHERE b.id = $1
44-RETURNING
22+delete from public.brigade as b
33+where b.id = $1
44+returning
55 b.id,
66 b.brigade_name;
+3-3
src/app/domain/brigade/sql/insert_new_brigade.sql
···11-- Register a new brigade into the database
22-INSERT INTO public.brigade AS b (
22+insert into public.brigade as b (
33 leader_id,
44 brigade_name,
55 vehicle_code,
66 is_active
77-) VALUES (
77+) values (
88 $1,
99 $2,
1010 $3,
1111 $4
1212-) RETURNING
1212+) returning
1313 b.id,
1414 b.created_at;
+5-5
src/app/domain/brigade/sql/query_all_brigades.sql
···11-- Find all registered brigades
22-SELECT
22+select
33 b.id,
44 b.brigade_name,
55- u.full_name AS leader_name,
55+ u.full_name as leader_name,
66 b.is_active
77-FROM public.brigade AS b
88-LEFT JOIN public.user_account AS u
99- ON b.leader_id = u.id;
77+from public.brigade as b
88+left join public.user_account as u
99+ on b.leader_id = u.id;
+6-6
src/app/domain/brigade/sql/query_brigade_info.sql
···11-- Find details about a specific brigade
22-SELECT
22+select
33 b.id,
44 b.brigade_name,
55- u.id AS leader_name,
55+ u.id as leader_name,
66 b.is_active
77-FROM public.brigade AS b
88-INNER JOIN public.user_account AS u
99- ON b.leader_id = u.id
1010-WHERE b.id = $1;
77+from public.brigade as b
88+inner join public.user_account as u
99+ on b.leader_id = u.id
1010+where b.id = $1;
+5-5
src/app/domain/brigade/sql/query_members_id.sql
···11-- Find the id of all members assigned a specific brigade
22-SELECT u.id
33-FROM public.user_account AS u
44-INNER JOIN public.brigade_membership AS bm
55- ON u.id = bm.user_id
66-WHERE bm.brigade_id = $1;
22+select u.id
33+from public.user_account as u
44+inner join public.brigade_membership as bm
55+ on u.id = bm.user_id
66+where bm.brigade_id = $1;
+5-5
src/app/domain/brigade/sql/query_members_info.sql
···11-- Find all members of a brigade
22-SELECT
22+select
33 u.id,
44 u.full_name,
55 u.user_role
66-FROM public.user_account AS u
77-INNER JOIN public.brigade_membership AS bm
88- ON u.id = bm.user_id
99-WHERE bm.brigade_id = $1;
66+from public.user_account as u
77+inner join public.brigade_membership as bm
88+ on u.id = bm.user_id
99+where bm.brigade_id = $1;
···11-- Replace all brigade members
22-SELECT b.inserted_user_id
33-FROM public.replace_brigade_members($1, $2) AS b;
22+select b.inserted_user_id
33+from public.replace_brigade_members($1, $2) as b;
···11-- Set the brigade is_active status to ON or OFF
22-UPDATE public.brigade AS b
33-SET
22+update public.brigade as b
33+set
44 is_active = $2,
55- updated_at = CURRENT_TIMESTAMP
66-WHERE b.id = $1
77-RETURNING
55+ updated_at = current_timestamp
66+where b.id = $1
77+returning
88 b.id,
99 b.is_active,
1010 b.updated_at;
···11-- Retrieve stats for the Dashboard page
22-SELECT
33- (SELECT count FROM public.vw_count_active_brigades)
44- AS active_brigades_count,
55- (SELECT count FROM public.vw_count_total_occurrences)
66- AS total_occurrences_count,
77- (SELECT count FROM public.vw_count_active_occurrences)
88- AS active_occurrences_count,
99- (SELECT count FROM public.vw_count_recent_occurrences)
1010- AS recent_occurrences_count;
22+select
33+ (select count from public.vw_count_active_brigades)
44+ as active_brigades_count,
55+ (select count from public.vw_count_total_occurrences)
66+ as total_occurrences_count,
77+ (select count from public.vw_count_active_occurrences)
88+ as active_occurrences_count,
99+ (select count from public.vw_count_recent_occurrences)
1010+ as recent_occurrences_count;
···11-- Find the active notifications from an user
22-SELECT np.notification_type
33-FROM public.user_notification_preference AS np
44-WHERE
22+select np.notification_type
33+from public.user_notification_preference as np
44+where
55 np.user_id = $1
66- AND np.enabled = TRUE;
66+ and np.enabled = true;
···11-- Assign as list of brigades as participants of a occurrence
22-SELECT ob.inserted_brigade_id
33-FROM public.assign_occurrence_brigades($1, $2) AS ob;
22+select ob.inserted_brigade_id
33+from public.assign_occurrence_brigades($1, $2) as ob;
···11-- Remove an occurrence from the database
22-DELETE FROM public.occurrence AS o
33-WHERE o.id = $1
44-RETURNING o.id;
22+delete from public.occurrence as o
33+where o.id = $1
44+returning o.id;
···11-- Retrieves all occurrences associated with a user,
22-- including detailed category information and resolution status.
33-SELECT
33+select
44 o.id,
55 o.resolved_at,
66 o.priority,
77 o.occurrence_category,
88 o.occurrence_location,
99- o.description AS details,
1010- u.full_name AS applicant_name,
99+ o.description as details,
1010+ u.full_name as applicant_name,
1111 o.created_at,
1212 o.arrived_at,
1313- u.registration AS applicant_registration,
1313+ u.registration as applicant_registration,
1414 o.applicant_id,
15151616 (
1717- SELECT JSON_AGG(JSON_BUILD_OBJECT(
1717+ select json_agg(json_build_object(
1818 'id', b.id,
1919 'brigade_name', b.brigade_name,
2020 'leader_full_name', leader_u.full_name,
2121 'vehicle_code', b.vehicle_code
2222- )) FROM public.occurrence_brigade AS ob
2323- INNER JOIN public.brigade AS b
2424- ON ob.brigade_id = b.id
2525- INNER JOIN public.user_account AS leader_u
2626- ON b.leader_id = leader_u.id
2727- WHERE ob.occurrence_id = o.id
2828- ) AS brigade_list
2222+ )) from public.occurrence_brigade as ob
2323+ inner join public.brigade as b
2424+ on ob.brigade_id = b.id
2525+ inner join public.user_account as leader_u
2626+ on b.leader_id = leader_u.id
2727+ where ob.occurrence_id = o.id
2828+ ) as brigade_list
29293030-FROM public.occurrence AS o
3131-INNER JOIN public.user_account AS u
3232- ON o.applicant_id = u.id
3333-WHERE o.applicant_id = $1;
3030+from public.occurrence as o
3131+inner join public.user_account as u
3232+ on o.applicant_id = u.id
3333+where o.applicant_id = $1;
···11-- Find all users that participated in a occurrence
22-SELECT DISTINCT participant.user_id
33-FROM public.brigade_membership AS participant
44-INNER JOIN public.occurrence_brigade AS ob
55- ON participant.brigade_id = ob.brigade_id
66-WHERE ob.occurrence_id = $1
77-ORDER BY participant.user_id;
22+select distinct participant.user_id
33+from public.brigade_membership as participant
44+inner join public.occurrence_brigade as ob
55+ on participant.brigade_id = ob.brigade_id
66+where ob.occurrence_id = $1
77+order by participant.user_id;
···11-- Find all available user roles
22-SELECT UNNEST(ENUM_RANGE(NULL::public.USER_ROLE_ENUM)) AS available_role;
22+select unnest(enum_range(null::public.user_role_enum)) as available_role;
+3-3
src/app/domain/user/sql/delete_user_by_id.sql
···11-- Remove and user from the database
22-DELETE FROM public.user_account AS u
33-WHERE u.id = $1
44-RETURNING u.id, u.full_name;
22+delete from public.user_account as u
33+where u.id = $1
44+returning u.id, u.full_name;
···11-- Find all users on the database
22-SELECT
22+select
33 u.id,
44 u.full_name,
55 u.registration,
66 u.email,
77 u.user_role,
88 u.is_active
99-FROM public.user_account AS u;
99+from public.user_account as u;
+3-3
src/app/domain/user/sql/insert_new_user.sql
···11-- Inserts a new user into the database
22-INSERT INTO public.user_account AS u
22+insert into public.user_account as u
33(
44 full_name,
55 registration,
···88 password_hash,
99 user_role
1010)
1111-VALUES ($1, $2, $3, $4, $5, $6)
1212-RETURNING u.id;
1111+values ($1, $2, $3, $4, $5, $6)
1212+returning u.id;
+4-4
src/app/domain/user/sql/query_crew_members.sql
···11-- Retrieves detailed information about fellow brigade members
22-- for a given user, including their names and role details.
33-SELECT
33+select
44 u.id,
55 u.full_name,
66 u.user_role,
77 crew.brigade_id
88-FROM public.query_crew_members($1) AS crew
99-INNER JOIN public.user_account AS u
1010- ON crew.member_id = u.id;
88+from public.query_crew_members($1) as crew
99+inner join public.user_account as u
1010+ on crew.member_id = u.id;
+3-3
src/app/domain/user/sql/query_login_token.sql
···11-- Retrieves a user's ID and password hash from their registration
22-- number for authentication purposes.
33-SELECT
33+select
44 u.id,
55 u.password_hash,
66 u.user_role
77-FROM public.user_account AS u
88-WHERE u.registration = $1;
77+from public.user_account as u
88+where u.registration = $1;
···11-- Find all occurrences a user participated in
22-SELECT u.id
33-FROM public.user_account AS u
44-INNER JOIN public.brigade_membership AS bm
55- ON u.id = bm.user_id
66-INNER JOIN public.occurrence_brigade AS ob
77- ON bm.brigade_id = ob.brigade_id
88-WHERE ob.occurrence_id = $1;
22+select u.id
33+from public.user_account as u
44+inner join public.brigade_membership as bm
55+ on u.id = bm.user_id
66+inner join public.occurrence_brigade as ob
77+ on bm.brigade_id = ob.brigade_id
88+where ob.occurrence_id = $1;
+3-3
src/app/domain/user/sql/query_user_brigades.sql
···11-- Find all brigades an user is assigned to
22-SELECT bm.brigade_id
33-FROM public.brigade_membership AS bm
44-WHERE bm.user_id = $1;
22+select bm.brigade_id
33+from public.brigade_membership as bm
44+where bm.user_id = $1;
···11-- Retrieves a user's ID from their registration number.
22-SELECT u.id
33-FROM public.user_account AS u
44-WHERE u.registration = $1;
22+select u.id
33+from public.user_account as u
44+where u.registration = $1;
+3-3
src/app/domain/user/sql/query_user_name.sql
···11-- Retrieves a user's full name by their user ID.
22-SELECT u.full_name
33-FROM public.user_account AS u
44-WHERE u.id = $1;
22+select u.full_name
33+from public.user_account as u
44+where u.id = $1;
+3-3
src/app/domain/user/sql/query_user_password.sql
···11-- Find the password hash from an user
22-SELECT u.password_hash
33-FROM public.user_account AS u
44-WHERE u.id = $1;
22+select u.password_hash
33+from public.user_account as u
44+where u.id = $1;
+3-3
src/app/domain/user/sql/query_user_profile.sql
···11-- Find basic information about an user account
22-SELECT
22+select
33 u.id,
44 u.full_name,
55 u.registration,
66 u.user_role,
77 u.email,
88 u.phone
99-FROM public.user_account AS u
1010-WHERE u.id = $1;
99+from public.user_account as u
1010+where u.id = $1;
+4-4
src/app/domain/user/sql/query_user_role.sql
···11-- Find user access level
22-SELECT u.user_role
33-FROM
44- public.user_account AS u
55-WHERE u.id = $1;
22+select u.user_role
33+from
44+ public.user_account as u
55+where u.id = $1;
+4-4
src/app/domain/user/sql/update_user_password.sql
···11-- Set an new value to the password of an user
22-UPDATE public.user_account
33-SET
22+update public.user_account
33+set
44 password_hash = $2,
55- updated_at = CURRENT_TIMESTAMP
66-WHERE id = $1;
55+ updated_at = current_timestamp
66+where id = $1;
+3-3
src/app/domain/user/sql/update_user_profile.sql
···11-- Update an authenticated user profile
22-UPDATE public.user_account AS u SET
22+update public.user_account as u set
33 full_name = $2,
44 email = $3,
55 phone = $4
66-WHERE u.id = $1
77-RETURNING
66+where u.id = $1
77+returning
88 u.full_name,
99 u.email,
1010 u.phone;
+5-5
src/app/domain/user/sql/update_user_status.sql
···11-- Update an user `is_active` field
22-UPDATE public.user_account AS u
33-SET
22+update public.user_account as u
33+set
44 is_active = $2,
55- updated_at = CURRENT_TIMESTAMP
66-WHERE u.id = $1
77-RETURNING u.id, u.is_active;
55+ updated_at = current_timestamp
66+where u.id = $1
77+returning u.id, u.is_active;