budibase/packages/server/src/api/controllers/public/rows.js

50 lines
1.2 KiB
JavaScript
Raw Normal View History

const rowController = require("../row")
const { addRev } = require("./utils")
// makes sure that the user doesn't need to pass in the type, tableId or _id params for
// the call to be correct
function fixRow(row, params) {
if (!params || !row) {
return row
}
if (params.rowId) {
row._id = params.rowId
}
if (params.tableId) {
row.tableId = params.tableId
}
if (!row.type) {
row.type = "row"
}
return row
}
exports.search = async ctx => {
await rowController.search(ctx)
2022-02-17 19:58:09 +01:00
}
exports.create = async ctx => {
ctx.request.body = fixRow(ctx.request.body, ctx.params)
await rowController.save(ctx)
ctx.body = { row: ctx.body }
2022-02-17 19:58:09 +01:00
}
exports.read = async ctx => {
await rowController.find(ctx)
ctx.body = { row: ctx.body }
}
2022-02-17 19:58:09 +01:00
exports.update = async ctx => {
2022-02-23 23:13:16 +01:00
ctx.request.body = await addRev(fixRow(ctx.request.body, ctx.params.tableId))
ctx.body = { row: ctx.body }
2022-02-17 19:58:09 +01:00
}
exports.delete = async ctx => {
// set the body as expected, with the _id and _rev fields
2022-02-23 23:13:16 +01:00
ctx.request.body = await addRev(fixRow({}, ctx.params.tableId))
await rowController.destroy(ctx)
// destroy controller doesn't currently return the row as the body, need to adjust this
// in the public API to be correct
ctx.body = { row: ctx.row }
}