export class MyPostgresPersistence
    extends IdentifiablePostgresPersistence<MyData, string> {
    public constructor() {
        super('mydata');
    }

    protected defineSchema(): void {
        // clear all previously autogenerated schemas
        this.clearSchema();
        // create a table 
        this.ensureSchema('CREATE TABLE ' + this._tableName + ' (id TEXT PRIMARY KEY, key TEXT, content TEXT)');
        // create an index
        this.ensureIndex(this._tableName + '_key', { key: 1 }, { unique: true });
    }

    public async getOneRandom(ctx: Context, filter: any): Promise<MyData> {
        return await super.getOneRandom(ctx, filter);
    }

    public async getListByFilter(ctx: Context, filter: any, sort: any, select: any): Promise<MyData[]> {
        return await super.getListByFilter(ctx, filter, sort, select);
    }

    public async getPageByFilter(ctx: Context, filter: any, paging: PagingParams, sort: any, select: any): Promise<DataPage<MyData>> {
        return await super.getPageByFilter(ctx, filter, paging, sort, select);
    }

    public async getCountByFilter(ctx: Context, filter: any): Promise<number> {
        return await super.getCountByFilter(ctx, filter);
    }

    public deleteByFilter(ctx: Context, filter: any): Promise<void> {
        return super.deleteByFilter(ctx, filter);
    }
}