File size: 1,519 Bytes
433085e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
260547f
 
 
 
 
 
 
 
 
433085e
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
43
44
45
46
47
48
import * as joi from "joi";
import { Role } from "../enums/roles.enum";

export const createAdminSchema = joi
  .object()
  .required()
  .keys({
    name: joi.string().empty().required().messages({
      "string.base": "please enter a valid name",
      "any.required": "name is required",
      "string.empty": "name can not be empty",
    }),
    email: joi
      .string()
      .required()
      .email({
        minDomainSegments: 2,
        tlds: { allow: ["com", "net", "org", "eg", "io"] },
      })
      .empty()
      .messages({
        "string.email": "please enter a valid email",
        "any.required": "email must be entered",
        "string.empty": "email can not be empty",
      }),
    password: joi.string().empty().min(8).required().messages({
      "string.base": "please enter a valid password",
      "any.required": "password must be entered",
      "string.empty": "password cannot be empty",
      "string.min": "password must be at least 8 characters",
    }),
    dob: joi.date().empty().optional().messages({
      "date.base": "please enter a valid date",
    }),
    role: joi
      .string()
      .valid(...Object.values(Role))
      .optional().messages({
        "string.base": "please enter a valid role",
        "string.empty": "role cannot be empty"
      }),
    gender: joi.string().empty().required().messages({
      "string.base": "please enter a valid gender",
      "any.required": "gender must be entered",
      "string.empty": "gender cannot be empty"
    })
  });