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