From 2514f60fbf002f4825ab5c72a48dd07b19215c11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Salazar?= <73718835+joshrs23@users.noreply.github.com> Date: Wed, 26 Nov 2025 13:12:49 -0500 Subject: [PATCH] new converstation entity --- .../connector/conversation/mutations.gql | 39 +++++++++++++++++ .../connector/conversation/queries.gql | 43 +++++++++++++++++++ dataconnect/schema/conversation.gql | 26 +++++++++++ 3 files changed, 108 insertions(+) create mode 100644 dataconnect/connector/conversation/mutations.gql create mode 100644 dataconnect/connector/conversation/queries.gql create mode 100644 dataconnect/schema/conversation.gql diff --git a/dataconnect/connector/conversation/mutations.gql b/dataconnect/connector/conversation/mutations.gql new file mode 100644 index 00000000..8b5094fd --- /dev/null +++ b/dataconnect/connector/conversation/mutations.gql @@ -0,0 +1,39 @@ +mutation CreateConversation( + $participants: String!, + $conversationType: ConversationType!, + $relatedTo: UUID!, + $status: ConversationStatus +) @auth(level: USER) { + conversation_insert( + data: { + participants: $participants + conversationType: $conversationType + relatedTo: $relatedTo + status: $status + } + ) +} + +mutation UpdateConversation( + $id: UUID!, + $participants: String, + $conversationType: ConversationType, + $relatedTo: UUID!, + $status: ConversationStatus +) @auth(level: USER) { + conversation_update( + id: $id, + data: { + participants: $participants + conversationType: $conversationType + relatedTo: $relatedTo + status: $status + } + ) +} + +mutation DeleteConversation( + $id: UUID! +) @auth(level: USER) { + conversation_delete(id: $id) +} diff --git a/dataconnect/connector/conversation/queries.gql b/dataconnect/connector/conversation/queries.gql new file mode 100644 index 00000000..39dedbe7 --- /dev/null +++ b/dataconnect/connector/conversation/queries.gql @@ -0,0 +1,43 @@ +# dataconnect/connector/conversation/queries.gql + +query listConversation @auth(level: USER) { + conversations { + id + participants + conversationType + relatedTo + status + } +} + +query getConversationById( + $id: UUID! +) @auth(level: USER) { + conversation(id: $id) { + id + participants + conversationType + relatedTo + status + } +} + +query filterConversation( + $conversationType: ConversationType, + $status: ConversationStatus, + $relatedTo: UUID! +) @auth(level: USER) { + conversations( + where: { + conversationType: { eq: $conversationType } + status: { eq: $status } + relatedTo: { eq: $relatedTo } + } + ) { + id + participants + conversationType + relatedTo + status + } +} diff --git a/dataconnect/schema/conversation.gql b/dataconnect/schema/conversation.gql new file mode 100644 index 00000000..45114f19 --- /dev/null +++ b/dataconnect/schema/conversation.gql @@ -0,0 +1,26 @@ +enum ConversationType { + CLIENT_VENDOR + STAFF_CLIENT + STAFF_ADMIN + VENDOR_ADMIN + CLIENT_ADMIN + GROUP_STAFF + GROUP_EVENT_STAFF +} + +enum ConversationStatus { + ACTIVE + ARCHIVED + CLOSED +} + +type Conversation @table(name: "conversations") { + id: UUID! @default(expr: "uuidV4()") + participants: String! # participants (jsonb -> String, required array of strings) + conversationType: ConversationType! + relatedTo: UUID! # related_to (generic FK as string) + status: ConversationStatus + createdDate: Timestamp @default(expr: "request.time") + updatedDate: Timestamp @default(expr: "request.time") + createdBy: String @default(expr: "auth.uid") +}