From 2f73ff304a04de4a51ff48a331a2a3cc46cdb2dc Mon Sep 17 00:00:00 2001 From: Weixuan Fu Date: Fri, 2 Feb 2024 16:21:41 +0800 Subject: [PATCH] revert loaddbs change --- ui/src/db-tables/TableBase.ts | 17 ++++++++++++----- ui/src/db-tables/WorkspaceDB.ts | 34 ++++++++++++++++++++++++++------- ui/src/types/dbTypes.ts | 4 ++-- 3 files changed, 41 insertions(+), 14 deletions(-) diff --git a/ui/src/db-tables/TableBase.ts b/ui/src/db-tables/TableBase.ts index d92ebb3..1917249 100644 --- a/ui/src/db-tables/TableBase.ts +++ b/ui/src/db-tables/TableBase.ts @@ -5,7 +5,7 @@ import { Table } from "./WorkspaceDB"; import { indexdb } from "./indexdb"; import { v4 } from "uuid"; -export class TableBase { +export class TableBase { public readonly tableName: Table; protected constructor(tableName: Table) { @@ -17,7 +17,13 @@ export class TableBase { objs.forEach((f) => { // only tags table is using name as primary key, we either give up backup that table to diskDB // or add a id as primary key to it - backup[f.id ?? f.name] = f; + if (f.id) { + backup[f.id] = f; + } else if (f.name) { + backup[f.name] = f; + } else { + console.error("TableBaseModel should have id or name"); + } }); saveDB(this.tableName, JSON.stringify(backup)); } @@ -30,6 +36,7 @@ export class TableBase { await this.saveDiskDB(); return newItem; } + public async put(newItem: T): Promise { await indexdb[this.tableName].put(newItem as any); await this.saveDiskDB(); @@ -37,12 +44,12 @@ export class TableBase { } public async listAll(): Promise { const list = await indexdb[this.tableName].toArray(); - return list as T[]; + return list as any[]; } public async batchQuery(ids: string[]): Promise { const list = await indexdb[this.tableName].bulkGet(ids); - return list as T[]; + return list as any[]; } public async getRecords(): Promise> { @@ -66,7 +73,7 @@ export class TableBase { public async get(id: string): Promise { const obj = await indexdb[this.tableName].get(id); - return obj as T; + return obj as any; } public async delete(id: string) { diff --git a/ui/src/db-tables/WorkspaceDB.ts b/ui/src/db-tables/WorkspaceDB.ts index b850a0c..d62137d 100644 --- a/ui/src/db-tables/WorkspaceDB.ts +++ b/ui/src/db-tables/WorkspaceDB.ts @@ -32,16 +32,36 @@ export let mediaTable: MediaTable | null = null; export let workflowVersionsTable: WorkflowVersionsTable | null = null; export async function loadDBs() { - const loadDBs = async () => { - mediaTable = new MediaTable(); - changelogsTable = await ChangelogsTable.load(); - foldersTable = await FoldersTable.load(); - userSettingsTable = await UserSettingsTable.load(); - tagsTable = await TagsTable.load(); + const loadWorkflows = async () => { workflowsTable = await WorkflowsTable.load(); + }; + const loadTags = async () => { + tagsTable = await TagsTable.load(); + }; + const loadUserSettings = async () => { + userSettingsTable = await UserSettingsTable.load(); + }; + const loadFolders = async () => { + foldersTable = await FoldersTable.load(); + }; + const loadChangelogs = async () => { + changelogsTable = await ChangelogsTable.load(); + }; + const loadMedia = async () => { + mediaTable = new MediaTable(); + }; + const loadWorkflowVersions = async () => { workflowVersionsTable = await WorkflowVersionsTable.load(); }; - await loadDBs(); + await Promise.all([ + loadWorkflows(), + loadTags(), + loadUserSettings(), + loadFolders(), + loadChangelogs(), + loadMedia(), + loadWorkflowVersions(), + ]); if (localStorage.getItem("WORKSPACE_INDEXDB_BACKFILL") !== "true") { await backfillIndexdb(); localStorage.setItem("WORKSPACE_INDEXDB_BACKFILL", "true"); diff --git a/ui/src/types/dbTypes.ts b/ui/src/types/dbTypes.ts index a8a0388..20e9c64 100644 --- a/ui/src/types/dbTypes.ts +++ b/ui/src/types/dbTypes.ts @@ -17,8 +17,8 @@ export interface Workflow extends SortableItem { } export interface TableBaseModel { - id: string; - name: string; + id?: string; + name?: string; } export type Tags = {