redhare-demo/app/api/category/route.js

63 lines
1.6 KiB
JavaScript

import joi from 'joi'
import { setJson, apiHandler } from '@/helpers/api'
import { categoryRepo } from '@/helpers'
const getCategory = apiHandler(async req => {
const result = await categoryRepo.getAll()
async function getCategoriesWithChildren() {
const allCategories = await categoryRepo.getAll()
function findChildren(category) {
const children = allCategories.filter(c => c.parent && c.parent === category._id)
if (children.length > 0) {
category.children = children.map(child => {
return findChildren(child)
})
}
return category
}
const rootCategories = allCategories.filter(c => !c.parent)
const categoriesWithChildren = rootCategories.map(category => {
return findChildren(category)
})
return categoriesWithChildren
}
const categoriesList = await getCategoriesWithChildren()
return setJson({
data: {
categories: result,
categoriesList: categoriesList[0],
},
})
})
const createCategory = apiHandler(
async req => {
const body = await req.json()
await categoryRepo.create(body)
return setJson({
message: '创建分类成功',
})
},
{
isJwt: true,
identity: 'admin',
schema: joi.object({
name: joi.string().required(),
slug: joi.string().required(),
image: joi.string().required(),
colors: joi.object().required(),
level: joi.number().required(),
parent: joi.string(),
}),
}
)
export const GET = getCategory
export const POST = createCategory
export const dynamic = 'force-dynamic'