33 lines
814 B
TypeScript
33 lines
814 B
TypeScript
import vine from '@vinejs/vine'
|
|
|
|
export const createUserValidator = vine.compile(
|
|
vine.object({
|
|
email: vine.string().email().normalizeEmail(),
|
|
password: vine.string().minLength(8),
|
|
fullName: vine.string(),
|
|
role: vine.string(),
|
|
})
|
|
)
|
|
export const updateUserValidator = vine.compile(
|
|
vine.object({
|
|
id: vine.number(),
|
|
email: vine
|
|
.string()
|
|
.email()
|
|
.normalizeEmail()
|
|
.unique(async (db, value, field) => {
|
|
const match = await db
|
|
.from('users')
|
|
.select('id')
|
|
.where('email', value)
|
|
.whereNot('id', field.data.id)
|
|
.first()
|
|
return !match
|
|
})
|
|
.optional(),
|
|
password: vine.string().minLength(8).optional(),
|
|
fullName: vine.string().optional(),
|
|
role: vine.string().optional(),
|
|
})
|
|
)
|