From 21b9bf36fd00da9e28cc44ed47223a3ce4910a26 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 30 Jul 2024 12:38:47 +0200 Subject: [PATCH] Add api types --- .../server/src/api/controllers/table/index.ts | 22 ++++++++++----- packages/types/src/api/web/app/rows.ts | 2 +- packages/types/src/api/web/app/table.ts | 27 ++++++++++++++++++- 3 files changed, 43 insertions(+), 8 deletions(-) diff --git a/packages/server/src/api/controllers/table/index.ts b/packages/server/src/api/controllers/table/index.ts index 3148e54af7..ba861064bb 100644 --- a/packages/server/src/api/controllers/table/index.ts +++ b/packages/server/src/api/controllers/table/index.ts @@ -14,16 +14,20 @@ import { events, HTTPError } from "@budibase/backend-core" import { BulkImportRequest, BulkImportResponse, + CsvToJsonRequest, + CsvToJsonResponse, FetchTablesResponse, MigrateRequest, MigrateResponse, - Row, SaveTableRequest, SaveTableResponse, Table, TableResponse, TableSourceType, UserCtx, + ValidateNewTableImportRequest, + ValidateTableImportRequest, + ValidateTableImportResponse, } from "@budibase/types" import sdk from "../../../sdk" import { jsonFromCsvString } from "../../../utilities/csv" @@ -144,7 +148,9 @@ export async function bulkImport( ctx.body = { message: `Bulk rows created.` } } -export async function csvToJson(ctx: UserCtx) { +export async function csvToJson( + ctx: UserCtx +) { const { csvString } = ctx.request.body const result = await jsonFromCsvString(csvString) @@ -153,8 +159,10 @@ export async function csvToJson(ctx: UserCtx) { ctx.body = result } -export async function validateNewTableImport(ctx: UserCtx) { - const { rows, schema }: { rows: unknown; schema: unknown } = ctx.request.body +export async function validateNewTableImport( + ctx: UserCtx +) { + const { rows, schema } = ctx.request.body if (isRows(rows) && isSchema(schema)) { ctx.status = 200 @@ -164,8 +172,10 @@ export async function validateNewTableImport(ctx: UserCtx) { } } -export async function validateExistingTableImport(ctx: UserCtx) { - const { rows, tableId }: { rows: Row[]; tableId?: string } = ctx.request.body +export async function validateExistingTableImport( + ctx: UserCtx +) { + const { rows, tableId } = ctx.request.body let schema = null if (tableId) { diff --git a/packages/types/src/api/web/app/rows.ts b/packages/types/src/api/web/app/rows.ts index c120af0628..ce6f6f672d 100644 --- a/packages/types/src/api/web/app/rows.ts +++ b/packages/types/src/api/web/app/rows.ts @@ -37,7 +37,7 @@ export interface PaginatedSearchRowResponse PaginationResponse {} export interface ExportRowsRequest { - rows: string[] + rows?: string[] columns?: string[] query?: SearchFilters sort?: string diff --git a/packages/types/src/api/web/app/table.ts b/packages/types/src/api/web/app/table.ts index fc382643f1..bb9329f6c1 100644 --- a/packages/types/src/api/web/app/table.ts +++ b/packages/types/src/api/web/app/table.ts @@ -1,4 +1,4 @@ -import { Row, Table, TableRequest, View } from "../../../documents" +import { Row, Table, TableRequest, TableSchema, View } from "../../../documents" import { ViewV2Enriched } from "../../../sdk" export type TableViewsResponse = { [key: string]: View | ViewV2Enriched } @@ -32,3 +32,28 @@ export interface MigrateRequest { export interface MigrateResponse { message: string } + +export interface ValidateNewTableImportRequest { + rows: Row[] + schema: TableSchema +} + +export interface ValidateTableImportRequest { + tableId?: string + rows: Row[] +} + +export interface ValidateTableImportResponse { + schemaValidation: { + [field: string]: boolean + } + allValid: boolean + invalidColumns: Array + errors: Record +} + +export interface CsvToJsonRequest { + csvString: string +} + +export type CsvToJsonResponse = any[]