@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
JavaScript
;
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.js.map