Files
gamegroup2/frontend/src/api/gameBlacklist.ts
T

58 lines
1.6 KiB
TypeScript
Raw Normal View History

import { pb } from './pocketbase'
import type { BlacklistEntry } from '@/types'
export async function createBlacklistEntry(data: {
group: string
game?: string
gameName: string
reason: string
description: string
severity: string
}): Promise<BlacklistEntry> {
const user = pb.authStore.model
if (!user) throw new Error('未登录')
const payload: Record<string, any> = {
group: data.group,
reporter: user.id,
gameName: data.gameName,
reason: data.reason,
description: data.description,
severity: data.severity,
}
if (data.game) payload.game = data.game
const record = await pb.collection('game_blacklist').create(payload)
return record as unknown as BlacklistEntry
}
export async function listBlacklist(
groupId: string,
options?: { reason?: string; severity?: string }
): Promise<BlacklistEntry[]> {
let filter = `group="${groupId}"`
if (options?.reason) filter += ` && reason="${options.reason}"`
if (options?.severity) filter += ` && severity="${options.severity}"`
const result = await pb.collection('game_blacklist').getFullList({
filter,
sort: '-created',
expand: 'reporter,game',
$autoCancel: false,
})
return result as unknown as BlacklistEntry[]
}
export async function deleteBlacklistEntry(entryId: string): Promise<void> {
await pb.collection('game_blacklist').delete(entryId)
}
export async function subscribeBlacklist(
groupId: string,
callback: (data: any) => void
): Promise<() => void> {
return pb.collection('game_blacklist').subscribe('*', (data) => {
if (data.record?.group === groupId) callback(data)
})
}