File size: 1,109 Bytes
4c025e9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
const Joi = require('joi');

// 用户验证模式
const userSchema = Joi.object({
  username: Joi.string().required().min(3).max(30),
  password: Joi.string().required().min(6),
});

// 分类验证模式
const categorySchema = Joi.object({
  name: Joi.string().required().min(1).max(30),
  color: Joi.string().pattern(new RegExp('^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$')),
});

// 提示词验证模式
const promptSchema = Joi.object({
  title: Joi.string().required().min(1).max(100),
  content: Joi.string().required(),
  tags: Joi.array().items(Joi.string()),
});

// 提示词组验证模式
const promptGroupSchema = Joi.object({
  name: Joi.string().required().min(1).max(100),
  description: Joi.string().allow('', null),
  category: Joi.string().pattern(new RegExp('^[0-9a-fA-F]{24}$')),
});

// DSL文件验证模式
const dslFileSchema = Joi.object({
  name: Joi.string().required(),
  fileData: Joi.string().required(),
  mimeType: Joi.string(),
});

module.exports = {
  userSchema,
  categorySchema,
  promptSchema,
  promptGroupSchema,
  dslFileSchema,
};