Implement update
This commit is contained in:
parent
17fc605e4f
commit
d03a0ebb68
|
@ -3,6 +3,7 @@ import {
|
||||||
Ctx,
|
Ctx,
|
||||||
RowActionResponse,
|
RowActionResponse,
|
||||||
RowActionsResponse,
|
RowActionsResponse,
|
||||||
|
UpdateRowActionRequest,
|
||||||
} from "@budibase/types"
|
} from "@budibase/types"
|
||||||
import sdk from "../../../sdk"
|
import sdk from "../../../sdk"
|
||||||
|
|
||||||
|
@ -38,21 +39,35 @@ export async function create(
|
||||||
) {
|
) {
|
||||||
const table = await getTable(ctx)
|
const table = await getTable(ctx)
|
||||||
|
|
||||||
const { id, ...createdAction } = await sdk.rowActions.create(
|
const createdAction = await sdk.rowActions.create(
|
||||||
table._id!,
|
table._id!,
|
||||||
ctx.request.body
|
ctx.request.body
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx.body = {
|
ctx.body = {
|
||||||
tableId: table._id!,
|
tableId: table._id!,
|
||||||
actionId: id,
|
|
||||||
...createdAction,
|
...createdAction,
|
||||||
}
|
}
|
||||||
ctx.status = 201
|
ctx.status = 201
|
||||||
}
|
}
|
||||||
|
|
||||||
export function update() {
|
export async function update(
|
||||||
throw new Error("Function not implemented.")
|
ctx: Ctx<UpdateRowActionRequest, RowActionResponse>
|
||||||
|
) {
|
||||||
|
const table = await getTable(ctx)
|
||||||
|
const { actionId } = ctx.params
|
||||||
|
|
||||||
|
const actions = await sdk.rowActions.update(
|
||||||
|
table._id!,
|
||||||
|
actionId,
|
||||||
|
ctx.request.body
|
||||||
|
)
|
||||||
|
|
||||||
|
ctx.body = {
|
||||||
|
tableId: table._id!,
|
||||||
|
|
||||||
|
...actions,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function remove() {
|
export function remove() {
|
||||||
|
|
|
@ -184,4 +184,45 @@ describe("/rowsActions", () => {
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe("update", () => {
|
||||||
|
unauthorisedTests()
|
||||||
|
|
||||||
|
it("can update existing actions", async () => {
|
||||||
|
for (const rowAction of createRowActionRequests(3)) {
|
||||||
|
await createRowAction(tableId, rowAction)
|
||||||
|
}
|
||||||
|
|
||||||
|
const persisted = await config.api.rowAction.find(tableId)
|
||||||
|
|
||||||
|
const [actionId, actionData] = _.sample(
|
||||||
|
Object.entries(persisted.actions)
|
||||||
|
)!
|
||||||
|
|
||||||
|
const updatedName = generator.word()
|
||||||
|
|
||||||
|
const res = await config.api.rowAction.update(tableId, actionId, {
|
||||||
|
...actionData,
|
||||||
|
name: updatedName,
|
||||||
|
})
|
||||||
|
|
||||||
|
expect(res).toEqual({
|
||||||
|
tableId,
|
||||||
|
actionId,
|
||||||
|
...actionData,
|
||||||
|
name: updatedName,
|
||||||
|
})
|
||||||
|
|
||||||
|
expect(await config.api.rowAction.find(tableId)).toEqual(
|
||||||
|
expect.objectContaining({
|
||||||
|
actions: expect.objectContaining({
|
||||||
|
[actionId]: {
|
||||||
|
...actionData,
|
||||||
|
name: updatedName,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
})
|
||||||
|
)
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { context, utils } from "@budibase/backend-core"
|
import { context, HTTPError, utils } from "@budibase/backend-core"
|
||||||
|
|
||||||
import { generateRowActionsID } from "../../db/utils"
|
import { generateRowActionsID } from "../../db/utils"
|
||||||
import {
|
import {
|
||||||
|
@ -26,7 +26,7 @@ export async function create(tableId: string, rowAction: { name: string }) {
|
||||||
await db.put(doc)
|
await db.put(doc)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: newId,
|
actionId: newId,
|
||||||
...rowAction,
|
...rowAction,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -43,3 +43,26 @@ export async function docExists(tableId: string) {
|
||||||
const result = await db.exists(rowActionsId)
|
const result = await db.exists(rowActionsId)
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
export async function update(
|
||||||
|
tableId: string,
|
||||||
|
rowActionId: string,
|
||||||
|
rowAction: { name: string }
|
||||||
|
) {
|
||||||
|
const actionsDoc = await get(tableId)
|
||||||
|
|
||||||
|
if (!actionsDoc.actions[rowActionId]) {
|
||||||
|
throw new HTTPError(
|
||||||
|
`Row action '${rowActionId}' not found in '${tableId}'`,
|
||||||
|
400
|
||||||
|
)
|
||||||
|
}
|
||||||
|
actionsDoc.actions[rowActionId] = rowAction
|
||||||
|
|
||||||
|
const db = context.getAppDB()
|
||||||
|
await db.put(actionsDoc)
|
||||||
|
|
||||||
|
return {
|
||||||
|
actionId: rowActionId,
|
||||||
|
...rowAction,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -35,4 +35,21 @@ export class RowActionAPI extends TestAPI {
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
update = async (
|
||||||
|
tableId: string,
|
||||||
|
rowActionId: string,
|
||||||
|
rowAction: CreateRowActionRequest,
|
||||||
|
expectations?: Expectations,
|
||||||
|
config?: { publicUser?: boolean }
|
||||||
|
) => {
|
||||||
|
return await this._put<RowActionResponse>(
|
||||||
|
`/api/tables/${tableId}/actions/${rowActionId}`,
|
||||||
|
{
|
||||||
|
body: rowAction,
|
||||||
|
expectations,
|
||||||
|
...config,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,3 +13,8 @@ export interface RowActionsResponse {
|
||||||
interface RowActionData {
|
interface RowActionData {
|
||||||
name: string
|
name: string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface UpdateRowActionRequest {
|
||||||
|
id: string
|
||||||
|
name: string
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue