73 lines
1.7 KiB
TypeScript
73 lines
1.7 KiB
TypeScript
import { generateTableID } from "../../../db/utils"
|
|
import { handleDataImport } from "./utils"
|
|
import {
|
|
BulkImportRequest,
|
|
BulkImportResponse,
|
|
RenameColumn,
|
|
SaveTableRequest,
|
|
SaveTableResponse,
|
|
Table,
|
|
TableSourceType,
|
|
UserCtx,
|
|
} from "@budibase/types"
|
|
import sdk from "../../../sdk"
|
|
|
|
export async function save(ctx: UserCtx<SaveTableRequest, SaveTableResponse>) {
|
|
const { rows, ...rest } = ctx.request.body
|
|
let tableToSave: Table & {
|
|
_rename?: RenameColumn
|
|
} = {
|
|
_id: generateTableID(),
|
|
...rest,
|
|
type: "table",
|
|
sourceType: TableSourceType.INTERNAL,
|
|
views: {},
|
|
}
|
|
const renaming = tableToSave._rename
|
|
delete tableToSave._rename
|
|
|
|
try {
|
|
const { table } = await sdk.tables.internal.save(tableToSave, {
|
|
user: ctx.user,
|
|
rowsToImport: rows,
|
|
tableId: ctx.request.body._id,
|
|
renaming: renaming,
|
|
})
|
|
|
|
return table
|
|
} catch (err: any) {
|
|
if (err instanceof Error) {
|
|
ctx.throw(400, err.message)
|
|
} else {
|
|
ctx.throw(err.status || 500, err.message || err)
|
|
}
|
|
}
|
|
}
|
|
|
|
export async function destroy(ctx: UserCtx) {
|
|
const tableToDelete = await sdk.tables.getTable(ctx.params.tableId)
|
|
try {
|
|
const { table } = await sdk.tables.internal.destroy(tableToDelete)
|
|
return table
|
|
} catch (err: any) {
|
|
if (err instanceof Error) {
|
|
ctx.throw(400, err.message)
|
|
} else {
|
|
ctx.throw(err.status || 500, err.message || err)
|
|
}
|
|
}
|
|
}
|
|
|
|
export async function bulkImport(
|
|
ctx: UserCtx<BulkImportRequest, BulkImportResponse>
|
|
) {
|
|
const table = await sdk.tables.getTable(ctx.params.tableId)
|
|
const { rows, identifierFields } = ctx.request.body
|
|
await handleDataImport(table, {
|
|
importRows: rows,
|
|
identifierFields,
|
|
user: ctx.user,
|
|
})
|
|
return table
|
|
}
|