From 0c36bd2ac87862aeea05adf2d526b40f52c42393 Mon Sep 17 00:00:00 2001 From: Nick Date: Tue, 11 Jul 2023 15:20:26 -0400 Subject: [PATCH 1/2] Update to Recursive Type reference --- src/public/types/table-hooks.d.ts | 4 ++-- src/public/types/table.d.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/public/types/table-hooks.d.ts b/src/public/types/table-hooks.d.ts index 9e962ec67..23b6b281c 100644 --- a/src/public/types/table-hooks.d.ts +++ b/src/public/types/table-hooks.d.ts @@ -18,9 +18,9 @@ interface DeletingHookContext { onerror?: (err: any) => void; } -interface TableHooks extends DexieEventSet { +interface TableHooks extends DexieEventSet { (eventName: 'creating', subscriber: (this: CreatingHookContext, primKey:TKey, obj:T, transaction:Transaction) => void | undefined | TKey): void; - (eventName: 'reading', subscriber: (obj:T) => T | any): void; + (eventName: 'reading', subscriber: (obj:TInsertType) => T | any): void; (eventName: 'updating', subscriber: (this: UpdatingHookContext, modifications:Object, primKey:TKey, obj:T, transaction:Transaction) => any): void; (eventName: 'deleting', subscriber: (this: DeletingHookContext, primKey:TKey, obj:T, transaction:Transaction) => any): void; creating: DexieEvent; diff --git a/src/public/types/table.d.ts b/src/public/types/table.d.ts index 88c6a5f6c..a727bab47 100644 --- a/src/public/types/table.d.ts +++ b/src/public/types/table.d.ts @@ -14,7 +14,7 @@ export interface Table { db: Dexie; name: string; schema: TableSchema; - hook: TableHooks; + hook: TableHooks; core: DBCoreTable; get(key: TKey): PromiseExtended; @@ -45,7 +45,7 @@ export interface Table { add(item: TInsertType, key?: TKey): PromiseExtended; update( key: TKey | T, - changes: UpdateSpec | ((obj: T, ctx:{value: any, primKey: IndexableType}) => void | boolean)): PromiseExtended; + changes: UpdateSpec | ((obj: T, ctx:{value: any, primKey: IndexableType}) => void | boolean)): PromiseExtended; put(item: TInsertType, key?: TKey): PromiseExtended; delete(key: TKey): PromiseExtended; clear(): PromiseExtended; From ec840ba4824be45364b560b64b39cd407924e3a6 Mon Sep 17 00:00:00 2001 From: Nick Date: Mon, 5 Feb 2024 11:09:53 -0500 Subject: [PATCH 2/2] Ability to SkipTables --- addons/dexie-export-import/src/export.ts | 9 ++++++--- addons/dexie-export-import/src/import.ts | 4 ++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/addons/dexie-export-import/src/export.ts b/addons/dexie-export-import/src/export.ts index de89bac81..53e41f867 100644 --- a/addons/dexie-export-import/src/export.ts +++ b/addons/dexie-export-import/src/export.ts @@ -5,6 +5,7 @@ import { DexieExportedTable, DexieExportJsonStructure } from './json-structure'; import { TSON } from './tson'; export interface ExportOptions { + skipTables?: string[], noTransaction?: boolean; numRowsPerChunk?: number; prettyJson?: boolean; @@ -25,8 +26,10 @@ const DEFAULT_ROWS_PER_CHUNK = 2000; export async function exportDB(db: Dexie, options?: ExportOptions): Promise { options = options || {}; + const skipTables = options.skipTables? options.skipTables: [] + const targetTables = db.tables.filter((x)=> !skipTables.includes(x.name)) const slices: (string | Blob)[] = []; - const tables = db.tables.map(table => ({ + const tables = targetTables.map(table => ({ name: table.name, schema: getSchemaString(table), rowCount: 0 @@ -49,7 +52,7 @@ export async function exportDB(db: Dexie, options?: ExportOptions): Promise table.count())); + const tablesRowCounts = await Promise.all(targetTables.map(table => table.count())); tablesRowCounts.forEach((rowCount, i) => tables[i].rowCount = rowCount); progress.totalRows = tablesRowCounts.reduce((p,c)=>p+c); diff --git a/addons/dexie-export-import/src/import.ts b/addons/dexie-export-import/src/import.ts index 385e6b074..2fae19a2d 100644 --- a/addons/dexie-export-import/src/import.ts +++ b/addons/dexie-export-import/src/import.ts @@ -19,6 +19,7 @@ export interface ImportOptions extends StaticImportOptions { acceptChangedPrimaryKey?: boolean; overwriteValues?: boolean; clearTablesBeforeImport?: boolean; + skipTables?: string[], noTransaction?: boolean; chunkSizeBytes?: number; // Default: DEFAULT_KILOBYTES_PER_CHUNK ( 1MB ) filter?: (table: string, value: any, key?: any) => boolean; @@ -68,6 +69,7 @@ export async function importInto(db: Dexie, exportedData: Blob | JsonStream