144 lines
3.2 KiB
TypeScript
144 lines
3.2 KiB
TypeScript
import CURDHelper from "./CURDHelper.mjs";
|
|
|
|
export default class RouterFactor {
|
|
name: string = "";
|
|
db: any = null;
|
|
router: any = null;
|
|
constructor({
|
|
router: _router,
|
|
db: _db,
|
|
name: _name
|
|
}: any) {
|
|
this.router = _router;
|
|
this.db = _db;
|
|
this.name = _name;
|
|
}
|
|
|
|
/**
|
|
* 创建列表数据路由
|
|
*/
|
|
createGetList() {
|
|
const {
|
|
name,
|
|
db,
|
|
router
|
|
} = this;
|
|
|
|
router.post(`/api/${name}/list`, async (ctx: any) => {
|
|
// 设置头类型, 如果不设置,会直接下载该页面
|
|
ctx.type = 'application/json';
|
|
const body = ctx.request.body;
|
|
|
|
const data = await CURDHelper.retrieveList({
|
|
db,
|
|
name,
|
|
params: body
|
|
});
|
|
ctx.body = data;
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 创建详情路由
|
|
*/
|
|
createGetDetail() {
|
|
const {
|
|
name,
|
|
db,
|
|
router
|
|
} = this;
|
|
router.get(`/api/${name}`, async (ctx:any) => {
|
|
// 设置头类型, 如果不设置,会直接下载该页面
|
|
ctx.type = 'application/json';
|
|
const query = ctx.request.query;
|
|
|
|
const data = await CURDHelper.retrieveSingle({
|
|
db,
|
|
name,
|
|
params: query
|
|
});
|
|
ctx.body = data;
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 修改数据
|
|
*/
|
|
createUpdate() {
|
|
const {
|
|
name,
|
|
db,
|
|
router
|
|
} = this;
|
|
router.post(`/api/${name}/upd`, async (ctx:any) => {
|
|
// 设置头类型, 如果不设置,会直接下载该页面
|
|
ctx.type = 'application/json';
|
|
const body = ctx.request.body;
|
|
|
|
const data = await CURDHelper.update({
|
|
db,
|
|
name,
|
|
data: body
|
|
});
|
|
ctx.body = data;
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 新增数据
|
|
*/
|
|
createAdd() {
|
|
const {
|
|
name,
|
|
db,
|
|
router
|
|
} = this;
|
|
router.post(`/api/${name}/add`, async (ctx:any) => {
|
|
// 设置头类型, 如果不设置,会直接下载该页面
|
|
ctx.type = 'application/json';
|
|
const body = ctx.request.body;
|
|
|
|
const data = await CURDHelper.create({
|
|
db,
|
|
name,
|
|
data: body
|
|
});
|
|
ctx.body = data;
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 删除数据
|
|
*/
|
|
createDelete() {
|
|
const {
|
|
name,
|
|
db,
|
|
router
|
|
} = this;
|
|
router.post(`/api/${name}/delete`, async (ctx:any) => {
|
|
// 设置头类型, 如果不设置,会直接下载该页面
|
|
ctx.type = 'application/json';
|
|
const body = ctx.request.body;
|
|
|
|
const data = await CURDHelper.delete({
|
|
db,
|
|
name,
|
|
data: body
|
|
});
|
|
ctx.body = data;
|
|
});
|
|
}
|
|
|
|
creaetBaseRouter() {
|
|
this.createGetList();
|
|
|
|
this.createGetDetail();
|
|
|
|
this.createAdd();
|
|
|
|
this.createUpdate();
|
|
|
|
this.createDelete();
|
|
}
|
|
} |