返回 AiToEarn
queue.config.ts
1 import { createZodDto } from '@yikart/common'
2 import { redisConfigSchema } from '@yikart/redis'
3 import { z } from 'zod'
4
5 /**
6 * Job 选项配置 Schema
7 */
8 const removeOnJobSchema = z.union([
9 z.boolean(),
10 z.object({
11 age: z.number().describe('保留时长(秒)'),
12 count: z.number().describe('保留最大数量'),
13 }),
14 ])
15
16 export const jobOptionsSchema = z.object({
17 /** 完成后移除 */
18 removeOnComplete: removeOnJobSchema.default({ age: 30, count: 1000 }),
19 /** 失败后移除 */
20 removeOnFail: removeOnJobSchema.default({ age: 60, count: 1000 }),
21 })
22
23 /**
24 * 队列配置 Schema
25 */
26 export const queueConfigSchema = z.object({
27 /** Redis 配置 */
28 redis: redisConfigSchema,
29 /** 队列前缀,默认 '{bull}' */
30 prefix: z.string().default('{bull}'),
31 /** Job 默认选项 */
32 jobOptions: jobOptionsSchema.optional(),
33 })
34
35 /**
36 * 队列配置类
37 */
38 export class QueueConfig extends createZodDto(queueConfigSchema) {}
39
39 lines TYPESCRIPT