UNPKG

@inaiat/fastify-papr

Version:
61 lines (60 loc) 2.06 kB
import { ensureMongoDriverVersion } from "./mongo-driver-version.js"; import { paprHelper } from "./papr-helper.js"; import fp from "fastify-plugin"; //#region src/fastify-papr-plugin.ts /** * Helper function to create a model registration * @param name Collection name * @param schema Papr schema definition with options * @param indexes Optional MongoDB indexes to create * @returns A model registration object */ const asCollection = (name, schema, indexes) => ({ name, schema, indexes }); const registerNamedModels = (mutableFastify, dbName, models) => { if (!mutableFastify.hasDecorator("papr")) { mutableFastify.decorate("papr", { [dbName]: models }); return; } if (mutableFastify.papr[dbName]) throw new Error(`Connection name already registered: ${dbName}`); mutableFastify.log.info(`Registering connection name: ${dbName}`); mutableFastify.papr = { ...mutableFastify.papr, [dbName]: models }; }; const registerDefaultModels = (mutableFastify, models) => { if (mutableFastify.hasDecorator("papr")) { const items = Object.keys(mutableFastify.papr).join(", "); throw new Error(`Models already registered: ${items}`); } mutableFastify.decorate("papr", models); }; /** * Main Fastify plugin for Papr integration * Registers models to MongoDB and decorates fastify with them */ const fastifyPaprPlugin = async (mutable_fastify, options) => { ensureMongoDriverVersion(); const models = await paprHelper(mutable_fastify, options.db, options.disableSchemaReconciliation).register(options.models); const { name: dbName } = options; if (dbName !== void 0 && dbName !== "") { registerNamedModels(mutable_fastify, dbName, models); return; } registerDefaultModels(mutable_fastify, models); }; /** * Default export as a Fastify plugin * Compatible with Fastify v4 and v5 */ var fastify_papr_plugin_default = fp(fastifyPaprPlugin, { name: "fastify-papr-plugin", fastify: "4.x || 5.x" }); //#endregion export { asCollection, fastify_papr_plugin_default as default, fastifyPaprPlugin }; //# sourceMappingURL=fastify-papr-plugin.js.map