schangxiang@126.com
2025-09-19 0821aa23eabe557c0d9ef5dbe6989c68be35d1fe
1
{"version":3,"sources":["../../src/connection/ConnectionManager.ts"],"names":[],"mappings":";;AAAA,2CAAwC;AACxC,4EAAyE;AAEzE,4FAAyF;AAEzF;;;GAGG;AACH;IAAA;QAEI,4EAA4E;QAC5E,uBAAuB;QACvB,4EAA4E;QAE5E;;WAEG;QACa,gBAAW,GAAiB,EAAE,CAAC;IAkDnD,CAAC;IAhDG,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E;;OAEG;IACH,+BAAG,GAAH,UAAI,IAAY;QACZ,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,CAAC,IAAI,KAAK,IAAI,EAAxB,CAAwB,CAAC,CAAC;IAC3E,CAAC;IAED;;;;OAIG;IACH,+BAAG,GAAH,UAAI,IAAwB;QAAxB,qBAAA,EAAA,gBAAwB;QACxB,IAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,CAAC,IAAI,KAAK,IAAI,EAAxB,CAAwB,CAAC,CAAC;QACjF,IAAI,CAAC,UAAU;YACX,MAAM,IAAI,iDAAuB,CAAC,IAAI,CAAC,CAAC;QAE5C,OAAO,UAAU,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,kCAAM,GAAN,UAAO,OAA0B;QAE7B,iDAAiD;QACjD,IAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC,EAA/C,CAA+C,CAAC,CAAC;QAC7G,IAAI,eAAe,EAAE;YAEjB,qEAAqE;YACrE,IAAI,eAAe,CAAC,WAAW;gBAC3B,MAAM,IAAI,iEAA+B,CAAC,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC;YAEzE,sEAAsE;YACtE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC;SACzE;QAED,0BAA0B;QAC1B,IAAM,UAAU,GAAG,IAAI,uBAAU,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClC,OAAO,UAAU,CAAC;IACtB,CAAC;IAEL,wBAAC;AAAD,CA3DA,AA2DC,IAAA;AA3DY,8CAAiB","file":"ConnectionManager.js","sourcesContent":["import {Connection} from \"./Connection\";\nimport {ConnectionNotFoundError} from \"../error/ConnectionNotFoundError\";\nimport {ConnectionOptions} from \"./ConnectionOptions\";\nimport {AlreadyHasActiveConnectionError} from \"../error/AlreadyHasActiveConnectionError\";\n\n/**\n * ConnectionManager is used to store and manage multiple orm connections.\n * It also provides useful factory methods to simplify connection creation.\n */\nexport class ConnectionManager {\n\n    // -------------------------------------------------------------------------\n    // Protected Properties\n    // -------------------------------------------------------------------------\n\n    /**\n     * List of connections registered in this connection manager.\n     */\n    public readonly connections: Connection[] = [];\n\n    // -------------------------------------------------------------------------\n    // Public Methods\n    // -------------------------------------------------------------------------\n\n    /**\n     * Checks if connection with the given name exist in the manager.\n     */\n    has(name: string): boolean {\n        return !!this.connections.find(connection => connection.name === name);\n    }\n\n    /**\n     * Gets registered connection with the given name.\n     * If connection name is not given then it will get a default connection.\n     * Throws error if connection with the given name was not found.\n     */\n    get(name: string = \"default\"): Connection {\n        const connection = this.connections.find(connection => connection.name === name);\n        if (!connection)\n            throw new ConnectionNotFoundError(name);\n\n        return connection;\n    }\n\n    /**\n     * Creates a new connection based on the given connection options and registers it in the manager.\n     * Connection won't be established, you'll need to manually call connect method to establish connection.\n     */\n    create(options: ConnectionOptions): Connection {\n\n        // check if such connection is already registered\n        const existConnection = this.connections.find(connection => connection.name === (options.name || \"default\"));\n        if (existConnection) {\n\n            // if connection is registered and its not closed then throw an error\n            if (existConnection.isConnected)\n                throw new AlreadyHasActiveConnectionError(options.name || \"default\");\n\n            // if its registered but closed then simply remove it from the manager\n            this.connections.splice(this.connections.indexOf(existConnection), 1);\n        }\n\n        // create a new connection\n        const connection = new Connection(options);\n        this.connections.push(connection);\n        return connection;\n    }\n\n}\n"],"sourceRoot":".."}