119 lines
3.5 KiB
JavaScript
119 lines
3.5 KiB
JavaScript
import cuid from "cuid";
|
|
// import getDb from "../dbServer.mjs";
|
|
import { ConfigHelper } from "funjia-server";
|
|
import _ from "lodash";
|
|
const headers = {
|
|
'content-type': 'application/json'
|
|
}
|
|
const getDynamic = (router) => {
|
|
const url = ConfigHelper.config.server.url + "/api";
|
|
router.post('/api/dynamic/list/:tableName', async (ctx) => {
|
|
// 设置头类型, 如果不设置,会直接下载该页面
|
|
ctx.type = 'application/json';
|
|
const params = ctx.params,
|
|
tableName = params.tableName;
|
|
const res = await fetch(`${url}/${_.kebabCase(tableName)}s`, {
|
|
headers,
|
|
// body:JSON.parse({})
|
|
})
|
|
const data = await res.json();
|
|
// console.log(data);
|
|
ctx.body = {
|
|
code: 0,
|
|
data: data.data.map(item => {
|
|
return { ...item, id: item.documentId }
|
|
}),
|
|
total: data.meta.pagination.total
|
|
};
|
|
});
|
|
router.get('/api/dynamic/:tableName', async (ctx) => {
|
|
// 设置头类型, 如果不设置,会直接下载该页面
|
|
ctx.type = 'application/json';
|
|
const params = ctx.params,
|
|
tableName = params.tableName,
|
|
query = ctx.request.query,
|
|
id = query.id;
|
|
const res = await fetch(`${url}/${_.kebabCase(tableName)}s/` + id, {
|
|
headers,
|
|
// body:JSON.parse({})
|
|
})
|
|
const data = await res.json();
|
|
data.data.id = data.data.documentId;
|
|
ctx.body = {
|
|
code: 0,
|
|
data: data.data
|
|
};
|
|
});
|
|
router.post('/api/dynamic/add/:tableName', async (ctx) => {
|
|
ctx.type = 'application/json';
|
|
const tableName = ctx.params.tableName;
|
|
const body = ctx.request.body;
|
|
delete body.id;
|
|
delete body.documentId;
|
|
|
|
const res = await fetch(`${url}/${_.kebabCase(tableName)}s`, {
|
|
method: "post",
|
|
headers,
|
|
body: JSON.stringify({ data: ctx.request.body })
|
|
});
|
|
|
|
const data = await res.json();
|
|
// console.log(data);
|
|
|
|
ctx.body = {
|
|
code: 0,
|
|
};
|
|
});
|
|
router.post('/api/dynamic/upd/:tableName', async (ctx) => {
|
|
ctx.type = 'application/json';
|
|
const tableName = ctx.params.tableName;
|
|
const body = ctx.request.body;
|
|
const documentId = body.id;// body.documentId;
|
|
delete body.id;
|
|
delete body.documentId;
|
|
// delete body.jsonValue;
|
|
|
|
const putData = JSON.stringify({ data: body });
|
|
// console.log(putData, documentId, tableName,`${url}/${_.kebabCase(tableName)}s/`);
|
|
const res = await fetch(`${url}/${_.kebabCase(tableName)}s/` + documentId, {
|
|
method: "PUT",
|
|
headers,
|
|
body: putData
|
|
})
|
|
|
|
await res.text();
|
|
// const data = await res.json();
|
|
|
|
// console.log(data);
|
|
ctx.body = {
|
|
code: 0,
|
|
};
|
|
});
|
|
router.post('/api/dynamic/delete/:tableName', async (ctx) => {
|
|
ctx.type = 'application/json';
|
|
const tableName = ctx.params.tableName;
|
|
const data = ctx.request.body;
|
|
const ids = data.ids;
|
|
|
|
for (const id of ids) {
|
|
await deleteData(tableName, id);
|
|
}
|
|
|
|
ids.forEach((id) => {
|
|
deleteData(tableName, id);
|
|
})
|
|
|
|
ctx.body = {
|
|
code: 0,
|
|
};
|
|
});
|
|
|
|
|
|
}
|
|
|
|
const deleteData = async (tableName, id) => {
|
|
return fetch(`${url}/${_.kebabCase(tableName)}s/${id}`, {
|
|
method: "delete"
|
|
})
|
|
}
|
|
export default getDynamic; |