333
schangxiang@126.com
2025-09-19 18966e02fb573c7e2bb0c6426ed792b38b910940
1
{"version":3,"sources":["../../src/driver/sqlite/SqliteQueryRunner.ts"],"names":[],"mappings":";;;AAAA,+FAA4F;AAC5F,iEAA8D;AAC9D,0FAAuF;AAEvF,4DAAyD;AAEzD;;;;;GAKG;AACH;IAAuC,6CAAyB;IAO5D,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,2BAAY,MAAoB;QAAhC,YACI,iBAAO,SAIV;QAHG,KAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,KAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACpC,KAAI,CAAC,WAAW,GAAG,IAAI,yBAAW,CAAC,KAAI,CAAC,CAAC;;IAC7C,CAAC;IAED;;OAEG;IACH,iCAAK,GAAL,UAAM,KAAa,EAAE,UAAkB;QAAvC,iBAmCC;QAlCG,IAAI,IAAI,CAAC,UAAU;YACf,MAAM,IAAI,iEAA+B,EAAE,CAAC;QAEhD,IAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;QAE1C,OAAO,IAAI,OAAO,CAAQ,UAAO,EAAE,EAAE,IAAI;;;;;wBAE/B,OAAO,GAAG,UAAU,GAAQ,EAAE,MAAW;4BAE3C,oDAAoD;4BACpD,IAAM,qBAAqB,GAAG,UAAU,CAAC,OAAO,CAAC,qBAAqB,CAAC;4BACvE,IAAM,YAAY,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;4BACjC,IAAM,kBAAkB,GAAG,YAAY,GAAG,cAAc,CAAC;4BACzD,IAAI,qBAAqB,IAAI,kBAAkB,GAAG,qBAAqB;gCACnE,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,kBAAkB,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;4BAEhF,IAAI,GAAG,EAAE;gCACL,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;gCAC9D,IAAI,CAAC,IAAI,mCAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;6BACtD;iCAAM;gCACH,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;6BAC/C;wBACL,CAAC,CAAC;wBAEyB,qBAAM,IAAI,CAAC,OAAO,EAAE,EAAA;;wBAAzC,kBAAkB,GAAG,SAAoB;wBAC/C,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;wBAC1D,cAAc,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;wBAC7B,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,aAAa,CAAC;wBAC5D,IAAI,aAAa,EAAE;4BACf,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;yBACtD;6BAAM;4BACH,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;yBACtD;;;;aACJ,CAAC,CAAC;IACP,CAAC;IACL,wBAAC;AAAD,CAzDA,AAyDC,CAzDsC,qDAAyB,GAyD/D;AAzDY,8CAAiB","file":"SqliteQueryRunner.js","sourcesContent":["import {QueryRunnerAlreadyReleasedError} from \"../../error/QueryRunnerAlreadyReleasedError\";\nimport {QueryFailedError} from \"../../error/QueryFailedError\";\nimport {AbstractSqliteQueryRunner} from \"../sqlite-abstract/AbstractSqliteQueryRunner\";\nimport {SqliteDriver} from \"./SqliteDriver\";\nimport {Broadcaster} from \"../../subscriber/Broadcaster\";\n\n/**\n * Runs queries on a single sqlite database connection.\n *\n * Does not support compose primary keys with autoincrement field.\n * todo: need to throw exception for this case.\n */\nexport class SqliteQueryRunner extends AbstractSqliteQueryRunner {\n\n    /**\n     * Database driver used by connection.\n     */\n    driver: SqliteDriver;\n\n    // -------------------------------------------------------------------------\n    // Constructor\n    // -------------------------------------------------------------------------\n\n    constructor(driver: SqliteDriver) {\n        super();\n        this.driver = driver;\n        this.connection = driver.connection;\n        this.broadcaster = new Broadcaster(this);\n    }\n\n    /**\n     * Executes a given SQL query.\n     */\n    query(query: string, parameters?: any[]): Promise<any> {\n        if (this.isReleased)\n            throw new QueryRunnerAlreadyReleasedError();\n\n        const connection = this.driver.connection;\n\n        return new Promise<any[]>(async (ok, fail) => {\n\n            const handler = function (err: any, result: any) {\n\n                // log slow queries if maxQueryExecution time is set\n                const maxQueryExecutionTime = connection.options.maxQueryExecutionTime;\n                const queryEndTime = +new Date();\n                const queryExecutionTime = queryEndTime - queryStartTime;\n                if (maxQueryExecutionTime && queryExecutionTime > maxQueryExecutionTime)\n                    connection.logger.logQuerySlow(queryExecutionTime, query, parameters, this);\n\n                if (err) {\n                    connection.logger.logQueryError(err, query, parameters, this);\n                    fail(new QueryFailedError(query, parameters, err));\n                } else {\n                    ok(isInsertQuery ? this[\"lastID\"] : result);\n                }\n            };\n\n            const databaseConnection = await this.connect();\n            this.driver.connection.logger.logQuery(query, parameters, this);\n            const queryStartTime = +new Date();\n            const isInsertQuery = query.substr(0, 11) === \"INSERT INTO\";\n            if (isInsertQuery) {\n                databaseConnection.run(query, parameters, handler);\n            } else {\n                databaseConnection.all(query, parameters, handler);\n            }\n        });\n    }\n}"],"sourceRoot":"../.."}