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