126 lines
2.7 KiB
GraphQL
126 lines
2.7 KiB
GraphQL
|
|
# ----------------------------------------------------------
|
|
# LIST ALL (admin/debug)
|
|
# ----------------------------------------------------------
|
|
query listConversations(
|
|
$offset: Int
|
|
$limit: Int
|
|
) @auth(level: USER) {
|
|
conversations(offset: $offset, limit: $limit, orderBy: { updatedAt: DESC }) {
|
|
id
|
|
subject
|
|
status
|
|
conversationType
|
|
isGroup
|
|
groupName
|
|
lastMessage
|
|
lastMessageAt
|
|
createdAt
|
|
}
|
|
}
|
|
|
|
# ----------------------------------------------------------
|
|
# GET BY ID
|
|
# ----------------------------------------------------------
|
|
query getConversationById($id: UUID!) @auth(level: USER) {
|
|
conversation(id: $id) {
|
|
id
|
|
subject
|
|
status
|
|
conversationType
|
|
isGroup
|
|
groupName
|
|
lastMessage
|
|
lastMessageAt
|
|
createdAt
|
|
}
|
|
}
|
|
|
|
# ----------------------------------------------------------
|
|
# LIST BY TYPE (CLIENT_VENDOR / GROUP_STAFF)
|
|
# ----------------------------------------------------------
|
|
query listConversationsByType(
|
|
$conversationType: ConversationType!
|
|
$offset: Int
|
|
$limit: Int
|
|
) @auth(level: USER) {
|
|
conversations(
|
|
where: { conversationType: { eq: $conversationType } }
|
|
offset: $offset
|
|
limit: $limit
|
|
orderBy: { lastMessageAt: DESC }
|
|
) {
|
|
id
|
|
subject
|
|
status
|
|
conversationType
|
|
isGroup
|
|
groupName
|
|
lastMessage
|
|
lastMessageAt
|
|
createdAt
|
|
}
|
|
}
|
|
|
|
# ----------------------------------------------------------
|
|
# LIST BY STATUS (ACTIVE)
|
|
# ----------------------------------------------------------
|
|
query listConversationsByStatus(
|
|
$status: ConversationStatus!
|
|
$offset: Int
|
|
$limit: Int
|
|
) @auth(level: USER) {
|
|
conversations(
|
|
where: { status: { eq: $status } }
|
|
offset: $offset
|
|
limit: $limit
|
|
orderBy: { lastMessageAt: DESC }
|
|
) {
|
|
id
|
|
subject
|
|
status
|
|
conversationType
|
|
isGroup
|
|
groupName
|
|
lastMessage
|
|
lastMessageAt
|
|
createdAt
|
|
}
|
|
}
|
|
|
|
# ----------------------------------------------------------
|
|
# FILTER (dashboard/debug)
|
|
# Supports searching by multiple optional fields
|
|
# ----------------------------------------------------------
|
|
query filterConversations(
|
|
$status: ConversationStatus
|
|
$conversationType: ConversationType
|
|
$isGroup: Boolean
|
|
$lastMessageAfter: Timestamp
|
|
$lastMessageBefore: Timestamp
|
|
$offset: Int
|
|
$limit: Int
|
|
) @auth(level: USER) {
|
|
conversations(
|
|
where: {
|
|
status: { eq: $status }
|
|
conversationType: { eq: $conversationType }
|
|
isGroup: { eq: $isGroup }
|
|
lastMessageAt: { ge: $lastMessageAfter, le: $lastMessageBefore }
|
|
}
|
|
offset: $offset
|
|
limit: $limit
|
|
orderBy: { lastMessageAt: DESC }
|
|
) {
|
|
id
|
|
subject
|
|
status
|
|
conversationType
|
|
isGroup
|
|
groupName
|
|
lastMessage
|
|
lastMessageAt
|
|
createdAt
|
|
}
|
|
}
|