// not the implementation below but probably way easier // https://forum.babylonjs.com/t/local-caching-using-indexeddb/25337 import Dexie from 'dexie'; export class AppDatabase extends Dexie { constructor(id: string, config: any) { super(id); this.version(1).stores(config); } getOne(tableName: T, primaryKey: string | number): Promise { return this.table(tableName).get(primaryKey); } getAll(tableName: string, reverse: boolean): Promise { return !reverse ? this.table(tableName).toArray() : this.table(tableName).reverse().toArray(); } addOne(tableName: string, data: any): Promise { return this.table(tableName).add(data).then(() => data); } addMany(tableName: string, data: any[]): Promise { return this.table(tableName).bulkAdd(data).then(() => data); } putOne(tableName: string, data: any, key?: number): Promise { return this.table(tableName).put(data, key).then(() => data); } putMany(tableName: string, data: any[]): Promise { return this.table(tableName).bulkPut(data).then(() => data); } removeMany(tableName: string, data: any[]): Promise { return this.table(tableName).bulkDelete(data).then(() => data); } remove(tableName: string, id: number): Promise { return this.table(tableName).delete(id).then(() => id); } }