diff --git a/packages/backend-core/src/sql/designDoc.ts b/packages/backend-core/src/sql/designDoc.ts new file mode 100644 index 0000000000..dc334496a0 --- /dev/null +++ b/packages/backend-core/src/sql/designDoc.ts @@ -0,0 +1,17 @@ +import { PreSaveSQLiteDefinition } from "@budibase/types" +import { SQLITE_DESIGN_DOC_ID } from "../constants" + +// the table id property defines which property in the document +// to use when splitting the documents into different sqlite tables +export function base(tableIdProp: string): PreSaveSQLiteDefinition { + return { + _id: SQLITE_DESIGN_DOC_ID, + language: "sqlite", + sql: { + tables: {}, + options: { + table_name: tableIdProp, + }, + }, + } +} diff --git a/packages/backend-core/src/sql/index.ts b/packages/backend-core/src/sql/index.ts index 058b54e159..16b718d2e6 100644 --- a/packages/backend-core/src/sql/index.ts +++ b/packages/backend-core/src/sql/index.ts @@ -2,3 +2,4 @@ export * as utils from "./utils" export { default as Sql } from "./sql" export { default as SqlTable } from "./sqlTable" +export * as designDoc from "./designDoc" diff --git a/packages/server/src/sdk/app/tables/internal/sqs.ts b/packages/server/src/sdk/app/tables/internal/sqs.ts index 5ecfd9692e..a6aa778f02 100644 --- a/packages/server/src/sdk/app/tables/internal/sqs.ts +++ b/packages/server/src/sdk/app/tables/internal/sqs.ts @@ -1,33 +1,20 @@ -import { context, SQLITE_DESIGN_DOC_ID } from "@budibase/backend-core" +import { context, sql, SQLITE_DESIGN_DOC_ID } from "@budibase/backend-core" import { FieldType, RelationshipFieldMetadata, SQLiteDefinition, + PreSaveSQLiteDefinition, SQLiteTable, SQLiteTables, SQLiteType, Table, } from "@budibase/types" -import { cloneDeep } from "lodash" import tablesSdk from "../" import { CONSTANT_INTERNAL_ROW_COLS, generateJunctionTableID, } from "../../../../db/utils" -type PreSaveSQLiteDefinition = Omit - -const BASIC_SQLITE_DOC: PreSaveSQLiteDefinition = { - _id: SQLITE_DESIGN_DOC_ID, - language: "sqlite", - sql: { - tables: {}, - options: { - table_name: "tableId", - }, - }, -} - const FieldTypeMap: Record = { [FieldType.BOOLEAN]: SQLiteType.NUMERIC, [FieldType.DATETIME]: SQLiteType.TEXT, @@ -107,7 +94,7 @@ function mapTable(table: Table): SQLiteTables { // nothing exists, need to iterate though existing tables async function buildBaseDefinition(): Promise { const tables = await tablesSdk.getAllInternalTables() - const definition = cloneDeep(BASIC_SQLITE_DOC) + const definition = sql.designDoc.base("tableId") for (let table of tables) { definition.sql.tables = { ...definition.sql.tables, diff --git a/packages/types/src/documents/app/sqlite.ts b/packages/types/src/documents/app/sqlite.ts index c380a2d6b4..5636fef15b 100644 --- a/packages/types/src/documents/app/sqlite.ts +++ b/packages/types/src/documents/app/sqlite.ts @@ -29,3 +29,5 @@ export interface SQLiteDefinition { } } } + +export type PreSaveSQLiteDefinition = Omit