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") +}