diff --git a/client/src/redux/media/media.sagas.js b/client/src/redux/media/media.sagas.js index a85109776..7b88ea73e 100644 --- a/client/src/redux/media/media.sagas.js +++ b/client/src/redux/media/media.sagas.js @@ -17,9 +17,10 @@ export function* getJobMedia({ payload: jobid }) { const imagesFetch = yield cleanAxios.post( `${localmediaserverhttp}/jobs/list`, { - jobid + jobid, + }, - { headers: { ims_token: bodyshop.localmediatoken } } + { headers: { ims_token: bodyshop.localmediatoken, bodyshopid: bodyshop.id } } ); const documentsFetch = yield cleanAxios.post( `${localmediaserverhttp}/bills/list`, diff --git a/hasura/metadata/tables.yaml b/hasura/metadata/tables.yaml index be33aaf1e..a52ea634f 100644 --- a/hasura/metadata/tables.yaml +++ b/hasura/metadata/tables.yaml @@ -4711,9 +4711,31 @@ - table: name: media_analytics schema: public + object_relationships: + - name: bodyshop + using: + foreign_key_constraint_on: bodyshopid + array_relationships: + - name: media_analytics_details + using: + foreign_key_constraint_on: + column: media_analytics_id + table: + name: media_analytics_detail + schema: public - table: name: media_analytics_detail schema: public + object_relationships: + - name: bodyshop + using: + foreign_key_constraint_on: bodyshopid + - name: job + using: + foreign_key_constraint_on: jobid + - name: media_analytic + using: + foreign_key_constraint_on: media_analytics_id - table: name: messages schema: public diff --git a/hasura/migrations/1762461945311_alter_table_public_media_analytics_add_column_total_size_bytes/down.sql b/hasura/migrations/1762461945311_alter_table_public_media_analytics_add_column_total_size_bytes/down.sql new file mode 100644 index 000000000..3e4d98345 --- /dev/null +++ b/hasura/migrations/1762461945311_alter_table_public_media_analytics_add_column_total_size_bytes/down.sql @@ -0,0 +1,4 @@ +-- Could not auto-generate a down migration. +-- Please write an appropriate down migration for the SQL below: +-- alter table "public"."media_analytics" add column "total_size_bytes" integer +-- null; diff --git a/hasura/migrations/1762461945311_alter_table_public_media_analytics_add_column_total_size_bytes/up.sql b/hasura/migrations/1762461945311_alter_table_public_media_analytics_add_column_total_size_bytes/up.sql new file mode 100644 index 000000000..4567ad705 --- /dev/null +++ b/hasura/migrations/1762461945311_alter_table_public_media_analytics_add_column_total_size_bytes/up.sql @@ -0,0 +1,2 @@ +alter table "public"."media_analytics" add column "total_size_bytes" integer + null; diff --git a/hasura/migrations/1762461962953_alter_table_public_media_analytics_add_column_total_size_mb/down.sql b/hasura/migrations/1762461962953_alter_table_public_media_analytics_add_column_total_size_mb/down.sql new file mode 100644 index 000000000..bc5749bba --- /dev/null +++ b/hasura/migrations/1762461962953_alter_table_public_media_analytics_add_column_total_size_mb/down.sql @@ -0,0 +1,4 @@ +-- Could not auto-generate a down migration. +-- Please write an appropriate down migration for the SQL below: +-- alter table "public"."media_analytics" add column "total_size_mb" numeric +-- null; diff --git a/hasura/migrations/1762461962953_alter_table_public_media_analytics_add_column_total_size_mb/up.sql b/hasura/migrations/1762461962953_alter_table_public_media_analytics_add_column_total_size_mb/up.sql new file mode 100644 index 000000000..cf5636cf4 --- /dev/null +++ b/hasura/migrations/1762461962953_alter_table_public_media_analytics_add_column_total_size_mb/up.sql @@ -0,0 +1,2 @@ +alter table "public"."media_analytics" add column "total_size_mb" numeric + null; diff --git a/hasura/migrations/1762464155142_alter_table_public_media_analytics_detail_add_column_total_size_mb/down.sql b/hasura/migrations/1762464155142_alter_table_public_media_analytics_detail_add_column_total_size_mb/down.sql new file mode 100644 index 000000000..48efb4911 --- /dev/null +++ b/hasura/migrations/1762464155142_alter_table_public_media_analytics_detail_add_column_total_size_mb/down.sql @@ -0,0 +1,4 @@ +-- Could not auto-generate a down migration. +-- Please write an appropriate down migration for the SQL below: +-- alter table "public"."media_analytics_detail" add column "total_size_mb" numeric +-- null; diff --git a/hasura/migrations/1762464155142_alter_table_public_media_analytics_detail_add_column_total_size_mb/up.sql b/hasura/migrations/1762464155142_alter_table_public_media_analytics_detail_add_column_total_size_mb/up.sql new file mode 100644 index 000000000..4a0fde33a --- /dev/null +++ b/hasura/migrations/1762464155142_alter_table_public_media_analytics_detail_add_column_total_size_mb/up.sql @@ -0,0 +1,2 @@ +alter table "public"."media_analytics_detail" add column "total_size_mb" numeric + null; diff --git a/hasura/migrations/1762464955745_alter_table_public_media_analytics_detail_alter_column_jobid/down.sql b/hasura/migrations/1762464955745_alter_table_public_media_analytics_detail_alter_column_jobid/down.sql new file mode 100644 index 000000000..baeb4aef5 --- /dev/null +++ b/hasura/migrations/1762464955745_alter_table_public_media_analytics_detail_alter_column_jobid/down.sql @@ -0,0 +1 @@ +alter table "public"."media_analytics_detail" alter column "jobid" set not null; diff --git a/hasura/migrations/1762464955745_alter_table_public_media_analytics_detail_alter_column_jobid/up.sql b/hasura/migrations/1762464955745_alter_table_public_media_analytics_detail_alter_column_jobid/up.sql new file mode 100644 index 000000000..641d87df7 --- /dev/null +++ b/hasura/migrations/1762464955745_alter_table_public_media_analytics_detail_alter_column_jobid/up.sql @@ -0,0 +1 @@ +alter table "public"."media_analytics_detail" alter column "jobid" drop not null; diff --git a/hasura/migrations/1762546299465_alter_table_public_media_analytics_alter_column_total_size_bytes/down.sql b/hasura/migrations/1762546299465_alter_table_public_media_analytics_alter_column_total_size_bytes/down.sql new file mode 100644 index 000000000..8a8d722db --- /dev/null +++ b/hasura/migrations/1762546299465_alter_table_public_media_analytics_alter_column_total_size_bytes/down.sql @@ -0,0 +1 @@ +ALTER TABLE "public"."media_analytics" ALTER COLUMN "total_size_bytes" TYPE integer; diff --git a/hasura/migrations/1762546299465_alter_table_public_media_analytics_alter_column_total_size_bytes/up.sql b/hasura/migrations/1762546299465_alter_table_public_media_analytics_alter_column_total_size_bytes/up.sql new file mode 100644 index 000000000..41be3af0d --- /dev/null +++ b/hasura/migrations/1762546299465_alter_table_public_media_analytics_alter_column_total_size_bytes/up.sql @@ -0,0 +1 @@ +ALTER TABLE "public"."media_analytics" ALTER COLUMN "total_size_bytes" TYPE numeric; diff --git a/hasura/migrations/1762546323722_alter_table_public_media_analytics_detail_alter_column_total_size_bytes/down.sql b/hasura/migrations/1762546323722_alter_table_public_media_analytics_detail_alter_column_total_size_bytes/down.sql new file mode 100644 index 000000000..8c75804d7 --- /dev/null +++ b/hasura/migrations/1762546323722_alter_table_public_media_analytics_detail_alter_column_total_size_bytes/down.sql @@ -0,0 +1 @@ +ALTER TABLE "public"."media_analytics_detail" ALTER COLUMN "total_size_bytes" TYPE integer; diff --git a/hasura/migrations/1762546323722_alter_table_public_media_analytics_detail_alter_column_total_size_bytes/up.sql b/hasura/migrations/1762546323722_alter_table_public_media_analytics_detail_alter_column_total_size_bytes/up.sql new file mode 100644 index 000000000..7320b541a --- /dev/null +++ b/hasura/migrations/1762546323722_alter_table_public_media_analytics_detail_alter_column_total_size_bytes/up.sql @@ -0,0 +1 @@ +ALTER TABLE "public"."media_analytics_detail" ALTER COLUMN "total_size_bytes" TYPE numeric; diff --git a/server/data/analytics/documents.js b/server/data/analytics/documents.js new file mode 100644 index 000000000..5c457e2ef --- /dev/null +++ b/server/data/analytics/documents.js @@ -0,0 +1,37 @@ +const logger = require("../../utils/logger"); +const { client } = require('../../graphql-client/graphql-client'); +const { INSERT_MEDIA_ANALYTICS, GET_BODYSHOP_BY_ID } = require("../../graphql-client/queries"); + +const documentAnalytics = async (req, res) => { + try { + const { data } = req.body; + + //Check if the bodyshopid is real as a "security" measure + if (!data.bodyshopid) { + throw new Error("No bodyshopid provided in data"); + } + + const { bodyshops_by_pk } = await client.request(GET_BODYSHOP_BY_ID, { + id: data.bodyshopid + }); + + if (!bodyshops_by_pk) { + throw new Error("Invalid bodyshopid provided in data"); + } + + await client.request(INSERT_MEDIA_ANALYTICS, { + mediaObject: data + }); + + res.json({ status: "success" }) + } catch (error) { + logger.log("document-analytics-error", "ERROR", req?.user?.email, null, { + error: error.message, + stack: error.stack + }); + res.status(500).json({ error: error.message, stack: error.stack }); + } +}; + + +exports.default = documentAnalytics; diff --git a/server/data/data.js b/server/data/data.js index 0aa7f6e34..1706d78af 100644 --- a/server/data/data.js +++ b/server/data/data.js @@ -8,4 +8,5 @@ exports.podium = require("./podium").default; exports.emsUpload = require("./emsUpload").default; exports.carfax = require("./carfax").default; exports.carfaxRps = require("./carfax-rps").default; -exports.vehicletype = require("./vehicletype/vehicletype").default; \ No newline at end of file +exports.vehicletype = require("./vehicletype/vehicletype").default; +exports.documentAnalytics = require("./analytics/documents").default; \ No newline at end of file diff --git a/server/graphql-client/queries.js b/server/graphql-client/queries.js index dbcdff028..dcbd708de 100644 --- a/server/graphql-client/queries.js +++ b/server/graphql-client/queries.js @@ -3160,3 +3160,12 @@ exports.DELETE_PHONE_NUMBER_OPT_OUT = ` } } `; + + +exports.INSERT_MEDIA_ANALYTICS = ` +mutation INSERT_MEDIA_ANALYTICS($mediaObject: media_analytics_insert_input!) { + insert_media_analytics_one(object: $mediaObject) { + id + } +} +` \ No newline at end of file diff --git a/server/routes/miscellaneousRoutes.js b/server/routes/miscellaneousRoutes.js index 0f783146f..df6c3448a 100644 --- a/server/routes/miscellaneousRoutes.js +++ b/server/routes/miscellaneousRoutes.js @@ -146,7 +146,7 @@ router.post("/bodyshop-cache", eventAuthorizationMiddleware, updateBodyshopCache // Estimate Scrubber Vehicle Type router.post("/es/vehicletype", data.vehicletype); - +router.post("/analytics/documents", data.documentAnalytics); // Health Check for docker-compose-cluster load balancer, only available in development if (process.env.NODE_ENV === "development") { router.get("/health", (req, res) => {