Override Database Operations - Agrejus/pouchdb-entity-fabric GitHub Wiki

A DataContexts database interaction can be overridden if extra functionality is needed

import { DataContext } from 'pouchdb-entity-fabric';

export enum DocumentTypes {
    MyFirstDocument = "MyFirstDocument"
}

interface IMyFirstEntity extends IDbRecord<DocumentTypes> {
    propertyOne: string;
    propertyTwo: string;
}

export class PouchDbDataContext extends DataContext<DocumentTypes> {

    protected override async doWork<T>(action: (db: PouchDB.Database) => Promise<T>, shouldClose: boolean = true) {
        const db = this.createDb();
        const result = await action(db);

        // Closing the connection only makes sense for IndexedDb
        // https://github.com/pouchdb/pouchdb/issues/3429#issuecomment-71043588
        return result;
    }

    myFirstDbSet = this.dbset().default<IMyFirstEntity>(DocumentTypes.MyFirstDocument).create();
}

const context = new PouchDbDataContext();