UNPKG

@sentzunhat/zacatl

Version:

A modular, high-performance TypeScript microservice framework for Node.js, featuring layered architecture, dependency injection, and robust validation for building scalable APIs and distributed systems.

39 lines 1.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MongooseAdapter = void 0; const mongoose_1 = require("mongoose"); const error_1 = require("../../../../error/index.js"); const container_1 = require("../../../../dependency-injection/container"); class MongooseAdapter { async connect(serviceName, config) { const { instance, connectionString, onDatabaseConnected } = config; const getMongoDbName = (uri) => { const match = uri.match(/^mongodb(?:\+srv)?:\/\/[^/]+\/([^?]+)(\?|$)/); return match?.[1] != null ? decodeURIComponent(match[1]) : undefined; }; const mongoose = instance; if (mongoose == null || typeof mongoose.connect !== 'function') { throw new error_1.CustomError({ message: 'database instance is not provided', code: 500, reason: 'database instance not provided', }); } const dbName = getMongoDbName(connectionString) ?? serviceName; await mongoose.connect(connectionString, { dbName, autoIndex: true, autoCreate: true, }); if (onDatabaseConnected != null) { await onDatabaseConnected(mongoose); } (0, container_1.getContainer)().register(mongoose_1.Mongoose, { useValue: mongoose, }); } async disconnect() { } } exports.MongooseAdapter = MongooseAdapter; //# sourceMappingURL=mongoose-adapter.js.map