Skip to content

Commit

Permalink
Merge branch 'main' into mateo/18178_dategridpro
Browse files Browse the repository at this point in the history
  • Loading branch information
mateoclarke committed Dec 19, 2024
2 parents bc07211 + d163e1e commit 6ac1413
Show file tree
Hide file tree
Showing 29 changed files with 1,928 additions and 414 deletions.
2 changes: 1 addition & 1 deletion moped-database/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Architecture Independent Docker Stack Components for Moped Development Environment
services:
hasura:
image: hasura/graphql-engine:v2.44.0
image: hasura/graphql-engine:v2.45.0
depends_on:
- moped-pgsql
expose:
Expand Down
96 changes: 96 additions & 0 deletions moped-database/metadata/tables.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5188,6 +5188,102 @@
- role: moped-viewer
permission:
filter: {}
- table:
name: moped_user_saved_views
schema: public
insert_permissions:
- role: moped-admin
permission:
check: {}
set:
created_by_user_id: x-hasura-x-hasura-user-db-id
updated_by_user_id: x-hasura-x-hasura-user-db-id
columns:
- description
- is_deleted
- query_filters
- url
comment: ""
- role: moped-editor
permission:
check: {}
set:
created_by_user_id: x-hasura-x-hasura-user-db-id
updated_by_user_id: x-hasura-x-hasura-user-db-id
columns:
- description
- is_deleted
- query_filters
- url
comment: ""
select_permissions:
- role: moped-admin
permission:
columns:
- is_deleted
- id
- query_filters
- description
- url
- updated_at
- created_at
- created_by_user_id
- updated_by_user_id
filter: {}
comment: ""
- role: moped-editor
permission:
columns:
- is_deleted
- id
- query_filters
- description
- url
- updated_at
- created_at
- created_by_user_id
- updated_by_user_id
filter: {}
comment: ""
- role: moped-viewer
permission:
columns:
- is_deleted
- id
- query_filters
- description
- url
- updated_at
- created_at
- created_by_user_id
- updated_by_user_id
filter: {}
comment: ""
update_permissions:
- role: moped-admin
permission:
columns:
- description
- is_deleted
- query_filters
- url
filter: {}
check: null
set:
updated_by_user_id: x-hasura-x-hasura-user-db-id
comment: ""
- role: moped-editor
permission:
columns:
- description
- is_deleted
- query_filters
- url
filter: {}
check: null
set:
updated_by_user_id: x-hasura-x-hasura-user-db-id
comment: ""
- table:
name: moped_users
schema: public
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
DROP TRIGGER IF EXISTS set_moped_user_saved_views_updated_at ON moped_user_saved_views;

DROP TABLE moped_user_saved_views;
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
CREATE TABLE public.moped_user_saved_views (
id serial NOT NULL,
description text NOT NULL,
url text NOT NULL,
query_filters jsonb NOT NULL,
created_by_user_id int4 NOT NULL,
updated_by_user_id int4 NOT NULL,
created_at timestamptz NOT NULL DEFAULT now(),
updated_at timestamptz NOT NULL DEFAULT now(),
is_deleted boolean NOT NULL DEFAULT false
);

ALTER TABLE moped_user_saved_views
ADD CONSTRAINT fk_moped_user_saved_views_created_by FOREIGN KEY (created_by_user_id) REFERENCES moped_users (user_id),
ADD CONSTRAINT fk_moped_user_saved_views_updated_by FOREIGN KEY (updated_by_user_id) REFERENCES moped_users (user_id);

-- Adding comments for audit fields
COMMENT ON COLUMN moped_user_saved_views.description IS 'Description entered by the creator of the view';
COMMENT ON COLUMN moped_user_saved_views.url IS 'URL string associated with the view (may break if database fields or operators are changed)';
COMMENT ON COLUMN moped_user_saved_views.query_filters IS 'JSON blob of filters that make up the query';
COMMENT ON COLUMN moped_user_saved_views.created_by_user_id IS 'User ID of the creator of the view';
COMMENT ON COLUMN moped_user_saved_views.updated_by_user_id IS 'User ID of the last updater of the view';
COMMENT ON COLUMN moped_user_saved_views.created_at IS 'Timestamp of when the view was created';
COMMENT ON COLUMN moped_user_saved_views.updated_at IS 'Timestamp of the last update of the view';
COMMENT ON COLUMN moped_user_saved_views.is_deleted IS 'Boolean indicating whether the view has been soft deleted and thereby not rendered in the UI';

-- Adding comments for moped_user_saved_views constraints
COMMENT ON CONSTRAINT fk_moped_user_saved_views_created_by ON moped_user_saved_views IS 'Foreign key constraint linking created_by_user_id to moped_users table.';
COMMENT ON CONSTRAINT fk_moped_user_saved_views_updated_by ON moped_user_saved_views IS 'Foreign key constraint linking updated_by_user_id to moped_users table.';

CREATE TRIGGER set_moped_user_saved_views_updated_at
BEFORE INSERT OR UPDATE ON moped_user_saved_views
FOR EACH ROW
EXECUTE FUNCTION public.set_updated_at();

COMMENT ON TRIGGER set_moped_user_saved_views_updated_at ON public.moped_user_saved_views IS 'Trigger to set updated_at timestamp for each insert or update on moped_user_saved_views';
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
-- Updating moped_department table will be up only. If we need to revert, we will need do it manually or
-- update with a future migration.
SELECT 0;
87 changes: 87 additions & 0 deletions moped-database/migrations/1732661952305_department_reorg/up.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
-- Add soft deletes to department table
ALTER TABLE moped_department ADD is_deleted boolean DEFAULT FALSE;
COMMENT ON COLUMN moped_department.is_deleted IS 'Indicates soft deletion';

INSERT INTO "public"."moped_department" ("department_name", "department_abbreviation", "organization_id") VALUES
('Austin Transportation and Public Works', 'TPW', 1);

-- Soft delete existing department records that are merging into the new one
UPDATE moped_department SET is_deleted = TRUE WHERE department_name IN ('Austin Transportation', 'Public Works');

-- Find existing workgroup records that are associated with the departments that are merging
-- and update them to the new department row called Austin Transportation and Public Works
WITH department_todos AS (
SELECT department_id AS ids
FROM
moped_department
WHERE
department_name IN (
'Austin Transportation',
'Public Works'
)
),

new_department_row AS (
SELECT department_id AS id
FROM
moped_department
WHERE
department_name = 'Austin Transportation and Public Works'
)

UPDATE
moped_workgroup
SET
department_id = (SELECT id FROM new_department_row)
WHERE
department_id IN (SELECT ids FROM department_todos);

-- Find existing entity records that are associated with the departments that are merging
-- and update them to the new department row called Austin Transportation and Public Works
WITH department_todos AS (
SELECT department_id AS ids
FROM
moped_department
WHERE
department_name IN (
'Austin Transportation',
'Public Works'
)
),

new_department_row AS (
SELECT department_id AS id
FROM
moped_department
WHERE
department_name = 'Austin Transportation and Public Works'
)

UPDATE
moped_entity
SET
department_id = (SELECT id FROM new_department_row)
WHERE
department_id IN (SELECT ids FROM department_todos);

-- Add foreign key constraints to entity table department_id column; moped_workgroup already has this constraint
ALTER TABLE moped_entity
ADD CONSTRAINT moped_entity_department_id_fkey FOREIGN KEY ("department_id")
REFERENCES moped_department ("department_id");

-- Add foreign key constraints to entity table workgroup_id column
ALTER TABLE moped_entity
ADD CONSTRAINT moped_entity_workgroup_id_fkey FOREIGN KEY ("workgroup_id")
REFERENCES moped_workgroup ("workgroup_id");

-- Add foreign key constraints to department and entity tables for organization_id columns
ALTER TABLE moped_entity
ADD CONSTRAINT moped_entity_organization_id_fkey FOREIGN KEY ("organization_id")
REFERENCES moped_organization ("organization_id");

ALTER TABLE moped_department
ADD CONSTRAINT moped_department_organization_id_fkey FOREIGN KEY ("organization_id")
REFERENCES moped_organization ("organization_id");

-- Remove row with 0 for id and 'None' for name; we're not using it and null is more appropriate for entities and workgroups with no department
DELETE FROM moped_department WHERE department_id = 0;
Loading

0 comments on commit 6ac1413

Please sign in to comment.