CreateQueueSheet.schema.ts 731 B

123456789101112131415161718192021222324252627282930
  1. import z from 'zod'
  2. import { QueueNameSchema } from '../Queues.utils'
  3. const normalQueueSchema = z.object({
  4. type: z.literal('basic'),
  5. })
  6. const partitionedQueueSchema = z.object({
  7. type: z.literal('partitioned'),
  8. partitionInterval: z.coerce.number().int().positive(),
  9. retentionInterval: z.coerce.number().int().positive(),
  10. })
  11. const unloggedQueueSchema = z.object({
  12. type: z.literal('unlogged'),
  13. })
  14. export const FormSchema = z.object({
  15. name: QueueNameSchema,
  16. enableRls: z.boolean(),
  17. values: z.discriminatedUnion('type', [
  18. normalQueueSchema,
  19. partitionedQueueSchema,
  20. unloggedQueueSchema,
  21. ]),
  22. })
  23. export type CreateQueueForm = z.infer<typeof FormSchema>
  24. export type QueueType = CreateQueueForm['values']