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;