mirror of
https://github.com/whyour/qinglong.git
synced 2025-09-12 14:06:10 +08:00

Introduces Joi validation for the GET /dependencies route using celebrate, ensuring request bodies conform to expected structure. Updates the DependenceService.dependencies method to handle type filtering more robustly and refines the search condition logic.
160 lines
4.3 KiB
TypeScript
160 lines
4.3 KiB
TypeScript
import { Router, Request, Response, NextFunction } from 'express';
|
|
import { Container } from 'typedi';
|
|
import DependenceService from '../services/dependence';
|
|
import { Logger } from 'winston';
|
|
import { celebrate, Joi } from 'celebrate';
|
|
const route = Router();
|
|
|
|
export default (app: Router) => {
|
|
app.use('/dependencies', route);
|
|
|
|
route.get(
|
|
'/',
|
|
celebrate({
|
|
body: Joi.array().items(
|
|
Joi.object({
|
|
searchValue: Joi.string().optional().allow(''),
|
|
type: Joi.string().optional().allow(''),
|
|
status: Joi.string().optional().allow(''),
|
|
}),
|
|
),
|
|
}),
|
|
async (req: Request, res: Response, next: NextFunction) => {
|
|
const logger: Logger = Container.get('logger');
|
|
try {
|
|
const dependenceService = Container.get(DependenceService);
|
|
const data = await dependenceService.dependencies(req.query as any);
|
|
return res.send({ code: 200, data });
|
|
} catch (e) {
|
|
logger.error('🔥 error: %o', e);
|
|
return next(e);
|
|
}
|
|
},
|
|
);
|
|
|
|
route.post(
|
|
'/',
|
|
celebrate({
|
|
body: Joi.array().items(
|
|
Joi.object({
|
|
name: Joi.string().required(),
|
|
type: Joi.number().required(),
|
|
remark: Joi.string().optional().allow(''),
|
|
}),
|
|
),
|
|
}),
|
|
async (req: Request, res: Response, next: NextFunction) => {
|
|
try {
|
|
const dependenceService = Container.get(DependenceService);
|
|
const data = await dependenceService.create(req.body);
|
|
return res.send({ code: 200, data });
|
|
} catch (e) {
|
|
return next(e);
|
|
}
|
|
},
|
|
);
|
|
|
|
route.put(
|
|
'/',
|
|
celebrate({
|
|
body: Joi.object({
|
|
name: Joi.string().required(),
|
|
id: Joi.number().required(),
|
|
type: Joi.number().required(),
|
|
remark: Joi.string().optional().allow(''),
|
|
}),
|
|
}),
|
|
async (req: Request, res: Response, next: NextFunction) => {
|
|
try {
|
|
const dependenceService = Container.get(DependenceService);
|
|
const data = await dependenceService.update(req.body);
|
|
return res.send({ code: 200, data });
|
|
} catch (e) {
|
|
return next(e);
|
|
}
|
|
},
|
|
);
|
|
|
|
route.delete(
|
|
'/',
|
|
celebrate({
|
|
body: Joi.array().items(Joi.number().required()),
|
|
}),
|
|
async (req: Request, res: Response, next: NextFunction) => {
|
|
try {
|
|
const dependenceService = Container.get(DependenceService);
|
|
const data = await dependenceService.remove(req.body);
|
|
return res.send({ code: 200, data });
|
|
} catch (e) {
|
|
return next(e);
|
|
}
|
|
},
|
|
);
|
|
|
|
route.delete(
|
|
'/force',
|
|
celebrate({
|
|
body: Joi.array().items(Joi.number().required()),
|
|
}),
|
|
async (req: Request, res: Response, next: NextFunction) => {
|
|
try {
|
|
const dependenceService = Container.get(DependenceService);
|
|
const data = await dependenceService.remove(req.body, true);
|
|
return res.send({ code: 200, data });
|
|
} catch (e) {
|
|
return next(e);
|
|
}
|
|
},
|
|
);
|
|
|
|
route.get(
|
|
'/:id',
|
|
celebrate({
|
|
params: Joi.object({
|
|
id: Joi.number().required(),
|
|
}),
|
|
}),
|
|
async (req: Request<{ id: number }>, res: Response, next: NextFunction) => {
|
|
try {
|
|
const dependenceService = Container.get(DependenceService);
|
|
const data = await dependenceService.getDb({ id: req.params.id });
|
|
return res.send({ code: 200, data });
|
|
} catch (e) {
|
|
return next(e);
|
|
}
|
|
},
|
|
);
|
|
|
|
route.put(
|
|
'/reinstall',
|
|
celebrate({
|
|
body: Joi.array().items(Joi.number().required()),
|
|
}),
|
|
async (req: Request, res: Response, next: NextFunction) => {
|
|
try {
|
|
const dependenceService = Container.get(DependenceService);
|
|
const data = await dependenceService.reInstall(req.body);
|
|
return res.send({ code: 200, data });
|
|
} catch (e) {
|
|
return next(e);
|
|
}
|
|
},
|
|
);
|
|
|
|
route.put(
|
|
'/cancel',
|
|
celebrate({
|
|
body: Joi.array().items(Joi.number().required()),
|
|
}),
|
|
async (req: Request, res: Response, next: NextFunction) => {
|
|
try {
|
|
const dependenceService = Container.get(DependenceService);
|
|
await dependenceService.cancel(req.body);
|
|
return res.send({ code: 200 });
|
|
} catch (e) {
|
|
return next(e);
|
|
}
|
|
},
|
|
);
|
|
};
|