Barazo AppView backend barazo.forum
at main 74 lines 2.4 kB view raw
1import { z } from 'zod' 2 3// --------------------------------------------------------------------------- 4// Mod notes 5// --------------------------------------------------------------------------- 6 7export const createModNoteSchema = z 8 .object({ 9 subjectDid: z.string().min(1).optional(), 10 subjectUri: z.string().min(1).optional(), 11 content: z.string().min(1).max(5000), 12 }) 13 .refine( 14 (data) => { 15 const hasDid = data.subjectDid !== undefined 16 const hasUri = data.subjectUri !== undefined 17 return (hasDid && !hasUri) || (!hasDid && hasUri) 18 }, 19 { message: 'Exactly one of subjectDid or subjectUri must be provided' }, 20 ) 21 22export const modNoteQuerySchema = z.object({ 23 subjectDid: z.string().optional(), 24 subjectUri: z.string().optional(), 25 cursor: z.string().optional(), 26 limit: z.coerce.number().int().min(1).max(100).default(25), 27}) 28 29export const deleteModNoteSchema = z.object({ 30 id: z.coerce.number().int().positive(), 31}) 32 33// --------------------------------------------------------------------------- 34// Topic notices 35// --------------------------------------------------------------------------- 36 37export const createTopicNoticeSchema = z.object({ 38 topicUri: z.string().min(1), 39 noticeType: z.enum(['closed', 'moved', 'outdated', 'announcement', 'custom']), 40 headline: z.string().min(1).max(200), 41 body: z.string().max(2000).optional(), 42}) 43 44export const dismissTopicNoticeSchema = z.object({ 45 id: z.coerce.number().int().positive(), 46}) 47 48export const topicNoticeQuerySchema = z.object({ 49 topicUri: z.string().optional(), 50 cursor: z.string().optional(), 51 limit: z.coerce.number().int().min(1).max(100).default(25), 52}) 53 54// --------------------------------------------------------------------------- 55// Mod warnings 56// --------------------------------------------------------------------------- 57 58export const createWarningSchema = z.object({ 59 targetDid: z.string().min(1), 60 warningType: z.enum(['off_topic', 'harassment', 'rule_violation', 'other', 'custom']), 61 message: z.string().min(1).max(2000), 62 modComment: z.string().max(300).optional(), 63 internalNote: z.string().max(5000).optional(), 64}) 65 66export const warningQuerySchema = z.object({ 67 targetDid: z.string().optional(), 68 cursor: z.string().optional(), 69 limit: z.coerce.number().int().min(1).max(100).default(25), 70}) 71 72export const acknowledgeWarningSchema = z.object({ 73 id: z.coerce.number().int().positive(), 74})