/// import mongodb = require("mongodb"); import mongoose = require("mongoose"); import pluralize = require("pluralize"); import { Model, Document } from "mongoose"; import { AndExpression, SupportedOperators } from "../../types/"; import Data from "../../types/Generic/Data"; import { ResourceWithTypePath } from "../../types/Resource"; import Relationship from '../../types/Relationship'; import FieldDocumentation from "../../types/Documentation/Field"; import { Adapter, TypeInfo, TypeIdMapOf, ReturnedResource } from "../AdapterInterface"; import CreateQuery from "../../types/Query/CreateQuery"; import FindQuery from "../../types/Query/FindQuery"; import DeleteQuery from "../../types/Query/DeleteQuery"; import UpdateQuery from "../../types/Query/UpdateQuery"; import AddToRelationshipQuery from "../../types/Query/AddToRelationshipQuery"; import RemoveFromRelationshipQuery from "../../types/Query/RemoveFromRelationshipQuery"; export default class MongooseAdapter implements Adapter { protected models: { [modelName: string]: Model; }; protected toTypeName: (modelName: string) => string; protected idGenerator: ((doc: mongoose.Document) => mongodb.ObjectID) | undefined; "constructor": typeof MongooseAdapter; protected typeNamesToModelNames: { [typeName: string]: string | undefined; }; protected modelNamesToTypeNames: { [modelName: string]: string | undefined; }; constructor(models?: { [modelName: string]: Model; }, toTypeName?: (modelName: string) => string, idGenerator?: ((doc: mongoose.Document) => mongodb.ObjectID) | undefined); docToResource(doc: Document, fields?: object): ResourceWithTypePath; docsToResourceData(docs: null | Document | Document[], isPlural: boolean, fields?: object): Data; getTypePath(model: Model): string[]; find(query: FindQuery): Promise<{ primary: Data; included: ReturnedResource[] | undefined; collectionSize: number | undefined; }>; create(query: CreateQuery): Promise<{ created: Data; }>; update(query: UpdateQuery): Promise<{ updated: Data; }>; delete(query: DeleteQuery): Promise<{ deleted: Data; }>; addToRelationship(query: AddToRelationshipQuery): Promise<{ before: Relationship; after: Relationship; }>; removeFromRelationship(query: RemoveFromRelationshipQuery): Promise<{ before: Relationship; after: Relationship; }>; private updateRelationship(query); getTypePaths(items: { type: string; id: string; }[]): Promise>; getModel(typeName: string): mongoose.Model; getRelationshipNames(typeName: any): string[]; protected getRelationshipLinkageType(ownerModel: Model, relName: string): string; static docsToResourceData(models: any, modelNamesToTypeNames: any, docs: null | mongoose.Document | mongoose.Document[], isPlural: boolean, fields?: object): Data; static getStandardizedSchema(model: mongoose.Model, pluralizer?: typeof pluralize.plural): FieldDocumentation[]; static toFriendlyName(pathOrModelName: string): string; static assertIdsValid(filters: AndExpression, isSingular: boolean): void; static idIsValid(id: any): boolean; static supportedOperators: SupportedOperators; }