Files
2026-03-18 15:04:18 +01:00

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
}
}