···3636 BOOLEAN is_active
3737 }
38383939+ brigade {
4040+ UUID id PK
4141+ varchar(255) name
4242+ TEXT description
4343+ BOOLEAN is_active
4444+ }
4545+4646+ brigade_membership }o--o{ user_account : is_member_of
4747+ brigade_membership }o--o{ brigade : is_part_of
4848+ brigade_membership {
4949+ UUID id PK
5050+ UUID user_id FK
5151+ UUID group_id FK
5252+ }
5353+3954 ocurrence_type |o--o{ ocurrence_type : has_parent
4055 ocurrence_type {
4156 UUID id PK
+40-7
priv/sql/rebuild_database.sql
···11-- DROP -------------------------------------------------------------------
22BEGIN;
3344-DROP TABLE IF EXISTS ocurrence;
55-DROP TABLE IF EXISTS ocurrence_type;
44+DROP INDEX IF EXISTS idx_brigade_membership_brigade_id;
55+DROP INDEX IF EXISTS idx_brigade_membership_user_id;
66+DROP INDEX IF EXISTS idx_occurrence_applicant_id;
77+88+DROP TABLE IF EXISTS occurrence;
99+DROP TABLE IF EXISTS occurrence_type;
1010+DROP TABLE IF EXISTS brigade_membership;
1111+DROP TABLE IF EXISTS brigade;
612DROP TABLE IF EXISTS user_account;
713DROP TABLE IF EXISTS user_role;
1414+815916COMMIT;
1017···3138 updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
3239);
33403434-CREATE TABLE IF NOT EXISTS ocurrence_type (
4141+4242+CREATE TABLE IF NOT EXISTS brigade (
4343+ id UUID PRIMARY KEY DEFAULT GEN_RANDOM_UUID(),
4444+ name VARCHAR(255) DEFAULT NULL,
4545+ description TEXT DEFAULT NULL,
4646+ is_active BOOLEAN DEFAULT FALSE
4747+);
4848+4949+CREATE TABLE IF NOT EXISTS brigade_membership (
5050+ id UUID PRIMARY KEY DEFAULT GEN_RANDOM_UUID(),
5151+ user_id UUID REFERENCES user_account (id)
5252+ ON UPDATE CASCADE ON DELETE SET NULL,
5353+ brigade_id UUID REFERENCES brigade (id)
5454+ ON UPDATE CASCADE ON DELETE CASCADE
5555+);
5656+5757+CREATE INDEX IF NOT EXISTS idx_brigade_membership_user_id
5858+ON brigade_membership (user_id);
5959+6060+CREATE INDEX IF NOT EXISTS idx_brigade_membership_brigade_id
6161+ON brigade_membership (brigade_id);
6262+6363+6464+CREATE TABLE IF NOT EXISTS occurrence_type (
3565 id UUID PRIMARY KEY DEFAULT GEN_RANDOM_UUID(),
3666 -- This way we dont need to have separate tables for type and subtype
3767 -- vv
3838- parent_type UUID REFERENCES ocurrence_type (id)
6868+ parent_type UUID REFERENCES occurrence_type (id)
3969 ON UPDATE CASCADE ON DELETE CASCADE DEFAULT NULL,
4070 name VARCHAR(255) UNIQUE NOT NULL,
4171 description TEXT,
···4373);
447445754646-CREATE TABLE IF NOT EXISTS ocurrence (
7676+CREATE TABLE IF NOT EXISTS occurrence (
4777 id UUID PRIMARY KEY DEFAULT GEN_RANDOM_UUID(),
4878 applicant_id UUID REFERENCES user_account (id)
4979 ON UPDATE CASCADE ON DELETE SET NULL,
5050- type_id UUID REFERENCES ocurrence_type (id)
8080+ type_id UUID REFERENCES occurrence_type (id)
5181 ON UPDATE CASCADE ON DELETE SET NULL,
5252- subtype_id UUID REFERENCES ocurrence_type (id)
8282+ subtype_id UUID REFERENCES occurrence_type (id)
5383 ON UPDATE CASCADE ON DELETE SET NULL DEFAULT NULL,
5484 description TEXT,
5585···6292 updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
6393 resolved_at TIMESTAMP DEFAULT NULL
6494);
9595+9696+CREATE INDEX IF NOT EXISTS idx_occurrence_applicant_id
9797+ON occurence (applicant_id);
65986699COMMIT;