61 lines
1.4 KiB
JavaScript
61 lines
1.4 KiB
JavaScript
import joi from 'joi'
|
|
|
|
import { setJson, apiHandler } from '@/helpers/api'
|
|
import { productRepo } from '@/helpers'
|
|
|
|
const getProduct = apiHandler(async (req, { params }) => {
|
|
const { id } = params
|
|
const result = await productRepo.getById(id)
|
|
return setJson({
|
|
data: result,
|
|
})
|
|
})
|
|
|
|
const updateProduct = apiHandler(
|
|
async (req, { params }) => {
|
|
const { id } = params
|
|
const body = await req.json()
|
|
await productRepo.update(id, body)
|
|
return setJson({
|
|
message: '商品更新成功',
|
|
})
|
|
},
|
|
{
|
|
isJwt: true,
|
|
identity: 'admin',
|
|
schema: joi.object({
|
|
title: joi.string().required(),
|
|
price: joi.number().required(),
|
|
category: joi.array().required(),
|
|
images: joi.array().required(),
|
|
info: joi.array().required(),
|
|
specification: joi.array().required(),
|
|
inStock: joi.number(),
|
|
description: joi.string().allow(''),
|
|
discount: joi.number(),
|
|
sizes: joi.array(),
|
|
colors: joi.array(),
|
|
category_levels: joi.object(),
|
|
}),
|
|
}
|
|
)
|
|
|
|
const deleteProduct = apiHandler(
|
|
async (req, { params }) => {
|
|
const { id } = params
|
|
await productRepo.delete(id)
|
|
return setJson({
|
|
message: '商品已成功删除',
|
|
})
|
|
},
|
|
{
|
|
isJwt: true,
|
|
identity: 'root',
|
|
}
|
|
)
|
|
|
|
export const GET = getProduct
|
|
export const PUT = updateProduct
|
|
export const DELETE = deleteProduct
|
|
export const dynamic = 'force-dynamic'
|