From 30092146bf9be7f62fcd21a9460e46891a261ee8 Mon Sep 17 00:00:00 2001 From: dhinesh-m24 Date: Wed, 25 Feb 2026 15:42:19 +0530 Subject: [PATCH] fix: Update staff's cerficate schema to create queries and mutations --- .../connector/certificate/mutations.gql | 42 ++++++++++++++++++- backend/dataconnect/schema/certificate.gql | 4 +- 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/backend/dataconnect/connector/certificate/mutations.gql b/backend/dataconnect/connector/certificate/mutations.gql index 6fc8128a..d6305d2e 100644 --- a/backend/dataconnect/connector/certificate/mutations.gql +++ b/backend/dataconnect/connector/certificate/mutations.gql @@ -5,7 +5,7 @@ mutation CreateCertificate( $status: CertificateStatus! $fileUrl: String $icon: String - $certificationType: ComplianceType + $certificationType: ComplianceType! $issuer: String $staffId: UUID! $validationStatus: ValidationStatus @@ -63,3 +63,43 @@ mutation UpdateCertificate( mutation DeleteCertificate($id: UUID!) @auth(level: USER) { certificate_delete(id: $id) } + +# UPSERT STAFF CERTIFICATE +# Creates the certificate record if it does not exist, or updates +# it if it already exists (matched by staffId + certificationType key). +# Use this when uploading a certificate for the first time or +# updating an existing one. +# +# To update multiple certificates in a single network call, use +# aliased mutations in one GraphQL request from the client: +# +# mutation { +# cert1: upsertStaffCertificate(staffId: $id, certificationType: BACKGROUND_CHECK, ...) +# cert2: upsertStaffCertificate(staffId: $id, certificationType: FOOD_HANDLER, ...) +# } +# ------------------------------------------------------------ +mutation upsertStaffCertificate( + $staffId: UUID! + $certificationType: ComplianceType! + $name: String! + $status: CertificateStatus! + $fileUrl: String + $expiry: Timestamp + $issuer: String + $certificateNumber: String + $validationStatus: ValidationStatus +) @auth(level: USER) { + certificate_upsert( + data: { + staffId: $staffId + certificationType: $certificationType + name: $name + status: $status + fileUrl: $fileUrl + expiry: $expiry + issuer: $issuer + certificateNumber: $certificateNumber + validationStatus: $validationStatus + } + ) +} diff --git a/backend/dataconnect/schema/certificate.gql b/backend/dataconnect/schema/certificate.gql index 4f91b2f6..c19ed092 100644 --- a/backend/dataconnect/schema/certificate.gql +++ b/backend/dataconnect/schema/certificate.gql @@ -30,7 +30,7 @@ enum ValidationStatus { } -type Certificate @table(name: "certificates") { +type Certificate @table(name: "certificates", key: ["staffId", "certificationType"]) { id: UUID! @default(expr: "uuidV4()") name: String! @@ -39,7 +39,7 @@ type Certificate @table(name: "certificates") { status: CertificateStatus! fileUrl: String icon: String - certificationType: ComplianceType + certificationType: ComplianceType! issuer: String #Issuing Authority certificateNumber: String