From 3bc6504ae68cb5cd6b67cacb10a8b5877c76424d Mon Sep 17 00:00:00 2001 From: Dave Richer Date: Fri, 10 Jan 2025 09:33:47 -0800 Subject: [PATCH] feature/IO-3060-Realtime-Notifications-Progress Update --- hasura/metadata/tables.yaml | 25 ++++++++++++++++--- .../down.sql | 3 +++ .../up.sql | 1 + .../handlePartsDispatchChange.js | 5 ++++ .../eventHandlers/handlePartsOrderChange.js | 5 ++++ .../eventHandlers/handleTasksChange.js | 5 ++++ .../eventHandlers/handleTimeTicketsChange.js | 5 ++++ server/routes/notificationsRoutes.js | 7 ++++++ 8 files changed, 53 insertions(+), 3 deletions(-) create mode 100644 hasura/migrations/1736522640938_alter_table_public_notifications_drop_column_scenario/down.sql create mode 100644 hasura/migrations/1736522640938_alter_table_public_notifications_drop_column_scenario/up.sql create mode 100644 server/notifications/eventHandlers/handlePartsDispatchChange.js create mode 100644 server/notifications/eventHandlers/handlePartsOrderChange.js create mode 100644 server/notifications/eventHandlers/handleTasksChange.js create mode 100644 server/notifications/eventHandlers/handleTimeTicketsChange.js diff --git a/hasura/metadata/tables.yaml b/hasura/metadata/tables.yaml index d7ddeb768..c9b1922ca 100644 --- a/hasura/metadata/tables.yaml +++ b/hasura/metadata/tables.yaml @@ -4776,7 +4776,6 @@ - job_id - meta - read - - scenario - ui_translation_meta - ui_translation_string - updated_at @@ -4794,7 +4793,6 @@ - job_id - meta - read - - scenario - ui_translation_meta - ui_translation_string - updated_at @@ -4820,7 +4818,6 @@ - job_id - meta - read - - scenario - ui_translation_meta - ui_translation_string - updated_at @@ -6200,6 +6197,28 @@ _eq: X-Hasura-User-Id - active: _eq: true + event_triggers: + - name: notifications_time_tickets + definition: + enable_manual: false + insert: + columns: '*' + update: + columns: '*' + retry_conf: + interval_sec: 10 + num_retries: 0 + timeout_sec: 60 + webhook_from_env: HASURA_API_URL + headers: + - name: event-secret + value_from_env: EVENT_SECRET + request_transform: + method: POST + query_params: {} + template_engine: Kriti + url: '{{$base_url}}/events/handleTimeTicketsChange' + version: 2 - table: name: transitions schema: public diff --git a/hasura/migrations/1736522640938_alter_table_public_notifications_drop_column_scenario/down.sql b/hasura/migrations/1736522640938_alter_table_public_notifications_drop_column_scenario/down.sql new file mode 100644 index 000000000..7ef1b7017 --- /dev/null +++ b/hasura/migrations/1736522640938_alter_table_public_notifications_drop_column_scenario/down.sql @@ -0,0 +1,3 @@ +comment on column "public"."notifications"."scenario" is E'Real Time Notifications System'; +alter table "public"."notifications" alter column "scenario" drop not null; +alter table "public"."notifications" add column "scenario" text; diff --git a/hasura/migrations/1736522640938_alter_table_public_notifications_drop_column_scenario/up.sql b/hasura/migrations/1736522640938_alter_table_public_notifications_drop_column_scenario/up.sql new file mode 100644 index 000000000..19d298dc1 --- /dev/null +++ b/hasura/migrations/1736522640938_alter_table_public_notifications_drop_column_scenario/up.sql @@ -0,0 +1 @@ +alter table "public"."notifications" drop column "scenario" cascade; diff --git a/server/notifications/eventHandlers/handlePartsDispatchChange.js b/server/notifications/eventHandlers/handlePartsDispatchChange.js new file mode 100644 index 000000000..fd3f78b97 --- /dev/null +++ b/server/notifications/eventHandlers/handlePartsDispatchChange.js @@ -0,0 +1,5 @@ +const handlePartsDispatchChange = (req, res) => { + return res.status(200).json({ message: "Parts Dispatch change handled." }); +}; + +module.exports = handlePartsDispatchChange; diff --git a/server/notifications/eventHandlers/handlePartsOrderChange.js b/server/notifications/eventHandlers/handlePartsOrderChange.js new file mode 100644 index 000000000..16c09ef2f --- /dev/null +++ b/server/notifications/eventHandlers/handlePartsOrderChange.js @@ -0,0 +1,5 @@ +const handlePartsOrderChange = (req, res) => { + return res.status(200).json({ message: "Parts Order change handled." }); +}; + +module.exports = handlePartsOrderChange; diff --git a/server/notifications/eventHandlers/handleTasksChange.js b/server/notifications/eventHandlers/handleTasksChange.js new file mode 100644 index 000000000..5a6e7f344 --- /dev/null +++ b/server/notifications/eventHandlers/handleTasksChange.js @@ -0,0 +1,5 @@ +const handleTasksChange = (req, res) => { + return res.status(200).json({ message: "Tasks change handled." }); +}; + +module.exports = handleTasksChange; diff --git a/server/notifications/eventHandlers/handleTimeTicketsChange.js b/server/notifications/eventHandlers/handleTimeTicketsChange.js new file mode 100644 index 000000000..403fa4060 --- /dev/null +++ b/server/notifications/eventHandlers/handleTimeTicketsChange.js @@ -0,0 +1,5 @@ +const handleTimeTicketsChange = (req, res) => { + return res.status(200).json({ message: "Time Tickets change handled." }); +}; + +module.exports = handleTimeTicketsChange; diff --git a/server/routes/notificationsRoutes.js b/server/routes/notificationsRoutes.js index 235d71e7f..a459b9a53 100644 --- a/server/routes/notificationsRoutes.js +++ b/server/routes/notificationsRoutes.js @@ -4,6 +4,9 @@ const { subscribe, unsubscribe, sendNotification } = require("../firebase/fireba const eventAuthorizationMiddleware = require("../middleware/eventAuthorizationMIddleware"); const handleJobChange = require("../notifications/eventHandlers/handeJobChange"); const handleBillChange = require("../notifications/eventHandlers/handleBillChange"); +const handlePartsOrderChange = require("../notifications/eventHandlers/handlePartsOrderChange"); +const handlePartsDispatchChange = require("../notifications/eventHandlers/handlePartsDispatchChange"); +const handleTasksChange = require("../notifications/eventHandlers/handleTasksChange"); const router = express.Router(); @@ -15,5 +18,9 @@ router.post("/sendtestnotification", validateFirebaseIdTokenMiddleware, sendNoti // Hasura Entry points for creating notifications router.post("/events/handleJobChange", eventAuthorizationMiddleware, handleJobChange); router.post("/events/handleBillChange", eventAuthorizationMiddleware, handleBillChange); +router.post("/events/handlePartsOrderChange", eventAuthorizationMiddleware, handlePartsOrderChange); +router.post("/events/handlePartsDispatchChange", eventAuthorizationMiddleware, handlePartsDispatchChange); +router.post("/events/handleTasksChange", eventAuthorizationMiddleware, handleTasksChange); +router.post("/events/handleTimeTicketsChange", eventAuthorizationMiddleware, handleTasksChange); module.exports = router;