import { Knex } from "knex"; import Resource from "../resource"; import { ApplicationInstanceInterface, EagerLoadedData, HasId, IJsonApiSerializer, JsonApiParams, KnexRecord, Operation, ResourceSchema, ResourceSchemaRelationship } from "../types"; import OperationProcessor from "./operation-processor"; export default class KnexProcessor extends OperationProcessor { protected knex: Knex.Transaction; constructor(appInstance: ApplicationInstanceInterface); getQuery(): Knex.QueryBuilder; eagerLoad(op: Operation, result: ResourceT | ResourceT[]): Promise; protected getColumns(serializer: IJsonApiSerializer, fields?: {}): string[]; get(op: Operation): Promise; remove(op: Operation): Promise; update(op: Operation): Promise; add(op: Operation): Promise; get tableName(): string; getValidAttributes(schema: ResourceSchema, serializer: IJsonApiSerializer): string[]; filtersToKnex(queryBuilder: Knex.QueryBuilder, filters: {}): void; optionsBuilder(queryBuilder: Knex.QueryBuilder, params: JsonApiParams): void; eagerFetchRelationship(key: string, result: ResourceT | ResourceT[], relationship: ResourceSchemaRelationship, baseResource: typeof Resource): Promise; getRelationships(op: Operation, record: HasId, eagerLoadedData: EagerLoadedData): Promise; }