arrest
Version:
OpenAPI v3 compliant REST framework for Node.js, with support for MongoDB and JSON-Schema
42 lines (41 loc) • 1.73 kB
TypeScript
import { Collection, CollectionOptions, Db } from 'mongodb';
import { OpenAPIV3 } from 'openapi-police';
import { Operation } from '../operation.js';
import { Resource, ResourceDefinition, Routes } from '../resource.js';
import { Method } from '../types.js';
export interface MongoOperationFactory {
new (resource: MongoResource, path: string, method: Method): Operation;
}
export interface MongoRoutes extends Routes {
[path: string]: {
['get']?: MongoOperationFactory;
['put']?: MongoOperationFactory;
['post']?: MongoOperationFactory;
['delete']?: MongoOperationFactory;
['options']?: MongoOperationFactory;
['head']?: MongoOperationFactory;
['patch']?: MongoOperationFactory;
};
}
export interface MongoResourceDefinition extends ResourceDefinition {
collection?: string;
idIsObjectId?: boolean;
createIndexes?: boolean;
escapeProperties?: boolean;
queryLimit?: number;
}
export declare class MongoResource extends Resource {
info: MongoResourceDefinition;
db: Promise<Db>;
indexesChecked: boolean;
constructor(db: string | Db | Promise<Db>, info: MongoResourceDefinition, routes?: MongoRoutes);
protected initInfo(): void;
get schema(): OpenAPIV3.SchemaObject | OpenAPIV3.ReferenceObject;
get requestSchema(): OpenAPIV3.SchemaObject | OpenAPIV3.ReferenceObject;
get responseSchema(): OpenAPIV3.SchemaObject | OpenAPIV3.ReferenceObject;
checkCollectionIndexes(coll: Collection): Promise<any>;
getCollection(opts?: CollectionOptions): Promise<Collection>;
protected getCollectionOptions(): CollectionOptions;
protected getIndexes(): any[] | undefined;
static defaultRoutes(): MongoRoutes;
}