Skip to content

Commit

Permalink
Merge pull request #1280 from cityofaustin/15489_replace_moped_proj_n…
Browse files Browse the repository at this point in the history
…otes_rest_connector

replace moped_proj_notes rest connectors with db triggers
  • Loading branch information
chiaberry authored Feb 29, 2024
2 parents 4b01102 + 52c3493 commit e250158
Show file tree
Hide file tree
Showing 13 changed files with 69 additions and 45 deletions.
56 changes: 33 additions & 23 deletions moped-database/metadata/tables.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2810,95 +2810,107 @@
foreign_key_constraint_on: project_id
- name: moped_user
using:
foreign_key_constraint_on: added_by_user_id
foreign_key_constraint_on: created_by_user_id
insert_permissions:
- role: moped-admin
permission:
check: {}
set:
created_by_user_id: x-hasura-user-db-id
updated_by_user_id: x-hasura-user-db-id
columns:
- added_by_user_id
- date_created
- is_deleted
- phase_id
- project_id
- project_note
- project_note_type
comment: No insert permissions on audit fields
- role: moped-editor
permission:
check: {}
set:
created_by_user_id: x-hasura-user-db-id
updated_by_user_id: x-hasura-user-db-id
columns:
- added_by_user_id
- date_created
- is_deleted
- phase_id
- project_id
- project_note
- project_note_type
comment: No insert permissions on audit fields
select_permissions:
- role: moped-admin
permission:
columns:
- added_by_user_id
- date_created
- created_at
- created_by_user_id
- is_deleted
- phase_id
- project_id
- project_note
- project_note_id
- project_note_type
- updated_at
- updated_by_user_id
filter: {}
allow_aggregations: true
- role: moped-editor
permission:
columns:
- added_by_user_id
- date_created
- created_at
- created_by_user_id
- is_deleted
- phase_id
- project_id
- project_note
- project_note_id
- project_note_type
- updated_at
- updated_by_user_id
filter: {}
allow_aggregations: true
- role: moped-viewer
permission:
columns:
- added_by_user_id
- date_created
- created_at
- created_by_user_id
- is_deleted
- phase_id
- project_id
- project_note
- project_note_id
- project_note_type
- updated_at
- updated_by_user_id
filter: {}
allow_aggregations: true
update_permissions:
- role: moped-admin
permission:
columns:
- added_by_user_id
- date_created
- is_deleted
- phase_id
- project_id
- project_note
- project_note_type
filter: {}
check: null
set:
updated_by_user_id: x-hasura-user-db-id
comment: No update permissions on audit fields
- role: moped-editor
permission:
columns:
- added_by_user_id
- date_created
- is_deleted
- phase_id
- project_id
- project_note
- project_note_type
filter: {}
check: null
set:
updated_by_user_id: x-hasura-user-db-id
comment: No update permissions on audit fields
event_triggers:
- name: activity_log_moped_proj_notes
definition:
Expand All @@ -2920,7 +2932,7 @@
action: transform
template: |-
{
"query": "mutation InsertActivity($object: moped_activity_log_insert_input!, $project_id:Int!, $updated_at:timestamptz ) { insert_moped_activity_log_one(object: $object) { activity_id } update_moped_project_by_pk(pk_columns: {project_id: $project_id}, _set: {updated_at: $updated_at}) { updated_at }}",
"query": "mutation InsertActivity($object: moped_activity_log_insert_input!) { insert_moped_activity_log_one(object: $object) { activity_id } }",
"variables": {
"object": {
"record_id": {{ $body.event.data.new.project_note_id }},
Expand All @@ -2931,9 +2943,7 @@
"description": [{"newSchema": "true"}],
"operation_type": {{ $body.event.op }},
"updated_by_user_id": {{ $session_variables?['x-hasura-user-db-id'] ?? 1}}
},
"updated_at": {{$body.created_at}},
"project_id": {{$body.event.data.new.project_id}}
}
}
}
template_engine: Kriti
Expand Down Expand Up @@ -3430,8 +3440,6 @@
update_permissions:
- role: moped-admin
permission:
set:
updated_by_user_id: x-hasura-user-db-id
columns:
- is_current_phase
- is_deleted
Expand All @@ -3445,10 +3453,10 @@
- is_phase_end_confirmed
filter: {}
check: {}
- role: moped-editor
permission:
set:
updated_by_user_id: x-hasura-user-db-id
- role: moped-editor
permission:
columns:
- is_current_phase
- is_deleted
Expand All @@ -3462,6 +3470,8 @@
- is_phase_end_confirmed
filter: {}
check: {}
set:
updated_by_user_id: x-hasura-user-db-id
event_triggers:
- name: activity_log_moped_proj_phases
definition:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
ALTER TABLE public.moped_proj_notes RENAME COLUMN created_at TO date_created;
ALTER TABLE public.moped_proj_notes RENAME COLUMN created_by_user_id TO added_by_user_id;
ALTER TABLE public.moped_proj_notes DROP COLUMN updated_at;
ALTER TABLE public.moped_proj_notes DROP COLUMN updated_by_user_id;

DROP TRIGGER update_moped_proj_notes_and_project_audit_fields ON moped_proj_notes;
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
ALTER TABLE moped_proj_notes RENAME COLUMN date_created TO created_at;
ALTER TABLE moped_proj_notes RENAME COLUMN added_by_user_id TO created_by_user_id;
ALTER TABLE moped_proj_notes ADD COLUMN updated_at TIMESTAMPTZ
NULL;
ALTER TABLE moped_proj_notes ADD COLUMN updated_by_user_id INTEGER
NULL;

COMMENT ON COLUMN moped_proj_notes.updated_at IS 'Timestamp when the record was last updated';
COMMENT ON COLUMN moped_proj_notes.updated_by_user_id IS 'ID of the user who last updated the record';

CREATE TRIGGER update_moped_proj_notes_and_project_audit_fields
BEFORE INSERT OR UPDATE ON moped_proj_notes
FOR EACH ROW
EXECUTE FUNCTION public.update_self_and_project_updated_audit_fields();

COMMENT ON TRIGGER update_moped_proj_notes_and_project_audit_fields ON moped_proj_notes IS 'Trigger to execute the update_self_and_project_updated_audit_fields function before each update operation on the moped_proj_notes table.';
4 changes: 2 additions & 2 deletions moped-database/seeds/1602292389297_initial_seed_staging.sql
Original file line number Diff line number Diff line change
Expand Up @@ -100,8 +100,8 @@ INSERT INTO public.moped_proj_milestones (project_milestone_id, project_id, desc
-- Data for Name: moped_proj_notes; Type: TABLE DATA; Schema: public; Owner: moped
--

INSERT INTO public.moped_proj_notes (project_note_id, project_note, date_created, project_id, added_by_user_id, project_note_type, is_deleted) VALUES (2, '<p>This is a status update</p>', '2022-11-12 18:08:55.845376+00', 227, 1, 2, false);
INSERT INTO public.moped_proj_notes (project_note_id, project_note, date_created, project_id, added_by_user_id, project_note_type, is_deleted) VALUES (3, '<p>This is an internal note</p>', '2022-11-12 18:14:16.640873+00', 227, 1, 1, false);
INSERT INTO public.moped_proj_notes (project_note_id, project_note, created_at, project_id, created_by_user_id, project_note_type, is_deleted) VALUES (2, '<p>This is a status update</p>', '2022-11-12 18:08:55.845376+00', 227, 1, 2, false);
INSERT INTO public.moped_proj_notes (project_note_id, project_note, created_at, project_id, created_by_user_id, project_note_type, is_deleted) VALUES (3, '<p>This is an internal note</p>', '2022-11-12 18:14:16.640873+00', 227, 1, 1, false);


--
Expand Down
2 changes: 1 addition & 1 deletion moped-editor/src/queries/dashboard.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ export const DASHBOARD_QUERY = gql`
}
moped_proj_notes(
where: { project_note_type: { _eq: 2 }, is_deleted: { _eq: false } }
order_by: { date_created: desc }
order_by: { created_at: desc }
) {
moped_user {
first_name
Expand Down
6 changes: 3 additions & 3 deletions moped-editor/src/queries/notes.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,19 @@ export const NOTES_QUERY = gql`
query GetProjectNotes($projectNoteConditions: moped_proj_notes_bool_exp!) {
moped_proj_notes(
where: $projectNoteConditions
order_by: { date_created: desc }
order_by: { created_at: desc }
) {
moped_user {
first_name
last_name
}
project_note
project_id
date_created
created_at
project_note_id
project_note_type
is_deleted
added_by_user_id
created_by_user_id
moped_phase {
phase_key
phase_name
Expand Down
4 changes: 2 additions & 2 deletions moped-editor/src/queries/project.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,15 +52,15 @@ export const SUMMARY_QUERY = gql`
}
moped_proj_notes(
where: { project_note_type: { _eq: 2 }, is_deleted: { _eq: false } }
order_by: { date_created: desc }
order_by: { created_at: desc }
) {
project_note_id
project_note
moped_user {
first_name
last_name
}
date_created
created_at
}
moped_project_types(where: { is_deleted: { _eq: false } }) {
id
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -181,18 +181,12 @@ export const ProjectActivityLogTableMaps = {
project_note_id: {
label: "note ID",
},
date_created: {
label: "date created",
},
project_note: {
label: "note",
},
is_deleted: {
label: "is deleted",
},
added_by_user_id: {
label: "added by user ID",
},
project_note_type: {
label: "note type",
},
Expand Down
7 changes: 3 additions & 4 deletions moped-editor/src/views/projects/projectView/ProjectNotes.js
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,6 @@ const ProjectNotes = (props) => {
{
project_note: DOMPurify.sanitize(noteText),
project_id: projectId,
added_by_user_id: Number(userSessionData.user_id),
project_note_type: newNoteType,
phase_id: currentPhaseId,
},
Expand Down Expand Up @@ -354,7 +353,7 @@ const ProjectNotes = (props) => {
* Only allow the user who wrote the status to edit it
*/
const editableNote =
userSessionData.user_id === item.added_by_user_id;
userSessionData.user_id === item.created_by_user_id;
return (
<React.Fragment key={item.project_note_id}>
<ListItem alignItems="flex-start">
Expand All @@ -376,9 +375,9 @@ const ProjectNotes = (props) => {
className={classes.noteDate}
>
{` - ${makeUSExpandedFormDateFromTimeStampTZ(
item.date_created
item.created_at
)} ${makeHourAndMinutesFromTimeStampTZ(
item.date_created
item.created_at
)}`}
</Typography>
<Typography
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,6 @@ export const onSubmitPhase = ({
{
project_note: DOMPurify.sanitize(noteData.status_update),
project_id,
added_by_user_id: noteData.user_id,
project_note_type: STATUS_UPDATE_TYPE_ID,
phase_id: is_current_phase ? phase_id : currentPhaseIds[0],
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ const ProjectSummaryStatusUpdate = ({ projectId, data, refetch, classes }) => {
data.moped_project[0].moped_proj_phases[0]?.moped_phase.phase_id;

const dateCreated = formatRelativeDate(
data.moped_project[0].moped_proj_notes[0]?.date_created
data.moped_project[0].moped_proj_notes[0]?.created_at
);

return (
Expand Down
2 changes: 1 addition & 1 deletion moped-toolbox/knack_migration/1_prepare_projects.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ def build_note(note, user_name, user_id, note_type=2):
# project note types are hardcoded. see here: https://github.com/cityofaustin/atd-moped/blob/main/moped-editor/src/views/projects/projectView/ProjectNotes.js#L321
"project_note_type": note_type,
"added_by": user_name,
"added_by_user_id": user_id,
"created_by_user_id": user_id,
"project_note": note,
}

Expand Down
2 changes: 1 addition & 1 deletion moped-toolbox/random_project_seeds/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ const randomProjectType = () => ({
const randomNote = () => ({
project_note: randomString(200),
project_note_type: randomArrElement(lookups.project_note_types),
added_by_user_id: randomArrElement(lookups.users),
created_by_user_id: randomArrElement(lookups.users),
});

const randomTag = () => ({
Expand Down

0 comments on commit e250158

Please sign in to comment.