From bd0202e7b5b74b6139302c8b64aafe77e595faee Mon Sep 17 00:00:00 2001 From: melohagan <101575380+melohagan@users.noreply.github.com> Date: Mon, 22 Jan 2024 10:25:21 +0000 Subject: [PATCH] Error deleting datasource on first attempt at deleting (#12819) * Add badge photo to the employee import * Update revisions from relationships when loop deleting tables --- .../server/src/api/controllers/datasource.ts | 22 ++++++++++++++++++- .../src/db/defaultData/employeeImport.ts | 10 +++++++++ .../src/db/linkedRows/LinkController.ts | 2 +- .../types/src/documents/app/table/schema.ts | 1 + 4 files changed, 33 insertions(+), 2 deletions(-) diff --git a/packages/server/src/api/controllers/datasource.ts b/packages/server/src/api/controllers/datasource.ts index a702a8cd84..d70c13f800 100644 --- a/packages/server/src/api/controllers/datasource.ts +++ b/packages/server/src/api/controllers/datasource.ts @@ -9,8 +9,11 @@ import { CreateDatasourceResponse, Datasource, DatasourcePlus, + Document, FetchDatasourceInfoRequest, FetchDatasourceInfoResponse, + FieldType, + RelationshipFieldMetadata, SourceName, UpdateDatasourceResponse, UserCtx, @@ -218,9 +221,26 @@ async function destroyInternalTablesBySourceId(datasourceId: string) { [] ) + function updateRevisions(deletedLinks: RelationshipFieldMetadata[]) { + for (const link of deletedLinks) { + datasourceTableDocs.forEach((doc: Document) => { + if (doc._id === link.tableId) { + doc._rev = link.tableRev + } + }) + } + } + // Destroy the tables. for (const table of datasourceTableDocs) { - await sdk.tables.internal.destroy(table) + const deleted = await sdk.tables.internal.destroy(table) + // Update the revisions of any tables that remain to be deleted + const deletedLinks: RelationshipFieldMetadata[] = Object.values( + deleted.table.schema + ) + .filter(field => field.type === FieldType.LINK) + .map(field => field as RelationshipFieldMetadata) + updateRevisions(deletedLinks) } } diff --git a/packages/server/src/db/defaultData/employeeImport.ts b/packages/server/src/db/defaultData/employeeImport.ts index d2bab601a0..c3c2082285 100644 --- a/packages/server/src/db/defaultData/employeeImport.ts +++ b/packages/server/src/db/defaultData/employeeImport.ts @@ -13,6 +13,7 @@ export const employeeImport = [ type: "row", "Employee Level": ["Senior"], "Start Date": "2015-02-12T12:00:00.000", + "Badge Photo": [], }, { "First Name": "Mandy", @@ -28,6 +29,7 @@ export const employeeImport = [ type: "row", "Employee Level": ["Senior"], "Start Date": "2017-09-10T12:00:00.000", + "Badge Photo": [], }, { "First Name": "Holly", @@ -43,6 +45,7 @@ export const employeeImport = [ type: "row", "Employee Level": ["Senior"], "Start Date": "2022-02-12T12:00:00.000", + "Badge Photo": [], }, { "First Name": "Francis", @@ -58,6 +61,7 @@ export const employeeImport = [ type: "row", "Employee Level": ["Apprentice"], "Start Date": "2021-03-10T12:00:00.000", + "Badge Photo": [], }, { "First Name": "Richard", @@ -73,6 +77,7 @@ export const employeeImport = [ type: "row", "Employee Level": ["Apprentice"], "Start Date": "2020-07-09T12:00:00.000", + "Badge Photo": [], }, { "First Name": "Donald", @@ -88,6 +93,7 @@ export const employeeImport = [ type: "row", "Employee Level": ["Junior"], "Start Date": "2018-04-13T12:00:00.000", + "Badge Photo": [], }, { "First Name": "Maria", @@ -103,6 +109,7 @@ export const employeeImport = [ type: "row", "Employee Level": ["Manager"], "Start Date": "2016-05-22T12:00:00.000", + "Badge Photo": [], }, { "First Name": "Suzy", @@ -118,6 +125,7 @@ export const employeeImport = [ type: "row", "Employee Level": ["Senior", "Manager"], "Start Date": "2019-05-01T12:00:00.000", + "Badge Photo": [], }, { "First Name": "Patrick", @@ -133,6 +141,7 @@ export const employeeImport = [ type: "row", "Employee Level": ["Apprentice"], "Start Date": "2014-08-30T12:00:00.000", + "Badge Photo": [], }, { "First Name": "Brayden", @@ -148,5 +157,6 @@ export const employeeImport = [ type: "row", "Employee Level": ["Contractor"], "Start Date": "2022-11-09T12:00:00.000", + "Badge Photo": [], }, ] diff --git a/packages/server/src/db/linkedRows/LinkController.ts b/packages/server/src/db/linkedRows/LinkController.ts index f52694465f..a7de3ff8d8 100644 --- a/packages/server/src/db/linkedRows/LinkController.ts +++ b/packages/server/src/db/linkedRows/LinkController.ts @@ -440,7 +440,7 @@ class LinkController { if (field.type === FieldTypes.LINK && field.fieldName) { const linkedTable = await this._db.get