49 lines
1.3 KiB
TypeScript
49 lines
1.3 KiB
TypeScript
import vine from '@vinejs/vine'
|
|
|
|
export const createCategoryValidator = vine.compile(
|
|
vine.object({
|
|
name: vine.string().unique(async (db, value) => {
|
|
const match = await db.from('categories').select('id').where('name', value).first()
|
|
return !match
|
|
}),
|
|
nameHu: vine.string().optional(),
|
|
nameEn: vine.string().optional(),
|
|
slug: vine.string().unique(async (db, value) => {
|
|
const match = await db.from('categories').select('id').where('slug', value).first()
|
|
return !match
|
|
}),
|
|
})
|
|
)
|
|
|
|
export const updateCategoryValidator = vine.compile(
|
|
vine.object({
|
|
id: vine.number(),
|
|
name: vine
|
|
.string()
|
|
.unique(async (db, value, field) => {
|
|
const match = await db
|
|
.from('categories')
|
|
.select('id')
|
|
.where('name', value)
|
|
.whereNot('id', field.data.id)
|
|
.first()
|
|
return !match
|
|
})
|
|
.optional(),
|
|
nameHu: vine.string().optional(),
|
|
nameEn: vine.string().optional(),
|
|
slug: vine
|
|
.string()
|
|
.unique(async (db, value, field) => {
|
|
const match = await db
|
|
.from('categories')
|
|
.select('id')
|
|
.where('slug', value)
|
|
.whereNot('id', field.data.id)
|
|
.first()
|
|
return !match
|
|
})
|
|
.optional(),
|
|
})
|
|
)
|