diff --git a/moped-database/metadata/tables.yaml b/moped-database/metadata/tables.yaml index df3e81f21f..e4341e898c 100644 --- a/moped-database/metadata/tables.yaml +++ b/moped-database/metadata/tables.yaml @@ -5469,25 +5469,28 @@ - role: moped-admin permission: columns: + - date_added + - is_deleted - workgroup_id - workgroup_name - - date_added filter: {} allow_aggregations: true - role: moped-editor permission: columns: + - date_added + - is_deleted - workgroup_id - workgroup_name - - date_added filter: {} allow_aggregations: true - role: moped-viewer permission: columns: - - workgroup_name - - workgroup_id - date_added + - is_deleted + - workgroup_id + - workgroup_name filter: {} allow_aggregations: true - table: diff --git a/moped-database/migrations/1734717637542_update_workgroups/down.sql b/moped-database/migrations/1734717637542_update_workgroups/down.sql new file mode 100644 index 0000000000..ac995fb234 --- /dev/null +++ b/moped-database/migrations/1734717637542_update_workgroups/down.sql @@ -0,0 +1,3 @@ +-- Updating moped_workgroup table will be up only. If we need to revert, we will need do it manually or +-- update with a future migration. +SELECT 0; diff --git a/moped-database/migrations/1734717637542_update_workgroups/up.sql b/moped-database/migrations/1734717637542_update_workgroups/up.sql new file mode 100644 index 0000000000..b26a6a4622 --- /dev/null +++ b/moped-database/migrations/1734717637542_update_workgroups/up.sql @@ -0,0 +1,37 @@ +-- Add soft deletes to workgroup table +ALTER TABLE moped_workgroup ADD is_deleted boolean DEFAULT FALSE; +COMMENT ON COLUMN moped_workgroup.is_deleted IS 'Indicates soft deletion'; + +INSERT INTO moped_workgroup ("workgroup_name", "workgroup_abbreviation", "department_id") VALUES +('Sidewalks and Urban Trails', 'SUTD', 11); + +-- Soft delete existing workgroup records that are merging into the new one +UPDATE moped_workgroup SET is_deleted = TRUE WHERE workgroup_name IN ('Sidewalks', 'Urban Trails'); + +-- Find existing users records that are associated with the workgroups that are merging +-- and update them to the new workgroup row for SUTD +WITH user_todos AS ( + SELECT workgroup_id AS ids + FROM + moped_workgroup + WHERE + workgroup_name IN ( + 'Sidewalks', + 'Urban Trails' + ) +), + +new_workgroup_row AS ( + SELECT workgroup_id AS id + FROM + moped_workgroup + WHERE + workgroup_name = 'Sidewalks and Urban Trails' +) + +UPDATE +moped_users +SET + workgroup_id = (SELECT id FROM new_workgroup_row) +WHERE + workgroup_id IN (SELECT ids FROM user_todos); diff --git a/moped-editor/src/queries/workgroups.js b/moped-editor/src/queries/workgroups.js index da0f8160c5..9da721516f 100644 --- a/moped-editor/src/queries/workgroups.js +++ b/moped-editor/src/queries/workgroups.js @@ -2,7 +2,10 @@ import { gql } from "@apollo/client"; export const WORKGROUPS_QUERY = gql` query GetWorkgroups { - moped_workgroup(order_by: {workgroup_name: asc}) { + moped_workgroup( + order_by: { workgroup_name: asc } + where: { is_deleted: { _eq: false } } + ) { workgroup_id workgroup_name }