Extending Adding Overriding Functionality - Agrejus/pouchdb-entity-fabric GitHub Wiki
Perhaps one of the most powerful features of a DbSet is the ability to extend/add/override existing functionality. For example, if we want to take further action when a document is added to a DbSet via the add method, we can override it.
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> {
myFirstDbSet = this.dbset().default<IMyFirstEntity>(DocumentTypes.MyFirstDocument)
.extend((Instance, props) => {
return new class extends Instance {
constructor() {
super(props)
}
add(...entities: OmittedEntity<IMyFirstEntity>[]) {
// Extra Functionality
return super.add(...entities);
}
}
})
.create();
}
New functionality can also be added
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> {
myFirstDbSet = this.dbset().default<IMyFirstEntity>(DocumentTypes.MyFirstDocument)
.extend((Instance, props) => {
return new class extends Instance {
constructor() {
super(props)
}
someNewFunction() {
// do something
}
}
})
.create();
}
const context = new PouchDbDataContext();
context.myFirstDbSet.someNewFunction()