diff --git a/src/app/service/api.service.ts b/src/app/service/api.service.ts index 4067e93..bcf0464 100644 --- a/src/app/service/api.service.ts +++ b/src/app/service/api.service.ts @@ -441,8 +441,8 @@ export class ApiService { for ( const rec of data.databaseEntries ) { const entry = new DatabaseEntry( rec.DatabaseId, - JSON.stringify(rec.RowData || {}), - rec.UUID + rec.UUID, + JSON.stringify(rec.RowData || {}) ); await entry.save(); @@ -812,6 +812,9 @@ export class ApiService { this.get(`/db/${PageId}/${NodeId}/get/${DatabaseId}/data`).subscribe({ next: async result => { + // Resolve first so the GUI doesn't need to wait for the DB to sync to render + res(result.data); + for ( const row of result.data ) { const existingDatabaseEntry = await this.db.databaseEntries.where({ DatabaseId, UUID: row.UUID, @@ -823,15 +826,13 @@ export class ApiService { } else { const newDatabaseEntry = new DatabaseEntry( row.DatabaseId, - JSON.stringify(row.RowData), - row.UUID + row.UUID, + JSON.stringify(row.RowData) ); await newDatabaseEntry.save(); } } - - return res(result.data); }, error: rej, }); @@ -849,6 +850,9 @@ export class ApiService { // If online, fetch the columns and sync the local database this.get(`/db/${PageId}/${NodeId}/get/${DatabaseId}/columns`).subscribe({ next: async results => { + // Resolve this first, so the UI doesn't need to wait for the db sync to render + res(results.data); + for ( const def of results.data ) { const existingColumnDef = await this.db.databaseColumns.where({ DatabaseId, UUID: def.UUID, @@ -870,8 +874,6 @@ export class ApiService { await newColumnDef.save(); } } - - return res(results.data); }, error: rej, }); @@ -968,8 +970,8 @@ export class ApiService { for ( const row of rowData ) { const newDatabaseEntry = new DatabaseEntry( DatabaseId, - JSON.stringify(row), DatabaseEntry.getUUID(), + JSON.stringify(row), true ); @@ -987,8 +989,8 @@ export class ApiService { for ( const row of result.data ) { const newDatabaseEntry = new DatabaseEntry( row.DatabaseId, - JSON.stringify(row.RowData), - row.UUID + row.UUID, + JSON.stringify(row.RowData) ); await newDatabaseEntry.save(); diff --git a/src/app/service/db/DatabaseColumn.ts b/src/app/service/db/DatabaseColumn.ts index 31bd002..388996e 100644 --- a/src/app/service/db/DatabaseColumn.ts +++ b/src/app/service/db/DatabaseColumn.ts @@ -30,7 +30,7 @@ export class DatabaseColumn extends Model implements IDatabaseC } public static getSchema() { - return '++id, headerName, field, DatabaseId, UUID, Type, additionalData, needsServerUpdate, deleted, offlineUpdatedAt'; + return '++id, headerName, field, [DatabaseId+UUID], Type, additionalData, needsServerUpdate, deleted, offlineUpdatedAt'; } constructor( diff --git a/src/app/service/db/DatabaseEntry.ts b/src/app/service/db/DatabaseEntry.ts index f5878bb..76ec1fa 100644 --- a/src/app/service/db/DatabaseEntry.ts +++ b/src/app/service/db/DatabaseEntry.ts @@ -24,13 +24,13 @@ export class DatabaseEntry extends Model implements IDatabaseEnt } public static getSchema() { - return '++id, DatabaseId, RowDataJSON, UUID, needsServerUpdate, deleted, offlineUpdatedAt'; + return '++id, [DatabaseId+UUID], RowDataJSON, needsServerUpdate, deleted, offlineUpdatedAt'; } constructor( DatabaseId: string, - RowDataJSON: string, UUID: string, + RowDataJSON: string, needsServerUpdate?: boolean, deleted?: boolean, offlineUpdatedAt?: string, diff --git a/src/app/service/db/database.service.ts b/src/app/service/db/database.service.ts index 1daabe4..9f174a9 100644 --- a/src/app/service/db/database.service.ts +++ b/src/app/service/db/database.service.ts @@ -63,7 +63,7 @@ export class DatabaseService extends Dexie { schema[ModelClass.getTableName()] = ModelClass.getSchema(); } - await this.version(15).stores(schema); + await this.version(17).stores(schema); await this.open(); this.migrations = this.table('migrations');