|
2 | 2 | * 数据库连接管理器 |
3 | 3 | * 统一管理各种数据库的连接创建和实例化逻辑 |
4 | 4 | */ |
5 | | -const Mongo = require('./mongodb'); |
| 5 | +const Mongo = require("./mongodb"); |
6 | 6 |
|
7 | 7 | module.exports = class ConnectionManager { |
| 8 | + /** |
| 9 | + * 支持的数据库类型映射 |
| 10 | + */ |
| 11 | + static get SUPPORTED_DATABASES() { |
| 12 | + return { |
| 13 | + mongodb: Mongo, |
| 14 | + }; |
| 15 | + } |
8 | 16 |
|
9 | | - /** |
10 | | - * 支持的数据库类型映射 |
11 | | - */ |
12 | | - static get SUPPORTED_DATABASES() { |
13 | | - return { |
14 | | - 'mongodb': Mongo, |
15 | | - }; |
| 17 | + /** |
| 18 | + * 创建数据库实例 |
| 19 | + * @param {string} type - 数据库类型 |
| 20 | + * @param {string} databaseName - 数据库名称 |
| 21 | + * @param {Object} cache - 缓存实例(内存缓存) |
| 22 | + * @param {Object} logger - 日志记录器 |
| 23 | + * @param {Object} [defaults] - 统一默认配置(如 maxTimeMS、namespace) |
| 24 | + * @returns {Object} 数据库实例 |
| 25 | + * @throws {Error} 当数据库类型不支持或未实现时抛出错误 |
| 26 | + */ |
| 27 | + static createInstance(type, databaseName, cache, logger, defaults) { |
| 28 | + const SUPPORTED_DATABASES = this.SUPPORTED_DATABASES; |
| 29 | + // 验证数据库类型是否支持 |
| 30 | + if (!(type in SUPPORTED_DATABASES)) { |
| 31 | + const supportedTypes = Object.keys(SUPPORTED_DATABASES).join(", "); |
| 32 | + throw new Error( |
| 33 | + `Invalid database type: ${type}. Supported types are: ${supportedTypes}`, |
| 34 | + ); |
16 | 35 | } |
17 | 36 |
|
18 | | - /** |
19 | | - * 创建数据库实例 |
20 | | - * @param {string} type - 数据库类型 |
21 | | - * @param {string} databaseName - 数据库名称 |
22 | | - * @param {Object} cache - 缓存实例(内存缓存) |
23 | | - * @param {Object} logger - 日志记录器 |
24 | | - * @param {Object} [defaults] - 统一默认配置(如 maxTimeMS、namespace) |
25 | | - * @returns {Object} 数据库实例 |
26 | | - * @throws {Error} 当数据库类型不支持或未实现时抛出错误 |
27 | | - */ |
28 | | - static createInstance(type, databaseName, cache, logger, defaults) { |
29 | | - const SUPPORTED_DATABASES = this.SUPPORTED_DATABASES; |
30 | | - // 验证数据库类型是否支持 |
31 | | - if (!(type in SUPPORTED_DATABASES)) { |
32 | | - const supportedTypes = Object.keys(SUPPORTED_DATABASES).join(', '); |
33 | | - throw new Error(`Invalid database type: ${type}. Supported types are: ${supportedTypes}`); |
34 | | - } |
35 | | - |
36 | | - // 检查是否已实现 |
37 | | - if (SUPPORTED_DATABASES[type] === null) { |
38 | | - throw new Error(`${type} support not implemented yet`); |
39 | | - } |
| 37 | + // 检查是否已实现 |
| 38 | + if (SUPPORTED_DATABASES[type] === null) { |
| 39 | + throw new Error(`${type} support not implemented yet`); |
| 40 | + } |
40 | 41 |
|
41 | | - // 获取对应的数据库类 |
42 | | - const DatabaseClass = SUPPORTED_DATABASES[type]; |
| 42 | + // 获取对应的数据库类 |
| 43 | + const DatabaseClass = SUPPORTED_DATABASES[type]; |
43 | 44 |
|
44 | | - // 创建并返回实例 |
45 | | - return new DatabaseClass(type, databaseName, cache, logger, defaults); |
46 | | - } |
| 45 | + // 创建并返回实例 |
| 46 | + return new DatabaseClass(type, databaseName, cache, logger, defaults); |
| 47 | + } |
47 | 48 |
|
48 | | - /** |
49 | | - * 连接数据库 |
50 | | - * @param {string} type - 数据库类型 |
51 | | - * @param {string} databaseName - 数据库名称 |
52 | | - * @param {Object} config - 数据库连接配置 |
53 | | - * @param {Object} cache - 缓存实例 |
54 | | - * @param {Object} logger - 日志记录器 |
55 | | - * @param {Object} [defaults] - 统一默认配置(如 maxTimeMS、namespace) |
56 | | - * @param {Object} [poolManager] - 多连接池管理器(v1.0.8+) |
57 | | - * @returns {{accessor: Function, instance: Object}} 访问器与底层适配器实例 |
58 | | - * @throws {Error} 连接失败时抛出错误 |
59 | | - */ |
60 | | - static async connect(type, databaseName, config, cache, logger, defaults, poolManager) { |
61 | | - // 创建数据库实例 |
62 | | - const instance = this.createInstance(type, databaseName, cache, logger, defaults); |
| 49 | + /** |
| 50 | + * 连接数据库 |
| 51 | + * @param {string} type - 数据库类型 |
| 52 | + * @param {string} databaseName - 数据库名称 |
| 53 | + * @param {Object} config - 数据库连接配置 |
| 54 | + * @param {Object} cache - 缓存实例 |
| 55 | + * @param {Object} logger - 日志记录器 |
| 56 | + * @param {Object} [defaults] - 统一默认配置(如 maxTimeMS、namespace) |
| 57 | + * @param {Object} [poolManager] - 多连接池管理器(v1.0.8+) |
| 58 | + * @returns {{accessor: Function, instance: Object}} 访问器与底层适配器实例 |
| 59 | + * @throws {Error} 连接失败时抛出错误 |
| 60 | + */ |
| 61 | + static async connect( |
| 62 | + type, |
| 63 | + databaseName, |
| 64 | + config, |
| 65 | + cache, |
| 66 | + logger, |
| 67 | + defaults, |
| 68 | + poolManager, |
| 69 | + ) { |
| 70 | + // 创建数据库实例 |
| 71 | + const instance = this.createInstance( |
| 72 | + type, |
| 73 | + databaseName, |
| 74 | + cache, |
| 75 | + logger, |
| 76 | + defaults, |
| 77 | + ); |
63 | 78 |
|
64 | | - // 🆕 v1.0.8: 传递 poolManager 给实例 |
65 | | - if (poolManager) { |
66 | | - instance.poolManager = poolManager; |
67 | | - } |
| 79 | + // 🆕 v1.0.8: 传递 poolManager 给实例 |
| 80 | + if (poolManager) { |
| 81 | + instance.poolManager = poolManager; |
| 82 | + } |
68 | 83 |
|
69 | | - // 建立连接 |
70 | | - await instance.connect(config); |
| 84 | + // 建立连接 |
| 85 | + await instance.connect(config); |
71 | 86 |
|
72 | | - // ---------- 构建访问器 ---------- |
73 | | - const collection = (collectionName) => instance.collection(databaseName, collectionName); |
74 | | - const db = (databaseName)=>{ |
75 | | - return { |
76 | | - collection:(collectionName)=>instance.collection(databaseName, collectionName) |
77 | | - }; |
78 | | - }; |
| 87 | + // ---------- 构建访问器 ---------- |
| 88 | + const collection = (collectionName) => |
| 89 | + instance.collection(databaseName, collectionName); |
| 90 | + const db = (databaseName) => { |
| 91 | + return { |
| 92 | + collection: (collectionName) => |
| 93 | + instance.collection(databaseName, collectionName), |
| 94 | + }; |
| 95 | + }; |
79 | 96 |
|
80 | | - return { collection, db, instance }; |
81 | | - } |
| 97 | + return { collection, db, use: db, instance }; |
| 98 | + } |
82 | 99 | }; |
83 | | - |
|
0 commit comments