From 174845eb244baee6c9f6bd88bbb0ad593b054368 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Salazar?= <73718835+joshrs23@users.noreply.github.com> Date: Tue, 25 Nov 2025 14:10:51 -0500 Subject: [PATCH] new invoice entity for dataConnect --- dataconnect/connector/invoice/mutations.gql | 51 +++++++++++++++++++++ dataconnect/connector/invoice/queries.gql | 50 ++++++++++++++++++++ dataconnect/schema/invoice.gql | 26 +++++++++++ 3 files changed, 127 insertions(+) create mode 100644 dataconnect/connector/invoice/mutations.gql create mode 100644 dataconnect/connector/invoice/queries.gql create mode 100644 dataconnect/schema/invoice.gql diff --git a/dataconnect/connector/invoice/mutations.gql b/dataconnect/connector/invoice/mutations.gql new file mode 100644 index 00000000..0fabc96d --- /dev/null +++ b/dataconnect/connector/invoice/mutations.gql @@ -0,0 +1,51 @@ +mutation CreateInvoice( + $invoiceNumber: String!, + $amount: Float!, + $status: InvoiceStatus!, + $issueDate: Timestamp!, + $dueDate: Timestamp!, + $disputedItems: String, + $isAutoGenerated: Boolean +) @auth(level: USER) { + invoice_insert( + data: { + invoiceNumber: $invoiceNumber + amount: $amount + status: $status + issueDate: $issueDate + dueDate: $dueDate + disputedItems: $disputedItems + isAutoGenerated: $isAutoGenerated + } + ) +} + +mutation UpdateInvoice( + $id: UUID!, + $invoiceNumber: String, + $amount: Float, + $status: InvoiceStatus, + $issueDate: Timestamp, + $dueDate: Timestamp, + $disputedItems: String, + $isAutoGenerated: Boolean +) @auth(level: USER) { + invoice_update( + id: $id, + data: { + invoiceNumber: $invoiceNumber + amount: $amount + status: $status + issueDate: $issueDate + dueDate: $dueDate + disputedItems: $disputedItems + isAutoGenerated: $isAutoGenerated + } + ) +} + +mutation DeleteInvoice( + $id: UUID! +) @auth(level: USER) { + invoice_delete(id: $id) +} diff --git a/dataconnect/connector/invoice/queries.gql b/dataconnect/connector/invoice/queries.gql new file mode 100644 index 00000000..270f5b20 --- /dev/null +++ b/dataconnect/connector/invoice/queries.gql @@ -0,0 +1,50 @@ +query listInvoice @auth(level: USER) { + invoices { + id + invoiceNumber + amount + status + issueDate + dueDate + isAutoGenerated + } +} + +query getInvoiceById( + $id: UUID! +) @auth(level: USER) { + invoice(id: $id) { + id + invoiceNumber + amount + status + issueDate + dueDate + disputedItems + isAutoGenerated + } +} + +query filterInvoices( + $invoiceNumber: String, + $status: InvoiceStatus, + $isAutoGenerated: Boolean, + $amount: Float +) @auth(level: USER) { + invoices( + where: { + invoiceNumber: { eq: $invoiceNumber } + status: { eq: $status } + isAutoGenerated: { eq: $isAutoGenerated } + amount: { eq: $amount } + } + ) { + id + invoiceNumber + amount + status + issueDate + dueDate + isAutoGenerated + } +} diff --git a/dataconnect/schema/invoice.gql b/dataconnect/schema/invoice.gql new file mode 100644 index 00000000..a391d417 --- /dev/null +++ b/dataconnect/schema/invoice.gql @@ -0,0 +1,26 @@ +enum InvoiceStatus { + DRAFT + PENDING_REVIEW + APPROVED + DISPUTED + UNDER_REVIEW + RESOLVED + OVERDUE + PAID + RECONCILED + CANCELLED +} + +type Invoice @table(name: "invoices") { + id: UUID! @default(expr: "uuidV4()") + invoiceNumber: String! + amount: Float! + status: InvoiceStatus! + issueDate: Timestamp! + dueDate: Timestamp! + disputedItems: String + isAutoGenerated: Boolean @default(expr: "false") # is_auto_generated + createdDate: Timestamp @default(expr: "request.time") + updatedDate: Timestamp @default(expr: "request.time") + createdBy: String @default(expr: "auth.uid") +}