Implement create
This commit is contained in:
parent
063eeeb6df
commit
7dbfcc398e
|
@ -25,12 +25,18 @@ export async function find(ctx: Ctx<void, RowActionsResponse>) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function create(ctx: Ctx<CreateRowActionRequest, void>) {
|
export async function create(
|
||||||
|
ctx: Ctx<CreateRowActionRequest, RowActionsResponse>
|
||||||
|
) {
|
||||||
const table = await getTable(ctx)
|
const table = await getTable(ctx)
|
||||||
|
|
||||||
// TODO
|
const created = await sdk.rowActions.create(table._id!, ctx.request.body)
|
||||||
|
|
||||||
ctx.status = 204
|
ctx.body = {
|
||||||
|
tableId: table._id!,
|
||||||
|
...created,
|
||||||
|
}
|
||||||
|
ctx.status = 201
|
||||||
}
|
}
|
||||||
|
|
||||||
export function update() {
|
export function update() {
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
import _ from "lodash"
|
import _ from "lodash"
|
||||||
|
import tk from "timekeeper"
|
||||||
|
|
||||||
import { CreateRowActionRequest, Table } from "@budibase/types"
|
import { CreateRowActionRequest, Table } from "@budibase/types"
|
||||||
import * as setup from "./utilities"
|
import * as setup from "./utilities"
|
||||||
import { generator } from "@budibase/backend-core/tests"
|
import { generator } from "@budibase/backend-core/tests"
|
||||||
|
@ -9,6 +11,7 @@ describe("/rowsActions", () => {
|
||||||
let table: Table
|
let table: Table
|
||||||
|
|
||||||
beforeAll(async () => {
|
beforeAll(async () => {
|
||||||
|
tk.freeze(new Date())
|
||||||
await config.init()
|
await config.init()
|
||||||
|
|
||||||
table = await config.api.table.save(setup.structures.basicTable())
|
table = await config.api.table.save(setup.structures.basicTable())
|
||||||
|
@ -62,14 +65,21 @@ describe("/rowsActions", () => {
|
||||||
describe("create", () => {
|
describe("create", () => {
|
||||||
unauthorisedTests()
|
unauthorisedTests()
|
||||||
|
|
||||||
it("accepts creating new row actions", async () => {
|
it("accepts creating new row actions for", async () => {
|
||||||
const rowAction = createRowActionRequest()
|
const rowAction = createRowActionRequest()
|
||||||
|
|
||||||
const res = await config.api.rowAction.save(table._id!, rowAction, {
|
const res = await config.api.rowAction.save(table._id!, rowAction, {
|
||||||
status: 204,
|
status: 201,
|
||||||
})
|
})
|
||||||
|
|
||||||
expect(res).toEqual({})
|
expect(res).toEqual({
|
||||||
|
_id: `${table._id}_row_actions`,
|
||||||
|
_rev: expect.stringMatching(/^1-\w+/),
|
||||||
|
actions: [{ name: rowAction.name }],
|
||||||
|
tableId: table._id,
|
||||||
|
createdAt: new Date().toISOString(),
|
||||||
|
updatedAt: new Date().toISOString(),
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
it("rejects with bad request when creating with no name", async () => {
|
it("rejects with bad request when creating with no name", async () => {
|
||||||
|
|
|
@ -348,3 +348,11 @@ export function isRelationshipColumn(
|
||||||
): column is RelationshipFieldMetadata {
|
): column is RelationshipFieldMetadata {
|
||||||
return column.type === FieldType.LINK
|
return column.type === FieldType.LINK
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generates a new row actions ID.
|
||||||
|
* @returns The new row actions ID which the row actions doc can be stored under.
|
||||||
|
*/
|
||||||
|
export function generateRowActionsID(tableId: string) {
|
||||||
|
return `${tableId}${SEPARATOR}row_actions`
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
import { context } from "@budibase/backend-core"
|
||||||
|
|
||||||
|
import { generateRowActionsID } from "../../db/utils"
|
||||||
|
import { TableRowActions } from "@budibase/types"
|
||||||
|
|
||||||
|
export async function create(tableId: string, rowAction: { name: string }) {
|
||||||
|
const db = context.getAppDB()
|
||||||
|
const rowActionsId = generateRowActionsID(tableId)
|
||||||
|
let doc: TableRowActions
|
||||||
|
try {
|
||||||
|
doc = await db.get<TableRowActions>(rowActionsId)
|
||||||
|
} catch (e: any) {
|
||||||
|
if (e.status !== 404) {
|
||||||
|
throw e
|
||||||
|
}
|
||||||
|
|
||||||
|
doc = { _id: rowActionsId, actions: [] }
|
||||||
|
}
|
||||||
|
|
||||||
|
doc.actions.push(rowAction)
|
||||||
|
await db.put(doc)
|
||||||
|
|
||||||
|
return await get(tableId)
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function get(tableId: string) {
|
||||||
|
const db = context.getAppDB()
|
||||||
|
const rowActionsId = generateRowActionsID(tableId)
|
||||||
|
return await db.get<TableRowActions>(rowActionsId)
|
||||||
|
}
|
|
@ -10,6 +10,7 @@ import { default as users } from "./users"
|
||||||
import { default as plugins } from "./plugins"
|
import { default as plugins } from "./plugins"
|
||||||
import * as views from "./app/views"
|
import * as views from "./app/views"
|
||||||
import * as permissions from "./app/permissions"
|
import * as permissions from "./app/permissions"
|
||||||
|
import * as rowActions from "./app/rowActions"
|
||||||
|
|
||||||
const sdk = {
|
const sdk = {
|
||||||
backups,
|
backups,
|
||||||
|
@ -24,6 +25,7 @@ const sdk = {
|
||||||
views,
|
views,
|
||||||
permissions,
|
permissions,
|
||||||
links,
|
links,
|
||||||
|
rowActions,
|
||||||
}
|
}
|
||||||
|
|
||||||
// default export for TS
|
// default export for TS
|
||||||
|
|
|
@ -2,11 +2,9 @@ export interface CreateRowActionRequest {
|
||||||
name: string
|
name: string
|
||||||
}
|
}
|
||||||
|
|
||||||
interface RowAction {
|
|
||||||
name: string
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface RowActionsResponse {
|
export interface RowActionsResponse {
|
||||||
tableId: string
|
tableId: string
|
||||||
actions: RowAction[]
|
actions: {
|
||||||
|
name: string
|
||||||
|
}[]
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,3 +16,4 @@ export * from "./links"
|
||||||
export * from "./component"
|
export * from "./component"
|
||||||
export * from "./sqlite"
|
export * from "./sqlite"
|
||||||
export * from "./snippet"
|
export * from "./snippet"
|
||||||
|
export * from "./rowActions"
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
import { Document } from "../document"
|
||||||
|
|
||||||
|
export interface TableRowActions extends Document {
|
||||||
|
_id: string
|
||||||
|
actions: {
|
||||||
|
name: string
|
||||||
|
}[]
|
||||||
|
}
|
Loading…
Reference in New Issue