UNPKG

@inaiat/fastify-papr

Version:
41 lines (40 loc) 1.89 kB
import { BaseSchema, Model, SchemaOptions } from "papr"; import { Db, IndexDescription } from "mongodb"; //#region src/types.d.ts type PaprSchemaTuple = readonly [BaseSchema, unknown]; type PaprDocument<TSchema extends PaprSchemaTuple> = TSchema[0]; type PaprSchemaDefinition<TSchema extends PaprSchemaTuple> = Extract<TSchema[1], SchemaOptions<PaprDocument<TSchema>>>; type PaprModel<TSchema extends PaprSchemaTuple> = Model<PaprDocument<TSchema>, PaprSchemaDefinition<TSchema>>; /** * Main interface for the fastify-papr plugin * Contains all registered models and their connections */ type FastifyPaprModel = Model<any, any>; type FastifyPaprConnection = Record<string, FastifyPaprModel>; interface FastifyPapr { [key: string]: FastifyPaprModel | FastifyPaprConnection | undefined; } /** * Represents a model registration with its schema and optional indexes */ type ModelRegistration = { /** Collection name in MongoDB */name: string; /** Schema definition pair (schema and options) */ schema: [BaseSchema, SchemaOptions<Partial<BaseSchema>>]; /** Optional MongoDB indexes to create */ indexes?: IndexDescription[]; }; /** * Maps model registrations to FastifyPapr property names */ type ModelRegistrationPair<TKey extends string = string> = Record<TKey, ModelRegistration>; /** * Configuration options for the fastify-papr plugin */ type FastifyPaprOptions = { /** Optional name for multiple database support */name?: string; /** MongoDB database instance */ db: Db; /** Models to register */ models: ModelRegistrationPair; /** Whether to skip schema validation reconciliation */ disableSchemaReconciliation?: boolean; }; //#endregion export { FastifyPapr, FastifyPaprConnection, FastifyPaprModel, FastifyPaprOptions, ModelRegistration, ModelRegistrationPair, PaprDocument, PaprModel, PaprSchemaDefinition, PaprSchemaTuple }; //# sourceMappingURL=types.d.ts.map