I am using a PostgreSQL database, with a GraphQL / NodeJS server. One of the mutations is giving me extensive problems, due to its intrinsically complex nature. I am trying to use console.log statements throughout so I can track the data, but not a SINGLE statement prints. Now, before you all jump on me and say that the mutation probably isn't getting hit, that's not the case. I'm getting return values, the mutation is occurring (I checked the Network section of the Browser to confirm. I also have error handlers that do not get triggered) but nothing gets printed.
The code for one of the two mutations called simultaneously is as follows...
import db from "../../../../utils/generatePrisma.js";
import checkOwnerAuth from "../../../../utils/checkAuthorization/check-owner-auth.js";
import checkManagerAuth from "../../../../utils/checkAuthorization/check-manager-auth.js";
export default {
Mutation: {
scorecardToolCreateWeeklyReports: async (_, {
token,
dspId,
role,
transporterId,
date,
feedbackStatus,
feedbackMessage,
feedbackMessageSent,
rank,
tier,
delivered,
keyFocusArea,
fico,
seatbeltOffRate,
speedingEventRate,
distractionsRate,
followingDistanceRate,
signalViolationsRate,
deliveryCompletionRate,
deliveredAndRecieved,
photoOnDelivery,
attendedDeliveryAccuracy,
dnr,
podOpps,
ccOpps
}, context) => {
let owner;
let manager;
if (role === 'OWNER') {
owner = await checkOwnerAuth(token)
}
if (role === 'MANAGER') {
manager = await checkManagerAuth(token)
}
const foundDriver = await db.driver.findFirst({
where: {
transporterId: transporterId,
dspId: dspId
}
})
if (!foundDriver) {
throw new Error('Driver does not exist')
}
console.log("\n-----------------------\n Found Driver in scoreCardToolCreateWeeklyReport")
console.log(foundDriver)
try {
return await db.weeklyReport.create({
data: {
driver: {
connect: {
id: foundDriver.id
}
},
date: date,
feedbackStatus: feedbackStatus,
feedbackMessage: feedbackMessage,
feedbackMessageSent: feedbackMessageSent,
rank: rank,
tier: tier,
delivered: delivered,
keyFocusArea: keyFocusArea,
fico: fico,
seatbeltOffRate: seatbeltOffRate,
speedingEventRate: speedingEventRate,
distractionsRate: distractionsRate,
followingDistanceRate: followingDistanceRate,
signalViolationsRate: signalViolationsRate,
deliveryCompletionRate: deliveryCompletionRate,
deliveredAndRecieved: deliveredAndRecieved,
photoOnDelivery: photoOnDelivery,
attendedDeliveryAccuracy: attendedDeliveryAccuracy,
dnr: dnr,
podOpps: podOpps,
ccOpps: ccOpps
}
}).then( (resolved) => {
console.log(resolved)
})
} catch (error) {
console.log("\n---------------\n Error in WeeklyReportCreation")
console.log(error)
throw new Error(error)
}
}
}
}
Interestingly enough, the return I recieve is exactly what I would want and would expect, however, it does not persist, and on any refresh, rerender, or movement between pages and there's no model, its like the mutation just never even happened. When the mutation is called from the Frontend, it runs somewhat as expected. Upon hitting inspect on the browser and looking at the response section in the Network tab, I get the following...
{"data":
{"scorecardToolCreateWeeklyReports":
{"id":"91c7dd10-0af8-4fc7-9906-20643700c97f",
"createdAt":"2022-04-12T18:09:09.787Z",
"date":"11-24-22",
"hadAccident":false,
"feedbackMessage":"null",
"feedbackMessageSent":false,
"feedbackStatus":"Fantastic",
"acknowledged":false,
"acknowledgedAt":null,
"rank":1,
"tier":"Fantastic",
"delivered":116,
"keyFocusArea":"null",
"fico":"850",
"seatbeltOffRate":"Coming Soon",
"speedingEventRate":"Coming Soon",
"distractionsRate":"Coming Soon",
"followingDistanceRate":"Coming Soon",
"signalViolationsRate":"Coming Soon",
"deliveryCompletionRate":"100",
"deliveredAndRecieved":"100",
"photoOnDelivery":"100",
"attendedDeliveryAccuracy":0,
"dnr":0,
"podOpps":54,
"ccOpps":0,
"__typename":"WeeklyReport"}}}
The mutation shown before is then placed into a minor resolver...
import GraphQLJSON from "graphql-type-json";
import scorecardToolCreateDriverAccounts from "./mutations/scorecardToolCreateDriverAccounts.js";
import scorecardToolCreateWeeklyReports from "./mutations/scorecardToolCreateWeeklyReports.js";
export default {
Query: {
},
Mutation: {
...scorecardToolCreateDriverAccounts.Mutation,
...scorecardToolCreateWeeklyReports.Mutation
},
JSON: GraphQLJSON
}
And then this minor resolver is then imported into the main resolver
import GraphQLJSON from 'graphql-type-json';
// NEW RESOLVERS
import ownerReslovers from './owner/ownerResolvers.js';
import managerResolvers from './manager/managerResolvers.js';
import driverResolvers from './driver/driverResolvers.js';
import dspResolvers from './dsp/dspResolvers.js';
import weeklyReportResolvers from './weeklyReport/weeklyReportResolvers.js';
import scorecardResolvers from './scorecardTool/scorecardResolvers.js';
import chatroomResolvers from './chatrooms/chatroomResolvers.js';
import shiftPlannerResolvers from './shiftPlanner/shiftPlannerResolvers.js';
import messagesResolvers from './messages/messagesResolvers.js';
import accidentResolvers from './accidents/accidentResolvers.js';
import shiftPlannerDatesResolvers from './shiftPlannerDates/shiftPlannerDatesResolvers.js';
import shiftResolvers from './shift/shiftReolvers.js';
// ADDITIONAL RESOLVERS
import additionalResolvers from './additional/additionalResolvers.js';
export default {
Query: {
...ownerReslovers.Query,
...managerResolvers.Query,
...driverResolvers.Query,
...dspResolvers.Query,
...weeklyReportResolvers.Query,
...shiftPlannerResolvers.Query,
...chatroomResolvers.Query,
...messagesResolvers.Query,
...accidentResolvers.Query,
...shiftPlannerDatesResolvers.Query,
...shiftResolvers.Query,
...scorecardResolvers.Query,
...additionalResolvers.Query
},
Mutation: {
...ownerReslovers.Mutation,
...managerResolvers.Mutation,
...driverResolvers.Mutation,
...dspResolvers.Mutation,
...weeklyReportResolvers.Mutation,
...shiftPlannerResolvers.Mutation,
...chatroomResolvers.Mutation,
...messagesResolvers.Mutation,
...accidentResolvers.Mutation,
...shiftPlannerDatesResolvers.Mutation,
...shiftResolvers.Mutation,
...scorecardResolvers.Mutation,
...additionalResolvers.Mutation
},
JSON: GraphQLJSON,
}