@schamane/small-graphql-mongoose-middleware
Version:

40 lines (39 loc) • 1.86 kB
TypeScript
import { DataSource, DataSourceConfig } from 'apollo-datasource';
import { Document, Model } from 'mongoose';
import { Filter, QueryFieldsType, Sorter } from './mongo';
import { GrapqhContext } from '..';
export declare abstract class MongoDataSource<T extends Document, TContext extends GrapqhContext = GrapqhContext> extends DataSource<TContext> {
protected Entity: Model<T>;
protected context: TContext;
protected importFields: string[];
private fieldTranslations;
private limit;
private extensions;
constructor(entity: Model<T>, fieldTranslations: QueryFieldsType, exts?: any[]);
initialize(config: DataSourceConfig<TContext>): void;
add(entity: Partial<T>): Promise<T>;
update(entity: Partial<T>): Promise<T>;
import(data: T[]): Promise<number>;
truncate(): Promise<void>;
findByIdAndDelete(id: string): Promise<T>;
findByIds(ids: string[]): Promise<T[]>;
protected findById(id: string): Promise<T>;
protected find(filters: Filter | Filter[], sort?: Sorter, distinct?: string): Promise<T[]>;
protected count(filters: Filter | Filter[], distinct?: string): Promise<number>;
protected all(sort?: Sorter, distinct?: string): Promise<T[]>;
protected setLimit(limit: number): void;
protected getLimit(): number | undefined;
abstract filter(filters: Filter[], sort?: Sorter): Promise<T[] | Partial<T>[]>;
abstract list(sort?: Sorter): Promise<T[] | Partial<T>[]>;
protected abstract valuesFilter(): Filter;
private entityPreSave;
private entityPreUpdate;
private entityPreQuery;
values<V>(attribute: string, language: string): Promise<V[]>;
private toSortObject;
private static toLodashSort;
private sortAndExecuteQuery;
private static sortAndExecuteQueryOnDB;
private static sortAndExecuteQueryOnApi;
private static isSortOnDB;
}