forked from tsai/budibase
11 changed files with 208 additions and 90 deletions
@ -0,0 +1,33 @@ |
|||||
|
const CouchDB = require("../../db/client") |
||||
|
const { generatePageID } = require("../../db/utils") |
||||
|
const { buildPage } = require("../../utilities/builder") |
||||
|
|
||||
|
exports.save = async function(ctx) { |
||||
|
const db = new CouchDB(ctx.user.appId) |
||||
|
|
||||
|
const appPackage = ctx.request.body |
||||
|
|
||||
|
// TODO: rename to something more descriptive
|
||||
|
await buildPage( |
||||
|
ctx.config, |
||||
|
ctx.user.appId, |
||||
|
ctx.params.pageName, |
||||
|
ctx.request.body |
||||
|
) |
||||
|
|
||||
|
// write the page data to couchDB
|
||||
|
// if (pkg.page._css) {
|
||||
|
// delete pkg.page._css
|
||||
|
// }
|
||||
|
|
||||
|
// if (pkg.page.name) {
|
||||
|
// delete pkg.page.name
|
||||
|
// }
|
||||
|
|
||||
|
// if (pkg.page._screens) {
|
||||
|
// delete pkg.page._screens
|
||||
|
// }
|
||||
|
appPackage.page._id = appPackage.page._id || generatePageID() |
||||
|
await db.put(appPackage.page) |
||||
|
ctx.response.status = 200 |
||||
|
} |
||||
@ -0,0 +1,35 @@ |
|||||
|
const Router = require("@koa/router") |
||||
|
const joiValidator = require("../../middleware/joi-validator") |
||||
|
const Joi = require("joi") |
||||
|
const authorized = require("../../middleware/authorized") |
||||
|
const { BUILDER } = require("../../utilities/accessLevels") |
||||
|
const controller = require("../controllers/page") |
||||
|
|
||||
|
const router = Router() |
||||
|
|
||||
|
function generateSaveValidation() { |
||||
|
// prettier-ignore
|
||||
|
return joiValidator.body(Joi.object({ |
||||
|
_css: Joi.string().allow(""), |
||||
|
name: Joi.string().required(), |
||||
|
route: Joi.string().required(), |
||||
|
props: Joi.object({ |
||||
|
_id: Joi.string().required(), |
||||
|
_component: Joi.string().required(), |
||||
|
_children: Joi.array().required(), |
||||
|
_instanceName: Joi.string().required(), |
||||
|
_styles: Joi.object().required(), |
||||
|
type: Joi.string().optional(), |
||||
|
table: Joi.string().optional(), |
||||
|
}).required().unknown(true), |
||||
|
}).unknown(true)) |
||||
|
} |
||||
|
|
||||
|
router.post( |
||||
|
"/api/pages/:pageName", |
||||
|
authorized(BUILDER), |
||||
|
generateSaveValidation(), |
||||
|
controller.save |
||||
|
) |
||||
|
|
||||
|
module.exports = router |
||||
Loading…
Reference in new issue