@uql/core 1.0.12 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +254 -0
- package/LICENSE.md +2 -2
- package/dist/browser/http/bus.d.ts +3 -0
- package/dist/browser/http/bus.js +14 -0
- package/dist/browser/http/http.d.ts +6 -0
- package/dist/browser/http/http.js +45 -0
- package/dist/browser/http/index.d.ts +2 -0
- package/dist/browser/http/index.js +3 -0
- package/dist/browser/index.d.ts +4 -0
- package/dist/browser/index.js +5 -0
- package/dist/browser/options.d.ts +4 -0
- package/dist/browser/options.js +14 -0
- package/dist/browser/querier/genericClientRepository.d.ts +17 -0
- package/dist/browser/querier/genericClientRepository.js +39 -0
- package/dist/browser/querier/httpQuerier.d.ts +20 -0
- package/dist/browser/querier/httpQuerier.js +71 -0
- package/dist/browser/querier/index.d.ts +3 -0
- package/dist/browser/querier/index.js +4 -0
- package/dist/browser/querier/querier.util.d.ts +2 -0
- package/dist/browser/querier/querier.util.js +17 -0
- package/dist/browser/type/clientQuerier.d.ts +16 -0
- package/dist/browser/type/clientQuerier.js +2 -0
- package/dist/browser/type/clientQuerierPool.d.ts +4 -0
- package/dist/browser/type/clientQuerierPool.js +2 -0
- package/dist/browser/type/clientRepository.d.ts +13 -0
- package/dist/browser/type/clientRepository.js +2 -0
- package/dist/browser/type/index.d.ts +4 -0
- package/dist/browser/type/index.js +5 -0
- package/dist/browser/type/request.d.ts +28 -0
- package/dist/browser/type/request.js +2 -0
- package/dist/browser/uql-browser.min.js +2150 -0
- package/dist/browser/uql-browser.min.js.map +1 -0
- package/dist/dialect/abstractDialect.d.ts +16 -0
- package/dist/dialect/abstractDialect.js +28 -0
- package/dist/dialect/abstractSqlDialect.d.ts +47 -0
- package/dist/dialect/abstractSqlDialect.js +650 -0
- package/dist/dialect/index.d.ts +3 -0
- package/dist/dialect/index.js +4 -0
- package/dist/dialect/queryContext.d.ts +48 -0
- package/dist/dialect/queryContext.js +65 -0
- package/{entity → dist/entity}/decorator/definition.d.ts +3 -3
- package/dist/entity/decorator/definition.js +214 -0
- package/{entity → dist/entity}/decorator/entity.d.ts +1 -1
- package/dist/entity/decorator/entity.js +7 -0
- package/{entity → dist/entity}/decorator/field.d.ts +1 -1
- package/dist/entity/decorator/field.js +8 -0
- package/{entity → dist/entity}/decorator/id.d.ts +1 -1
- package/dist/entity/decorator/id.js +8 -0
- package/dist/entity/decorator/index.d.ts +5 -0
- package/dist/entity/decorator/index.js +6 -0
- package/{entity → dist/entity}/decorator/relation.d.ts +1 -1
- package/dist/entity/decorator/relation.js +20 -0
- package/dist/entity/index.d.ts +1 -0
- package/dist/entity/index.js +2 -0
- package/dist/express/index.d.ts +2 -0
- package/dist/express/index.js +3 -0
- package/dist/express/querierMiddleware.d.ts +26 -0
- package/dist/express/querierMiddleware.js +190 -0
- package/dist/express/query.util.d.ts +2 -0
- package/dist/express/query.util.js +19 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +10 -0
- package/dist/maria/index.d.ts +3 -0
- package/dist/maria/index.js +4 -0
- package/dist/maria/mariaDialect.d.ts +8 -0
- package/dist/maria/mariaDialect.js +38 -0
- package/dist/maria/mariaQuerierPool.test.d.ts +5 -0
- package/dist/maria/mariaQuerierPool.test.js +19 -0
- package/dist/maria/mariadbQuerier.d.ts +17 -0
- package/dist/maria/mariadbQuerier.js +39 -0
- package/dist/maria/mariadbQuerier.test.d.ts +4 -0
- package/dist/maria/mariadbQuerier.test.js +19 -0
- package/dist/maria/mariadbQuerierPool.d.ts +10 -0
- package/dist/maria/mariadbQuerierPool.js +17 -0
- package/dist/migrate/cli.d.ts +2 -0
- package/dist/migrate/cli.js +254 -0
- package/dist/migrate/generator/index.d.ts +4 -0
- package/dist/migrate/generator/index.js +5 -0
- package/dist/migrate/generator/mongoSchemaGenerator.d.ts +12 -0
- package/dist/migrate/generator/mongoSchemaGenerator.js +100 -0
- package/dist/migrate/generator/mysqlSchemaGenerator.d.ts +14 -0
- package/dist/migrate/generator/mysqlSchemaGenerator.js +81 -0
- package/dist/migrate/generator/postgresSchemaGenerator.d.ts +18 -0
- package/dist/migrate/generator/postgresSchemaGenerator.js +111 -0
- package/dist/migrate/generator/sqliteSchemaGenerator.d.ts +14 -0
- package/dist/migrate/generator/sqliteSchemaGenerator.js +68 -0
- package/dist/migrate/index.d.ts +12 -0
- package/dist/migrate/index.js +17 -0
- package/dist/migrate/introspection/index.d.ts +4 -0
- package/dist/migrate/introspection/index.js +5 -0
- package/dist/migrate/introspection/mongoIntrospector.d.ts +8 -0
- package/dist/migrate/introspection/mongoIntrospector.js +46 -0
- package/dist/migrate/introspection/mysqlIntrospector.d.ts +25 -0
- package/dist/migrate/introspection/mysqlIntrospector.js +220 -0
- package/dist/migrate/introspection/postgresIntrospector.d.ts +21 -0
- package/dist/migrate/introspection/postgresIntrospector.js +269 -0
- package/dist/migrate/introspection/sqliteIntrospector.d.ts +23 -0
- package/dist/migrate/introspection/sqliteIntrospector.js +212 -0
- package/dist/migrate/migrator-mongo.test.d.ts +1 -0
- package/dist/migrate/migrator-mongo.test.js +54 -0
- package/dist/migrate/migrator.d.ts +133 -0
- package/dist/migrate/migrator.js +600 -0
- package/dist/migrate/migrator.test.d.ts +1 -0
- package/dist/migrate/migrator.test.js +106 -0
- package/dist/migrate/schemaGenerator.d.ts +78 -0
- package/dist/migrate/schemaGenerator.js +363 -0
- package/dist/migrate/storage/databaseStorage.d.ts +24 -0
- package/dist/migrate/storage/databaseStorage.js +77 -0
- package/dist/migrate/storage/index.d.ts +2 -0
- package/dist/migrate/storage/index.js +3 -0
- package/dist/migrate/storage/jsonStorage.d.ts +15 -0
- package/dist/migrate/storage/jsonStorage.js +51 -0
- package/dist/migrate/type.d.ts +1 -0
- package/dist/migrate/type.js +2 -0
- package/dist/mongo/index.d.ts +3 -0
- package/dist/mongo/index.js +4 -0
- package/dist/mongo/mongoDialect.d.ts +34 -0
- package/dist/mongo/mongoDialect.js +163 -0
- package/dist/mongo/mongodbQuerier.d.ts +28 -0
- package/dist/mongo/mongodbQuerier.js +204 -0
- package/dist/mongo/mongodbQuerier.test.d.ts +1 -0
- package/dist/mongo/mongodbQuerier.test.js +36 -0
- package/dist/mongo/mongodbQuerierPool.d.ts +10 -0
- package/dist/mongo/mongodbQuerierPool.js +20 -0
- package/dist/mongo/mongodbQuerierPool.test.d.ts +1 -0
- package/dist/mongo/mongodbQuerierPool.test.js +21 -0
- package/dist/mysql/index.d.ts +3 -0
- package/dist/mysql/index.js +4 -0
- package/dist/mysql/mysql2Querier.d.ts +17 -0
- package/dist/mysql/mysql2Querier.js +43 -0
- package/dist/mysql/mysql2Querier.test.d.ts +4 -0
- package/dist/mysql/mysql2Querier.test.js +16 -0
- package/dist/mysql/mysql2QuerierPool.d.ts +10 -0
- package/dist/mysql/mysql2QuerierPool.js +17 -0
- package/dist/mysql/mysql2QuerierPool.test.d.ts +5 -0
- package/dist/mysql/mysql2QuerierPool.test.js +16 -0
- package/dist/mysql/mysqlDialect.d.ts +5 -0
- package/dist/mysql/mysqlDialect.js +15 -0
- package/dist/namingStrategy/defaultNamingStrategy.d.ts +9 -0
- package/dist/namingStrategy/defaultNamingStrategy.js +15 -0
- package/dist/namingStrategy/index.d.ts +2 -0
- package/dist/namingStrategy/index.js +3 -0
- package/dist/namingStrategy/snakeCaseNamingStrategy.d.ts +8 -0
- package/dist/namingStrategy/snakeCaseNamingStrategy.js +14 -0
- package/{options.d.ts → dist/options.d.ts} +1 -1
- package/dist/options.js +14 -0
- package/dist/package.json +131 -0
- package/dist/postgres/index.d.ts +3 -0
- package/dist/postgres/index.js +4 -0
- package/dist/postgres/pgQuerier.d.ts +17 -0
- package/dist/postgres/pgQuerier.js +39 -0
- package/dist/postgres/pgQuerier.test.d.ts +4 -0
- package/dist/postgres/pgQuerier.test.js +20 -0
- package/dist/postgres/pgQuerierPool.d.ts +10 -0
- package/dist/postgres/pgQuerierPool.js +17 -0
- package/dist/postgres/pgQuerierPool.test.d.ts +5 -0
- package/dist/postgres/pgQuerierPool.test.js +23 -0
- package/dist/postgres/postgresDialect.d.ts +13 -0
- package/dist/postgres/postgresDialect.js +110 -0
- package/dist/querier/abstractQuerier-test.d.ts +45 -0
- package/dist/querier/abstractQuerier-test.js +461 -0
- package/dist/querier/abstractQuerier.d.ts +50 -0
- package/dist/querier/abstractQuerier.js +278 -0
- package/dist/querier/abstractQuerierPool-test.d.ts +9 -0
- package/dist/querier/abstractQuerierPool-test.js +18 -0
- package/dist/querier/abstractQuerierPool.d.ts +14 -0
- package/dist/querier/abstractQuerierPool.js +9 -0
- package/dist/querier/abstractSqlQuerier-test.d.ts +9 -0
- package/dist/querier/abstractSqlQuerier-test.js +16 -0
- package/dist/querier/abstractSqlQuerier.d.ts +28 -0
- package/dist/querier/abstractSqlQuerier.js +133 -0
- package/dist/querier/decorator/index.d.ts +3 -0
- package/dist/querier/decorator/index.js +4 -0
- package/dist/querier/decorator/injectQuerier.d.ts +3 -0
- package/dist/querier/decorator/injectQuerier.js +33 -0
- package/dist/querier/decorator/serialized.d.ts +6 -0
- package/dist/querier/decorator/serialized.js +14 -0
- package/{querier → dist/querier}/decorator/transactional.d.ts +1 -1
- package/dist/querier/decorator/transactional.js +48 -0
- package/dist/querier/index.d.ts +4 -0
- package/dist/querier/index.js +5 -0
- package/dist/repository/genericRepository.d.ts +20 -0
- package/dist/repository/genericRepository.js +51 -0
- package/dist/repository/index.d.ts +1 -0
- package/dist/repository/index.js +2 -0
- package/dist/sqlite/index.d.ts +3 -0
- package/dist/sqlite/index.js +4 -0
- package/dist/sqlite/sqliteDialect.d.ts +10 -0
- package/dist/sqlite/sqliteDialect.js +48 -0
- package/dist/sqlite/sqliteQuerier.d.ts +15 -0
- package/dist/sqlite/sqliteQuerier.js +33 -0
- package/dist/sqlite/sqliteQuerier.test.d.ts +5 -0
- package/dist/sqlite/sqliteQuerier.test.js +19 -0
- package/dist/sqlite/sqliteQuerierPool.d.ts +14 -0
- package/dist/sqlite/sqliteQuerierPool.js +34 -0
- package/dist/sqlite/sqliteQuerierPool.test.d.ts +5 -0
- package/dist/sqlite/sqliteQuerierPool.test.js +10 -0
- package/dist/test/entityMock.d.ts +164 -0
- package/dist/test/entityMock.js +554 -0
- package/dist/test/index.d.ts +3 -0
- package/dist/test/index.js +4 -0
- package/dist/test/it.util.d.ts +4 -0
- package/dist/test/it.util.js +55 -0
- package/dist/test/spec.util.d.ts +14 -0
- package/dist/test/spec.util.js +50 -0
- package/{type → dist/type}/entity.d.ts +97 -4
- package/dist/type/entity.js +5 -0
- package/dist/type/index.d.ts +9 -0
- package/dist/type/index.js +10 -0
- package/dist/type/migration.d.ts +213 -0
- package/dist/type/migration.js +2 -0
- package/dist/type/namingStrategy.d.ts +17 -0
- package/dist/type/namingStrategy.js +2 -0
- package/dist/type/querier.d.ts +96 -0
- package/dist/type/querier.js +11 -0
- package/{type → dist/type}/querierPool.d.ts +7 -3
- package/dist/type/querierPool.js +2 -0
- package/{type → dist/type}/query.d.ts +170 -108
- package/dist/type/query.js +9 -0
- package/{type → dist/type}/repository.d.ts +42 -35
- package/dist/type/repository.js +2 -0
- package/{type → dist/type}/universalQuerier.d.ts +50 -28
- package/dist/type/universalQuerier.js +2 -0
- package/dist/type/utility.d.ts +13 -0
- package/dist/type/utility.js +2 -0
- package/dist/util/dialect.util.d.ts +12 -0
- package/dist/util/dialect.util.js +93 -0
- package/dist/util/index.d.ts +5 -0
- package/dist/util/index.js +6 -0
- package/dist/util/object.util.d.ts +7 -0
- package/dist/util/object.util.js +19 -0
- package/dist/util/raw.d.ts +8 -0
- package/dist/util/raw.js +11 -0
- package/dist/util/sql.util.d.ts +13 -0
- package/dist/util/sql.util.js +78 -0
- package/{util → dist/util}/string.util.d.ts +1 -0
- package/dist/util/string.util.js +34 -0
- package/package.json +85 -17
- package/src/@types/index.d.ts +1 -0
- package/src/@types/jest.d.ts +6 -0
- package/src/browser/http/bus.spec.ts +22 -0
- package/src/browser/http/bus.ts +17 -0
- package/src/browser/http/http.spec.ts +70 -0
- package/src/browser/http/http.ts +55 -0
- package/src/browser/http/index.ts +2 -0
- package/src/browser/index.ts +4 -0
- package/src/browser/options.spec.ts +37 -0
- package/src/browser/options.ts +18 -0
- package/src/browser/querier/genericClientRepository.spec.ts +105 -0
- package/src/browser/querier/genericClientRepository.ts +49 -0
- package/src/browser/querier/httpQuerier.ts +82 -0
- package/src/browser/querier/index.ts +3 -0
- package/src/browser/querier/querier.util.spec.ts +35 -0
- package/src/browser/querier/querier.util.ts +18 -0
- package/src/browser/type/clientQuerier.ts +45 -0
- package/src/browser/type/clientQuerierPool.ts +5 -0
- package/src/browser/type/clientRepository.ts +22 -0
- package/src/browser/type/index.ts +4 -0
- package/src/browser/type/request.ts +25 -0
- package/src/dialect/abstractDialect.ts +28 -0
- package/src/dialect/abstractSqlDialect-spec.ts +1309 -0
- package/src/dialect/abstractSqlDialect.ts +805 -0
- package/src/dialect/index.ts +3 -0
- package/src/dialect/namingStrategy.spec.ts +52 -0
- package/src/dialect/queryContext.ts +69 -0
- package/src/entity/decorator/definition.spec.ts +736 -0
- package/src/entity/decorator/definition.ts +265 -0
- package/src/entity/decorator/entity.ts +8 -0
- package/src/entity/decorator/field.ts +9 -0
- package/src/entity/decorator/id.ts +9 -0
- package/src/entity/decorator/index.ts +5 -0
- package/src/entity/decorator/relation.spec.ts +41 -0
- package/src/entity/decorator/relation.ts +34 -0
- package/src/entity/index.ts +1 -0
- package/src/express/@types/express.d.ts +8 -0
- package/src/express/@types/index.d.ts +1 -0
- package/src/express/index.ts +2 -0
- package/src/express/querierMiddleware.ts +217 -0
- package/src/express/query.util.spec.ts +40 -0
- package/src/express/query.util.ts +21 -0
- package/src/index.ts +9 -0
- package/src/maria/index.ts +3 -0
- package/src/maria/mariaDialect.spec.ts +207 -0
- package/src/maria/mariaDialect.ts +42 -0
- package/src/maria/mariaQuerierPool.test.ts +23 -0
- package/src/maria/mariadbQuerier.test.ts +23 -0
- package/src/maria/mariadbQuerier.ts +45 -0
- package/src/maria/mariadbQuerierPool.ts +21 -0
- package/src/migrate/cli.ts +301 -0
- package/src/migrate/generator/index.ts +4 -0
- package/src/migrate/generator/mongoSchemaGenerator.spec.ts +112 -0
- package/src/migrate/generator/mongoSchemaGenerator.ts +115 -0
- package/src/migrate/generator/mysqlSchemaGenerator.spec.ts +34 -0
- package/src/migrate/generator/mysqlSchemaGenerator.ts +92 -0
- package/src/migrate/generator/postgresSchemaGenerator.spec.ts +44 -0
- package/src/migrate/generator/postgresSchemaGenerator.ts +127 -0
- package/src/migrate/generator/sqliteSchemaGenerator.spec.ts +33 -0
- package/src/migrate/generator/sqliteSchemaGenerator.ts +81 -0
- package/src/migrate/index.ts +41 -0
- package/src/migrate/introspection/index.ts +4 -0
- package/src/migrate/introspection/mongoIntrospector.spec.ts +75 -0
- package/src/migrate/introspection/mongoIntrospector.ts +47 -0
- package/src/migrate/introspection/mysqlIntrospector.spec.ts +113 -0
- package/src/migrate/introspection/mysqlIntrospector.ts +278 -0
- package/src/migrate/introspection/postgresIntrospector.spec.ts +112 -0
- package/src/migrate/introspection/postgresIntrospector.ts +329 -0
- package/src/migrate/introspection/sqliteIntrospector.spec.ts +112 -0
- package/src/migrate/introspection/sqliteIntrospector.ts +296 -0
- package/src/migrate/migrator-mongo.test.ts +54 -0
- package/src/migrate/migrator.spec.ts +255 -0
- package/src/migrate/migrator.test.ts +94 -0
- package/src/migrate/migrator.ts +719 -0
- package/src/migrate/namingStrategy.spec.ts +22 -0
- package/src/migrate/schemaGenerator-advanced.spec.ts +138 -0
- package/src/migrate/schemaGenerator.spec.ts +190 -0
- package/src/migrate/schemaGenerator.ts +478 -0
- package/src/migrate/storage/databaseStorage.spec.ts +69 -0
- package/src/migrate/storage/databaseStorage.ts +100 -0
- package/src/migrate/storage/index.ts +2 -0
- package/src/migrate/storage/jsonStorage.ts +58 -0
- package/src/migrate/type.ts +1 -0
- package/src/mongo/index.ts +3 -0
- package/src/mongo/mongoDialect.spec.ts +251 -0
- package/src/mongo/mongoDialect.ts +238 -0
- package/src/mongo/mongodbQuerier.test.ts +45 -0
- package/src/mongo/mongodbQuerier.ts +256 -0
- package/src/mongo/mongodbQuerierPool.test.ts +25 -0
- package/src/mongo/mongodbQuerierPool.ts +24 -0
- package/src/mysql/index.ts +3 -0
- package/src/mysql/mysql2Querier.test.ts +20 -0
- package/src/mysql/mysql2Querier.ts +49 -0
- package/src/mysql/mysql2QuerierPool.test.ts +20 -0
- package/src/mysql/mysql2QuerierPool.ts +21 -0
- package/src/mysql/mysqlDialect.spec.ts +20 -0
- package/src/mysql/mysqlDialect.ts +16 -0
- package/src/namingStrategy/defaultNamingStrategy.ts +18 -0
- package/src/namingStrategy/index.spec.ts +36 -0
- package/src/namingStrategy/index.ts +2 -0
- package/src/namingStrategy/snakeCaseNamingStrategy.ts +15 -0
- package/src/options.spec.ts +41 -0
- package/src/options.ts +18 -0
- package/src/postgres/index.ts +3 -0
- package/src/postgres/manual-types.d.ts +4 -0
- package/src/postgres/pgQuerier.test.ts +25 -0
- package/src/postgres/pgQuerier.ts +45 -0
- package/src/postgres/pgQuerierPool.test.ts +28 -0
- package/src/postgres/pgQuerierPool.ts +21 -0
- package/src/postgres/postgresDialect.spec.ts +428 -0
- package/src/postgres/postgresDialect.ts +144 -0
- package/src/querier/abstractQuerier-test.ts +584 -0
- package/src/querier/abstractQuerier.ts +353 -0
- package/src/querier/abstractQuerierPool-test.ts +20 -0
- package/src/querier/abstractQuerierPool.ts +18 -0
- package/src/querier/abstractSqlQuerier-spec.ts +979 -0
- package/src/querier/abstractSqlQuerier-test.ts +21 -0
- package/src/querier/abstractSqlQuerier.ts +138 -0
- package/src/querier/decorator/index.ts +3 -0
- package/src/querier/decorator/injectQuerier.spec.ts +74 -0
- package/src/querier/decorator/injectQuerier.ts +45 -0
- package/src/querier/decorator/serialized.spec.ts +98 -0
- package/src/querier/decorator/serialized.ts +13 -0
- package/src/querier/decorator/transactional.spec.ts +240 -0
- package/src/querier/decorator/transactional.ts +56 -0
- package/src/querier/index.ts +4 -0
- package/src/repository/genericRepository.spec.ts +111 -0
- package/src/repository/genericRepository.ts +74 -0
- package/src/repository/index.ts +1 -0
- package/src/sqlite/index.ts +3 -0
- package/src/sqlite/manual-types.d.ts +4 -0
- package/src/sqlite/sqliteDialect.spec.ts +155 -0
- package/src/sqlite/sqliteDialect.ts +76 -0
- package/src/sqlite/sqliteQuerier.spec.ts +36 -0
- package/src/sqlite/sqliteQuerier.test.ts +21 -0
- package/src/sqlite/sqliteQuerier.ts +37 -0
- package/src/sqlite/sqliteQuerierPool.test.ts +12 -0
- package/src/sqlite/sqliteQuerierPool.ts +38 -0
- package/src/test/entityMock.ts +375 -0
- package/src/test/index.ts +3 -0
- package/src/test/it.util.ts +69 -0
- package/src/test/spec.util.ts +57 -0
- package/src/type/entity.ts +218 -0
- package/src/type/index.ts +9 -0
- package/src/type/migration.ts +241 -0
- package/src/type/namingStrategy.ts +17 -0
- package/src/type/querier.ts +143 -0
- package/src/type/querierPool.ts +26 -0
- package/src/type/query.ts +506 -0
- package/src/type/repository.ts +142 -0
- package/src/type/universalQuerier.ts +133 -0
- package/src/type/utility.ts +21 -0
- package/src/util/dialect.util-extra.spec.ts +96 -0
- package/src/util/dialect.util.spec.ts +23 -0
- package/src/util/dialect.util.ts +134 -0
- package/src/util/index.ts +5 -0
- package/src/util/object.util.spec.ts +29 -0
- package/src/util/object.util.ts +27 -0
- package/src/util/raw.ts +11 -0
- package/src/util/sql.util-extra.spec.ts +17 -0
- package/src/util/sql.util.spec.ts +208 -0
- package/src/util/sql.util.ts +104 -0
- package/src/util/string.util.spec.ts +46 -0
- package/src/util/string.util.ts +35 -0
- package/tsconfig.build.json +5 -0
- package/tsconfig.json +8 -0
- package/README.md +0 -177
- package/dialect/abstractSqlDialect.d.ts +0 -30
- package/dialect/abstractSqlDialect.js +0 -365
- package/dialect/index.d.ts +0 -4
- package/dialect/index.js +0 -8
- package/dialect/mysqlDialect.d.ts +0 -6
- package/dialect/mysqlDialect.js +0 -21
- package/dialect/postgresDialect.d.ts +0 -8
- package/dialect/postgresDialect.js +0 -44
- package/dialect/sqliteDialect.d.ts +0 -4
- package/dialect/sqliteDialect.js +0 -11
- package/entity/decorator/definition.js +0 -223
- package/entity/decorator/entity.js +0 -11
- package/entity/decorator/field.js +0 -12
- package/entity/decorator/id.js +0 -12
- package/entity/decorator/index.d.ts +0 -5
- package/entity/decorator/index.js +0 -12
- package/entity/decorator/relation.js +0 -27
- package/entity/index.d.ts +0 -1
- package/entity/index.js +0 -5
- package/index.d.ts +0 -1
- package/index.js +0 -5
- package/options.js +0 -20
- package/querier/abstractQuerier.d.ts +0 -30
- package/querier/abstractQuerier.js +0 -230
- package/querier/abstractSqlQuerier.d.ts +0 -27
- package/querier/abstractSqlQuerier.js +0 -88
- package/querier/decorator/index.d.ts +0 -2
- package/querier/decorator/index.js +0 -6
- package/querier/decorator/injectQuerier.d.ts +0 -3
- package/querier/decorator/injectQuerier.js +0 -39
- package/querier/decorator/transactional.js +0 -52
- package/querier/index.d.ts +0 -3
- package/querier/index.js +0 -7
- package/repository/genericRepository.d.ts +0 -19
- package/repository/genericRepository.js +0 -52
- package/repository/index.d.ts +0 -1
- package/repository/index.js +0 -5
- package/type/entity.js +0 -5
- package/type/index.d.ts +0 -7
- package/type/index.js +0 -11
- package/type/querier.d.ts +0 -53
- package/type/querier.js +0 -3
- package/type/querierPool.js +0 -3
- package/type/query.js +0 -13
- package/type/repository.js +0 -3
- package/type/universalQuerier.js +0 -3
- package/type/utility.d.ts +0 -12
- package/type/utility.js +0 -3
- package/util/dialect.util.d.ts +0 -17
- package/util/dialect.util.js +0 -114
- package/util/index.d.ts +0 -5
- package/util/index.js +0 -9
- package/util/object.util.d.ts +0 -3
- package/util/object.util.js +0 -22
- package/util/raw.d.ts +0 -2
- package/util/raw.js +0 -9
- package/util/sql.util.d.ts +0 -2
- package/util/sql.util.js +0 -55
- package/util/string.util.js +0 -20
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import { getMeta } from '../entity/index.js';
|
|
3
|
+
import { AbstractQuerier, Serialized } from '../querier/index.js';
|
|
4
|
+
import { clone, getFieldCallbackValue, getKeys, hasKeys, isSelectingRelations } from '../util/index.js';
|
|
5
|
+
export class MongodbQuerier extends AbstractQuerier {
|
|
6
|
+
dialect;
|
|
7
|
+
conn;
|
|
8
|
+
extra;
|
|
9
|
+
session;
|
|
10
|
+
constructor(dialect, conn, extra) {
|
|
11
|
+
super();
|
|
12
|
+
this.dialect = dialect;
|
|
13
|
+
this.conn = conn;
|
|
14
|
+
this.extra = extra;
|
|
15
|
+
}
|
|
16
|
+
async execute(task) {
|
|
17
|
+
return task(this.session);
|
|
18
|
+
}
|
|
19
|
+
async findMany(entity, q) {
|
|
20
|
+
const meta = getMeta(entity);
|
|
21
|
+
let documents;
|
|
22
|
+
const hasSelectedRelations = isSelectingRelations(meta, q.$select);
|
|
23
|
+
if (hasSelectedRelations) {
|
|
24
|
+
const pipeline = this.dialect.aggregationPipeline(entity, q);
|
|
25
|
+
this.extra?.logger('findMany', entity.name, JSON.stringify(pipeline, null, 2));
|
|
26
|
+
documents = await this.execute((session) => this.collection(entity).aggregate(pipeline, { session }).toArray());
|
|
27
|
+
documents = this.dialect.normalizeIds(meta, documents);
|
|
28
|
+
await this.fillToManyRelations(entity, documents, q.$select);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
const cursor = this.collection(entity).find({}, { session: this.session });
|
|
32
|
+
const filter = this.dialect.where(entity, q.$where);
|
|
33
|
+
if (hasKeys(filter)) {
|
|
34
|
+
cursor.filter(filter);
|
|
35
|
+
}
|
|
36
|
+
const select = this.dialect.select(entity, q.$select);
|
|
37
|
+
if (hasKeys(select)) {
|
|
38
|
+
cursor.project(select);
|
|
39
|
+
}
|
|
40
|
+
const sort = this.dialect.sort(entity, q.$sort);
|
|
41
|
+
if (hasKeys(sort)) {
|
|
42
|
+
cursor.sort(sort);
|
|
43
|
+
}
|
|
44
|
+
if (q.$skip) {
|
|
45
|
+
cursor.skip(q.$skip);
|
|
46
|
+
}
|
|
47
|
+
if (q.$limit) {
|
|
48
|
+
cursor.limit(q.$limit);
|
|
49
|
+
}
|
|
50
|
+
this.extra?.logger?.('findMany', entity.name, q);
|
|
51
|
+
documents = await this.execute(() => cursor.toArray());
|
|
52
|
+
documents = this.dialect.normalizeIds(meta, documents);
|
|
53
|
+
}
|
|
54
|
+
return documents;
|
|
55
|
+
}
|
|
56
|
+
count(entity, qm = {}) {
|
|
57
|
+
const filter = this.dialect.where(entity, qm.$where);
|
|
58
|
+
this.extra?.logger?.('count', entity.name, filter);
|
|
59
|
+
return this.execute((session) => this.collection(entity).countDocuments(filter, {
|
|
60
|
+
session,
|
|
61
|
+
}));
|
|
62
|
+
}
|
|
63
|
+
async insertMany(entity, payloads) {
|
|
64
|
+
if (!payloads?.length) {
|
|
65
|
+
return [];
|
|
66
|
+
}
|
|
67
|
+
payloads = clone(payloads);
|
|
68
|
+
const meta = getMeta(entity);
|
|
69
|
+
const persistables = this.dialect.getPersistables(meta, payloads, 'onInsert');
|
|
70
|
+
this.extra?.logger?.('insertMany', entity.name, persistables);
|
|
71
|
+
const { insertedIds } = await this.execute((session) => this.collection(entity).insertMany(persistables, { session }));
|
|
72
|
+
const ids = Object.values(insertedIds);
|
|
73
|
+
for (const [index, it] of payloads.entries()) {
|
|
74
|
+
it[meta.id] = ids[index];
|
|
75
|
+
}
|
|
76
|
+
await this.insertRelations(entity, payloads);
|
|
77
|
+
return ids;
|
|
78
|
+
}
|
|
79
|
+
async updateMany(entity, qm, payload) {
|
|
80
|
+
payload = clone(payload);
|
|
81
|
+
const meta = getMeta(entity);
|
|
82
|
+
const persistable = this.dialect.getPersistable(meta, payload, 'onUpdate');
|
|
83
|
+
const where = this.dialect.where(entity, qm.$where);
|
|
84
|
+
const update = { $set: persistable };
|
|
85
|
+
this.extra?.logger?.('updateMany', entity.name, where, update);
|
|
86
|
+
const { matchedCount } = await this.execute((session) => this.collection(entity).updateMany(where, update, {
|
|
87
|
+
session,
|
|
88
|
+
}));
|
|
89
|
+
await this.updateRelations(entity, qm, payload);
|
|
90
|
+
return matchedCount;
|
|
91
|
+
}
|
|
92
|
+
async upsertOne(entity, conflictPaths, payload) {
|
|
93
|
+
payload = clone(payload);
|
|
94
|
+
const meta = getMeta(entity);
|
|
95
|
+
const persistable = this.dialect.getPersistable(meta, payload, 'onInsert');
|
|
96
|
+
this.extra?.logger?.('upsertOne', entity.name, persistable);
|
|
97
|
+
const where = getKeys(conflictPaths).reduce((acc, key) => {
|
|
98
|
+
acc[key] = payload[key];
|
|
99
|
+
return acc;
|
|
100
|
+
}, {});
|
|
101
|
+
const filter = this.dialect.where(entity, where);
|
|
102
|
+
const update = { $set: persistable };
|
|
103
|
+
const res = await this.execute((session) => this.collection(entity).findOneAndUpdate(filter, update, {
|
|
104
|
+
upsert: true,
|
|
105
|
+
session,
|
|
106
|
+
}));
|
|
107
|
+
const firstId = res?._id;
|
|
108
|
+
return { firstId, changes: firstId ? 1 : 0 };
|
|
109
|
+
}
|
|
110
|
+
async deleteMany(entity, qm, opts = {}) {
|
|
111
|
+
const meta = getMeta(entity);
|
|
112
|
+
const where = this.dialect.where(entity, qm.$where);
|
|
113
|
+
this.extra?.logger?.('deleteMany', entity.name, where, opts);
|
|
114
|
+
const founds = await this.execute((session) => this.collection(entity)
|
|
115
|
+
.find(where, {
|
|
116
|
+
projection: { _id: true },
|
|
117
|
+
session,
|
|
118
|
+
})
|
|
119
|
+
.toArray());
|
|
120
|
+
if (!founds.length) {
|
|
121
|
+
return 0;
|
|
122
|
+
}
|
|
123
|
+
const ids = this.dialect.normalizeIds(meta, founds).map((found) => found[meta.id]);
|
|
124
|
+
let changes;
|
|
125
|
+
if (meta.softDelete && !opts.softDelete) {
|
|
126
|
+
const onDeleteValue = getFieldCallbackValue(meta.fields[meta.softDelete].onDelete);
|
|
127
|
+
const updateResult = await this.execute((session) => this.collection(entity).updateMany({ _id: { $in: ids } }, { $set: { [meta.softDelete]: onDeleteValue } }, {
|
|
128
|
+
session,
|
|
129
|
+
}));
|
|
130
|
+
changes = updateResult.matchedCount;
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
const deleteResult = await this.execute((session) => this.collection(entity).deleteMany({ _id: { $in: ids } }, { session }));
|
|
134
|
+
changes = deleteResult.deletedCount;
|
|
135
|
+
}
|
|
136
|
+
await this.deleteRelations(entity, ids, opts);
|
|
137
|
+
return changes;
|
|
138
|
+
}
|
|
139
|
+
get hasOpenTransaction() {
|
|
140
|
+
return this.session?.inTransaction();
|
|
141
|
+
}
|
|
142
|
+
collection(entity) {
|
|
143
|
+
const { name } = getMeta(entity);
|
|
144
|
+
return this.db.collection(name);
|
|
145
|
+
}
|
|
146
|
+
get db() {
|
|
147
|
+
return this.conn.db();
|
|
148
|
+
}
|
|
149
|
+
async beginTransaction() {
|
|
150
|
+
if (this.hasOpenTransaction) {
|
|
151
|
+
throw TypeError('pending transaction');
|
|
152
|
+
}
|
|
153
|
+
this.extra?.logger?.('beginTransaction');
|
|
154
|
+
await this.session?.endSession();
|
|
155
|
+
this.session = this.conn.startSession();
|
|
156
|
+
this.session.startTransaction();
|
|
157
|
+
}
|
|
158
|
+
async commitTransaction() {
|
|
159
|
+
if (!this.hasOpenTransaction) {
|
|
160
|
+
throw TypeError('not a pending transaction');
|
|
161
|
+
}
|
|
162
|
+
this.extra?.logger?.('commitTransaction');
|
|
163
|
+
await this.session.commitTransaction();
|
|
164
|
+
}
|
|
165
|
+
async rollbackTransaction() {
|
|
166
|
+
if (!this.hasOpenTransaction) {
|
|
167
|
+
throw TypeError('not a pending transaction');
|
|
168
|
+
}
|
|
169
|
+
this.extra?.logger?.('rollbackTransaction');
|
|
170
|
+
await this.session.abortTransaction();
|
|
171
|
+
}
|
|
172
|
+
async internalRelease() {
|
|
173
|
+
if (this.hasOpenTransaction) {
|
|
174
|
+
throw TypeError('pending transaction');
|
|
175
|
+
}
|
|
176
|
+
await this.session?.endSession();
|
|
177
|
+
this.session = undefined;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
__decorate([
|
|
181
|
+
Serialized(),
|
|
182
|
+
__metadata("design:type", Function),
|
|
183
|
+
__metadata("design:paramtypes", [Function]),
|
|
184
|
+
__metadata("design:returntype", Promise)
|
|
185
|
+
], MongodbQuerier.prototype, "execute", null);
|
|
186
|
+
__decorate([
|
|
187
|
+
Serialized(),
|
|
188
|
+
__metadata("design:type", Function),
|
|
189
|
+
__metadata("design:paramtypes", []),
|
|
190
|
+
__metadata("design:returntype", Promise)
|
|
191
|
+
], MongodbQuerier.prototype, "beginTransaction", null);
|
|
192
|
+
__decorate([
|
|
193
|
+
Serialized(),
|
|
194
|
+
__metadata("design:type", Function),
|
|
195
|
+
__metadata("design:paramtypes", []),
|
|
196
|
+
__metadata("design:returntype", Promise)
|
|
197
|
+
], MongodbQuerier.prototype, "commitTransaction", null);
|
|
198
|
+
__decorate([
|
|
199
|
+
Serialized(),
|
|
200
|
+
__metadata("design:type", Function),
|
|
201
|
+
__metadata("design:paramtypes", []),
|
|
202
|
+
__metadata("design:returntype", Promise)
|
|
203
|
+
], MongodbQuerier.prototype, "rollbackTransaction", null);
|
|
204
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZ29kYlF1ZXJpZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9uZ28vbW9uZ29kYlF1ZXJpZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBV2xFLE9BQU8sRUFBRSxLQUFLLEVBQUUscUJBQXFCLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSXhHLE1BQU0sT0FBTyxjQUFlLFNBQVEsZUFBZTtJQUl0QztJQUNBO0lBQ0E7SUFMSCxPQUFPLENBQWdCO0lBRS9CLFlBQ1csT0FBcUIsRUFDckIsSUFBaUIsRUFDakIsS0FBb0I7UUFFN0IsS0FBSyxFQUFFLENBQUM7UUFKQyxZQUFPLEdBQVAsT0FBTyxDQUFjO1FBQ3JCLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsVUFBSyxHQUFMLEtBQUssQ0FBZTtJQUcvQixDQUFDO0lBR2EsQUFBTixLQUFLLENBQUMsT0FBTyxDQUFJLElBQTRDO1FBQ25FLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRVEsS0FBSyxDQUFDLFFBQVEsQ0FBcUIsTUFBZSxFQUFFLENBQVc7UUFDdEUsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTdCLElBQUksU0FBYyxDQUFDO1FBQ25CLE1BQU0sb0JBQW9CLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVuRSxJQUFJLG9CQUFvQixFQUFFLENBQUM7WUFDekIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7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QixFQUFFLENBQUM7WUFDNUIsTUFBTSxTQUFTLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBQ0QsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO0lBQzNCLENBQUM7Q0FDRjtBQWxPZTtJQURiLFVBQVUsRUFBRTs7Ozs2Q0FHWjtBQTZMYztJQURkLFVBQVUsRUFBRTs7OztzREFTWjtBQUdjO0lBRGQsVUFBVSxFQUFFOzs7O3VEQU9aO0FBR2M7SUFEZCxVQUFVLEVBQUU7Ozs7eURBT1oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENsaWVudFNlc3Npb24sIERvY3VtZW50LCBNb25nb0NsaWVudCwgT3B0aW9uYWxVbmxlc3NSZXF1aXJlZElkLCBVcGRhdGVGaWx0ZXIgfSBmcm9tICdtb25nb2RiJztcbmltcG9ydCB7IGdldE1ldGEgfSBmcm9tICcuLi9lbnRpdHkvaW5kZXguanMnO1xuaW1wb3J0IHsgQWJzdHJhY3RRdWVyaWVyLCBTZXJpYWxpemVkIH0gZnJvbSAnLi4vcXVlcmllci9pbmRleC5qcyc7XG5pbXBvcnQgdHlwZSB7XG4gIEV4dHJhT3B0aW9ucyxcbiAgSWRWYWx1ZSxcbiAgUXVlcnksXG4gIFF1ZXJ5Q29uZmxpY3RQYXRocyxcbiAgUXVlcnlPcHRpb25zLFxuICBRdWVyeVNlYXJjaCxcbiAgUXVlcnlXaGVyZSxcbiAgVHlwZSxcbn0gZnJvbSAnLi4vdHlwZS9pbmRleC5qcyc7XG5pbXBvcnQgeyBjbG9uZSwgZ2V0RmllbGRDYWxsYmFja1ZhbHVlLCBnZXRLZXlzLCBoYXNLZXlzLCBpc1NlbGVjdGluZ1JlbGF0aW9ucyB9IGZyb20gJy4uL3V0aWwvaW5kZXguanMnO1xuXG5pbXBvcnQgdHlwZSB7IE1vbmdvRGlhbGVjdCB9IGZyb20gJy4vbW9uZ29EaWFsZWN0LmpzJztcblxuZXhwb3J0IGNsYXNzIE1vbmdvZGJRdWVyaWVyIGV4dGVuZHMgQWJzdHJhY3RRdWVyaWVyIHtcbiAgcHJpdmF0ZSBzZXNzaW9uOiBDbGllbnRTZXNzaW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJlYWRvbmx5IGRpYWxlY3Q6IE1vbmdvRGlhbGVjdCxcbiAgICByZWFkb25seSBjb25uOiBNb25nb0NsaWVudCxcbiAgICByZWFkb25seSBleHRyYT86IEV4dHJhT3B0aW9ucyxcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIEBTZXJpYWxpemVkKClcbiAgcHJpdmF0ZSBhc3luYyBleGVjdXRlPFQ+KHRhc2s6IChzZXNzaW9uOiBDbGllbnRTZXNzaW9uKSA9PiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIHRhc2sodGhpcy5zZXNzaW9uKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIGZpbmRNYW55PEUgZXh0ZW5kcyBEb2N1bWVudD4oZW50aXR5OiBUeXBlPEU+LCBxOiBRdWVyeTxFPikge1xuICAgIGNvbnN0IG1ldGEgPSBnZXRNZXRhKGVudGl0eSk7XG5cbiAgICBsZXQgZG9jdW1lbnRzOiBFW107XG4gICAgY29uc3QgaGFzU2VsZWN0ZWRSZWxhdGlvbnMgPSBpc1NlbGVjdGluZ1JlbGF0aW9ucyhtZXRhLCBxLiRzZWxlY3QpO1xuXG4gICAgaWYgKGhhc1NlbGVjdGVkUmVsYXRpb25zKSB7XG4gICAgICBjb25zdCBwaXBlbGluZSA9IHRoaXMuZGlhbGVjdC5hZ2dyZWdhdGlvblBpcGVsaW5lKGVudGl0eSwgcSk7XG4gICAgICB0aGlzLmV4dHJhPy5sb2dnZXIoJ2ZpbmRNYW55JywgZW50aXR5Lm5hbWUsIEpTT04uc3RyaW5naWZ5KHBpcGVsaW5lLCBudWxsLCAyKSk7XG4gICAgICBkb2N1bWVudHMgPSBhd2FpdCB0aGlzLmV4ZWN1dGUoKHNlc3Npb24pID0+XG4gICAgICAgIHRoaXMuY29sbGVjdGlvbihlbnRpdHkpLmFnZ3JlZ2F0ZTxFPihwaXBlbGluZSwgeyBzZXNzaW9uIH0pLnRvQXJyYXkoKSxcbiAgICAgICk7XG4gICAgICBkb2N1bWVudHMgPSB0aGlzLmRpYWxlY3Qubm9ybWFsaXplSWRzKG1ldGEsIGRvY3VtZW50cykgYXMgRVtdO1xuICAgICAgYXdhaXQgdGhpcy5maWxsVG9NYW55UmVsYXRpb25zKGVudGl0eSwgZG9jdW1lbnRzLCBxLiRzZWxlY3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjdXJzb3IgPSB0aGlzLmNvbGxlY3Rpb24oZW50aXR5KS5maW5kPEU+KHt9LCB7IHNlc3Npb246IHRoaXMuc2Vzc2lvbiB9KTtcblxuICAgICAgY29uc3QgZmlsdGVyID0gdGhpcy5kaWFsZWN0LndoZXJlKGVudGl0eSwgcS4kd2hlcmUpO1xuICAgICAgaWYgKGhhc0tleXMoZmlsdGVyKSkge1xuICAgICAgICBjdXJzb3IuZmlsdGVyKGZpbHRlcik7XG4gICAgICB9XG4gICAgICBjb25zdCBzZWxlY3QgPSB0aGlzLmRpYWxlY3Quc2VsZWN0KGVudGl0eSwgcS4kc2VsZWN0KTtcbiAgICAgIGlmIChoYXNLZXlzKHNlbGVjdCkpIHtcbiAgICAgICAgY3Vyc29yLnByb2plY3Qoc2VsZWN0KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNvcnQgPSB0aGlzLmRpYWxlY3Quc29ydChlbnRpdHksIHEuJHNvcnQpO1xuICAgICAgaWYgKGhhc0tleXMoc29ydCkpIHtcbiAgICAgICAgY3Vyc29yLnNvcnQoc29ydCk7XG4gICAgICB9XG4gICAgICBpZiAocS4kc2tpcCkge1xuICAgICAgICBjdXJzb3Iuc2tpcChxLiRza2lwKTtcbiAgICAgIH1cbiAgICAgIGlmIChxLiRsaW1pdCkge1xuICAgICAgICBjdXJzb3IubGltaXQocS4kbGltaXQpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmV4dHJhPy5sb2dnZXI/LignZmluZE1hbnknLCBlbnRpdHkubmFtZSwgcSk7XG5cbiAgICAgIGRvY3VtZW50cyA9IGF3YWl0IHRoaXMuZXhlY3V0ZSgoKSA9PiBjdXJzb3IudG9BcnJheSgpIGFzIFByb21pc2U8RVtdPik7XG4gICAgICBkb2N1bWVudHMgPSB0aGlzLmRpYWxlY3Qubm9ybWFsaXplSWRzKG1ldGEsIGRvY3VtZW50cykgYXMgRVtdO1xuICAgIH1cblxuICAgIHJldHVybiBkb2N1bWVudHM7XG4gIH1cblxuICBvdmVycmlkZSBjb3VudDxFIGV4dGVuZHMgRG9jdW1lbnQ+KGVudGl0eTogVHlwZTxFPiwgcW06IFF1ZXJ5U2VhcmNoPEU+ID0ge30pIHtcbiAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLmRpYWxlY3Qud2hlcmUoZW50aXR5LCBxbS4kd2hlcmUpO1xuICAgIHRoaXMuZXh0cmE/LmxvZ2dlcj8uKCdjb3VudCcsIGVudGl0eS5uYW1lLCBmaWx0ZXIpO1xuICAgIHJldHVybiB0aGlzLmV4ZWN1dGUoKHNlc3Npb24pID0+XG4gICAgICB0aGlzLmNvbGxlY3Rpb24oZW50aXR5KS5jb3VudERvY3VtZW50cyhmaWx0ZXIsIHtcbiAgICAgICAgc2Vzc2lvbixcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBpbnNlcnRNYW55PEUgZXh0ZW5kcyBEb2N1bWVudD4oZW50aXR5OiBUeXBlPEU+LCBwYXlsb2FkczogRVtdKSB7XG4gICAgaWYgKCFwYXlsb2Fkcz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcGF5bG9hZHMgPSBjbG9uZShwYXlsb2Fkcyk7XG5cbiAgICBjb25zdCBtZXRhID0gZ2V0TWV0YShlbnRpdHkpO1xuICAgIGNvbnN0IHBlcnNpc3RhYmxlcyA9IHRoaXMuZGlhbGVjdC5nZXRQZXJzaXN0YWJsZXMobWV0YSwgcGF5bG9hZHMsICdvbkluc2VydCcpIGFzIE9wdGlvbmFsVW5sZXNzUmVxdWlyZWRJZDxFPltdO1xuXG4gICAgdGhpcy5leHRyYT8ubG9nZ2VyPy4oJ2luc2VydE1hbnknLCBlbnRpdHkubmFtZSwgcGVyc2lzdGFibGVzKTtcblxuICAgIGNvbnN0IHsgaW5zZXJ0ZWRJZHMgfSA9IGF3YWl0IHRoaXMuZXhlY3V0ZSgoc2Vzc2lvbikgPT5cbiAgICAgIHRoaXMuY29sbGVjdGlvbihlbnRpdHkpLmluc2VydE1hbnkocGVyc2lzdGFibGVzLCB7IHNlc3Npb24gfSksXG4gICAgKTtcblxuICAgIGNvbnN0IGlkcyA9IE9iamVjdC52YWx1ZXMoaW5zZXJ0ZWRJZHMpIGFzIHVua25vd24gYXMgSWRWYWx1ZTxFPltdO1xuXG4gICAgZm9yIChjb25zdCBbaW5kZXgsIGl0XSBvZiBwYXlsb2Fkcy5lbnRyaWVzKCkpIHtcbiAgICAgIGl0W21ldGEuaWRdID0gaWRzW2luZGV4XTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLmluc2VydFJlbGF0aW9ucyhlbnRpdHksIHBheWxvYWRzKTtcblxuICAgIHJldHVybiBpZHM7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyB1cGRhdGVNYW55PEUgZXh0ZW5kcyBEb2N1bWVudD4oZW50aXR5OiBUeXBlPEU+LCBxbTogUXVlcnlTZWFyY2g8RT4sIHBheWxvYWQ6IEUpIHtcbiAgICBwYXlsb2FkID0gY2xvbmUocGF5bG9hZCk7XG4gICAgY29uc3QgbWV0YSA9IGdldE1ldGEoZW50aXR5KTtcbiAgICBjb25zdCBwZXJzaXN0YWJsZSA9IHRoaXMuZGlhbGVjdC5nZXRQZXJzaXN0YWJsZShtZXRhLCBwYXlsb2FkLCAnb25VcGRhdGUnKTtcbiAgICBjb25zdCB3aGVyZSA9IHRoaXMuZGlhbGVjdC53aGVyZShlbnRpdHksIHFtLiR3aGVyZSk7XG4gICAgY29uc3QgdXBkYXRlID0geyAkc2V0OiBwZXJzaXN0YWJsZSB9IHNhdGlzZmllcyBVcGRhdGVGaWx0ZXI8RT47XG5cbiAgICB0aGlzLmV4dHJhPy5sb2dnZXI/LigndXBkYXRlTWFueScsIGVudGl0eS5uYW1lLCB3aGVyZSwgdXBkYXRlKTtcblxuICAgIGNvbnN0IHsgbWF0Y2hlZENvdW50IH0gPSBhd2FpdCB0aGlzLmV4ZWN1dGUoKHNlc3Npb24pID0+XG4gICAgICB0aGlzLmNvbGxlY3Rpb24oZW50aXR5KS51cGRhdGVNYW55KHdoZXJlLCB1cGRhdGUsIHtcbiAgICAgICAgc2Vzc2lvbixcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBhd2FpdCB0aGlzLnVwZGF0ZVJlbGF0aW9ucyhlbnRpdHksIHFtLCBwYXlsb2FkKTtcblxuICAgIHJldHVybiBtYXRjaGVkQ291bnQ7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyB1cHNlcnRPbmU8RSBleHRlbmRzIERvY3VtZW50PihlbnRpdHk6IFR5cGU8RT4sIGNvbmZsaWN0UGF0aHM6IFF1ZXJ5Q29uZmxpY3RQYXRoczxFPiwgcGF5bG9hZDogRSkge1xuICAgIHBheWxvYWQgPSBjbG9uZShwYXlsb2FkKTtcblxuICAgIGNvbnN0IG1ldGEgPSBnZXRNZXRhKGVudGl0eSk7XG4gICAgY29uc3QgcGVyc2lzdGFibGUgPSB0aGlzLmRpYWxlY3QuZ2V0UGVyc2lzdGFibGUobWV0YSwgcGF5bG9hZCwgJ29uSW5zZXJ0JykgYXMgT3B0aW9uYWxVbmxlc3NSZXF1aXJlZElkPEU+O1xuXG4gICAgdGhpcy5leHRyYT8ubG9nZ2VyPy4oJ3Vwc2VydE9uZScsIGVudGl0eS5uYW1lLCBwZXJzaXN0YWJsZSk7XG5cbiAgICBjb25zdCB3aGVyZSA9IGdldEtleXMoY29uZmxpY3RQYXRocykucmVkdWNlKFxuICAgICAgKGFjYywga2V5KSA9PiB7XG4gICAgICAgIGFjY1trZXldID0gcGF5bG9hZFtrZXldO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIHt9IGFzIFF1ZXJ5V2hlcmU8RT4sXG4gICAgKTtcblxuICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuZGlhbGVjdC53aGVyZShlbnRpdHksIHdoZXJlKTtcblxuICAgIGNvbnN0IHVwZGF0ZSA9IHsgJHNldDogcGVyc2lzdGFibGUgfSBhcyBVcGRhdGVGaWx0ZXI8RT47XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmV4ZWN1dGUoKHNlc3Npb24pID0+XG4gICAgICB0aGlzLmNvbGxlY3Rpb24oZW50aXR5KS5maW5kT25lQW5kVXBkYXRlKGZpbHRlciwgdXBkYXRlLCB7XG4gICAgICAgIHVwc2VydDogdHJ1ZSxcbiAgICAgICAgc2Vzc2lvbixcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBjb25zdCBmaXJzdElkID0gcmVzPy5faWQgYXMgdW5rbm93biBhcyBzdHJpbmc7XG5cbiAgICByZXR1cm4geyBmaXJzdElkLCBjaGFuZ2VzOiBmaXJzdElkID8gMSA6IDAgfTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIGRlbGV0ZU1hbnk8RSBleHRlbmRzIERvY3VtZW50PihlbnRpdHk6IFR5cGU8RT4sIHFtOiBRdWVyeVNlYXJjaDxFPiwgb3B0czogUXVlcnlPcHRpb25zID0ge30pIHtcbiAgICBjb25zdCBtZXRhID0gZ2V0TWV0YShlbnRpdHkpO1xuICAgIGNvbnN0IHdoZXJlID0gdGhpcy5kaWFsZWN0LndoZXJlKGVudGl0eSwgcW0uJHdoZXJlKTtcbiAgICB0aGlzLmV4dHJhPy5sb2dnZXI/LignZGVsZXRlTWFueScsIGVudGl0eS5uYW1lLCB3aGVyZSwgb3B0cyk7XG4gICAgY29uc3QgZm91bmRzID0gYXdhaXQgdGhpcy5leGVjdXRlKChzZXNzaW9uKSA9PlxuICAgICAgdGhpcy5jb2xsZWN0aW9uKGVudGl0eSlcbiAgICAgICAgLmZpbmQod2hlcmUsIHtcbiAgICAgICAgICBwcm9qZWN0aW9uOiB7IF9pZDogdHJ1ZSB9LFxuICAgICAgICAgIHNlc3Npb24sXG4gICAgICAgIH0pXG4gICAgICAgIC50b0FycmF5KCksXG4gICAgKTtcbiAgICBpZiAoIWZvdW5kcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBjb25zdCBpZHMgPSB0aGlzLmRpYWxlY3Qubm9ybWFsaXplSWRzKG1ldGEsIGZvdW5kcyBhcyB1bmtub3duIGFzIEVbXSkubWFwKChmb3VuZCkgPT4gZm91bmRbbWV0YS5pZF0pO1xuICAgIGxldCBjaGFuZ2VzOiBudW1iZXI7XG4gICAgaWYgKG1ldGEuc29mdERlbGV0ZSAmJiAhb3B0cy5zb2Z0RGVsZXRlKSB7XG4gICAgICBjb25zdCBvbkRlbGV0ZVZhbHVlID0gZ2V0RmllbGRDYWxsYmFja1ZhbHVlKG1ldGEuZmllbGRzW21ldGEuc29mdERlbGV0ZV0ub25EZWxldGUpO1xuICAgICAgY29uc3QgdXBkYXRlUmVzdWx0ID0gYXdhaXQgdGhpcy5leGVjdXRlKChzZXNzaW9uKSA9PlxuICAgICAgICB0aGlzLmNvbGxlY3Rpb24oZW50aXR5KS51cGRhdGVNYW55KFxuICAgICAgICAgIHsgX2lkOiB7ICRpbjogaWRzIH0gfSxcbiAgICAgICAgICB7ICRzZXQ6IHsgW21ldGEuc29mdERlbGV0ZV06IG9uRGVsZXRlVmFsdWUgfSB9IGFzIFVwZGF0ZUZpbHRlcjxFPixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZXNzaW9uLFxuICAgICAgICAgIH0sXG4gICAgICAgICksXG4gICAgICApO1xuICAgICAgY2hhbmdlcyA9IHVwZGF0ZVJlc3VsdC5tYXRjaGVkQ291bnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGRlbGV0ZVJlc3VsdCA9IGF3YWl0IHRoaXMuZXhlY3V0ZSgoc2Vzc2lvbikgPT5cbiAgICAgICAgdGhpcy5jb2xsZWN0aW9uKGVudGl0eSkuZGVsZXRlTWFueSh7IF9pZDogeyAkaW46IGlkcyB9IH0sIHsgc2Vzc2lvbiB9KSxcbiAgICAgICk7XG4gICAgICBjaGFuZ2VzID0gZGVsZXRlUmVzdWx0LmRlbGV0ZWRDb3VudDtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5kZWxldGVSZWxhdGlvbnMoZW50aXR5LCBpZHMsIG9wdHMpO1xuICAgIHJldHVybiBjaGFuZ2VzO1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0IGhhc09wZW5UcmFuc2FjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uPy5pblRyYW5zYWN0aW9uKCk7XG4gIH1cblxuICBjb2xsZWN0aW9uPEUgZXh0ZW5kcyBEb2N1bWVudD4oZW50aXR5OiBUeXBlPEU+KSB7XG4gICAgY29uc3QgeyBuYW1lIH0gPSBnZXRNZXRhKGVudGl0eSk7XG4gICAgcmV0dXJuIHRoaXMuZGIuY29sbGVjdGlvbjxFPihuYW1lKTtcbiAgfVxuXG4gIGdldCBkYigpIHtcbiAgICByZXR1cm4gdGhpcy5jb25uLmRiKCk7XG4gIH1cblxuICBAU2VyaWFsaXplZCgpXG4gIG92ZXJyaWRlIGFzeW5jIGJlZ2luVHJhbnNhY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuaGFzT3BlblRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBUeXBlRXJyb3IoJ3BlbmRpbmcgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgdGhpcy5leHRyYT8ubG9nZ2VyPy4oJ2JlZ2luVHJhbnNhY3Rpb24nKTtcbiAgICBhd2FpdCB0aGlzLnNlc3Npb24/LmVuZFNlc3Npb24oKTtcbiAgICB0aGlzLnNlc3Npb24gPSB0aGlzLmNvbm4uc3RhcnRTZXNzaW9uKCk7XG4gICAgdGhpcy5zZXNzaW9uLnN0YXJ0VHJhbnNhY3Rpb24oKTtcbiAgfVxuXG4gIEBTZXJpYWxpemVkKClcbiAgb3ZlcnJpZGUgYXN5bmMgY29tbWl0VHJhbnNhY3Rpb24oKSB7XG4gICAgaWYgKCF0aGlzLmhhc09wZW5UcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgVHlwZUVycm9yKCdub3QgYSBwZW5kaW5nIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIHRoaXMuZXh0cmE/LmxvZ2dlcj8uKCdjb21taXRUcmFuc2FjdGlvbicpO1xuICAgIGF3YWl0IHRoaXMuc2Vzc2lvbi5jb21taXRUcmFuc2FjdGlvbigpO1xuICB9XG5cbiAgQFNlcmlhbGl6ZWQoKVxuICBvdmVycmlkZSBhc3luYyByb2xsYmFja1RyYW5zYWN0aW9uKCkge1xuICAgIGlmICghdGhpcy5oYXNPcGVuVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IFR5cGVFcnJvcignbm90IGEgcGVuZGluZyB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICB0aGlzLmV4dHJhPy5sb2dnZXI/Ligncm9sbGJhY2tUcmFuc2FjdGlvbicpO1xuICAgIGF3YWl0IHRoaXMuc2Vzc2lvbi5hYm9ydFRyYW5zYWN0aW9uKCk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBpbnRlcm5hbFJlbGVhc2UoKSB7XG4gICAgaWYgKHRoaXMuaGFzT3BlblRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBUeXBlRXJyb3IoJ3BlbmRpbmcgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5zZXNzaW9uPy5lbmRTZXNzaW9uKCk7XG4gICAgdGhpcy5zZXNzaW9uID0gdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { MongoMemoryReplSet } from 'mongodb-memory-server';
|
|
2
|
+
import { getEntities, getMeta } from '../entity/index.js';
|
|
3
|
+
import { AbstractQuerierIt } from '../querier/abstractQuerier-test.js';
|
|
4
|
+
import { createSpec } from '../test/index.js';
|
|
5
|
+
import { MongodbQuerierPool } from './mongodbQuerierPool.js';
|
|
6
|
+
class MongodbQuerierIt extends AbstractQuerierIt {
|
|
7
|
+
static replSet;
|
|
8
|
+
constructor() {
|
|
9
|
+
super(new MongodbQuerierPool('mongodb://127.0.0.1:27017/test'));
|
|
10
|
+
}
|
|
11
|
+
async beforeAll() {
|
|
12
|
+
MongodbQuerierIt.replSet = await MongoMemoryReplSet.create({
|
|
13
|
+
replSet: { count: 1, storageEngine: 'wiredTiger' },
|
|
14
|
+
});
|
|
15
|
+
const uri = MongodbQuerierIt.replSet.getUri();
|
|
16
|
+
this.pool = new MongodbQuerierPool(uri);
|
|
17
|
+
await super.beforeAll();
|
|
18
|
+
}
|
|
19
|
+
async afterAll() {
|
|
20
|
+
await super.afterAll();
|
|
21
|
+
await this.pool.end();
|
|
22
|
+
await MongodbQuerierIt.replSet.stop();
|
|
23
|
+
}
|
|
24
|
+
async createTables() {
|
|
25
|
+
const entities = getEntities();
|
|
26
|
+
await Promise.all(entities.map((entity) => {
|
|
27
|
+
const meta = getMeta(entity);
|
|
28
|
+
return this.querier.conn.db().createCollection(meta.name);
|
|
29
|
+
}));
|
|
30
|
+
}
|
|
31
|
+
async dropTables() {
|
|
32
|
+
await this.querier.conn.db().dropDatabase();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
createSpec(new MongodbQuerierIt());
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZ29kYlF1ZXJpZXIudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb25nby9tb25nb2RiUXVlcmllci50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTdELE1BQU0sZ0JBQWlCLFNBQVEsaUJBQWlDO0lBQzlELE1BQU0sQ0FBQyxPQUFPLENBQXFCO0lBRW5DO1FBQ0UsS0FBSyxDQUFDLElBQUksa0JBQWtCLENBQUMsZ0NBQWdDLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFUSxLQUFLLENBQUMsU0FBUztRQUN0QixnQkFBZ0IsQ0FBQyxPQUFPLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7WUFDekQsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFO1NBQ25ELENBQUMsQ0FBQztRQUNILE1BQU0sR0FBRyxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM5QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEMsTUFBTSxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVRLEtBQUssQ0FBQyxRQUFRO1FBQ3JCLE1BQU0sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN0QixNQUFNLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRVEsS0FBSyxDQUFDLFlBQVk7UUFDekIsTUFBTSxRQUFRLEdBQUcsV0FBVyxFQUFFLENBQUM7UUFDL0IsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUN0QixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDN0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUQsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFUSxLQUFLLENBQUMsVUFBVTtRQUN2QixNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzlDLENBQUM7Q0FDRjtBQUVELFVBQVUsQ0FBQyxJQUFJLGdCQUFnQixFQUFFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vbmdvTWVtb3J5UmVwbFNldCB9IGZyb20gJ21vbmdvZGItbWVtb3J5LXNlcnZlcic7XG5pbXBvcnQgeyBnZXRFbnRpdGllcywgZ2V0TWV0YSB9IGZyb20gJy4uL2VudGl0eS9pbmRleC5qcyc7XG5pbXBvcnQgeyBBYnN0cmFjdFF1ZXJpZXJJdCB9IGZyb20gJy4uL3F1ZXJpZXIvYWJzdHJhY3RRdWVyaWVyLXRlc3QuanMnO1xuaW1wb3J0IHsgY3JlYXRlU3BlYyB9IGZyb20gJy4uL3Rlc3QvaW5kZXguanMnO1xuaW1wb3J0IHR5cGUgeyBNb25nb2RiUXVlcmllciB9IGZyb20gJy4vbW9uZ29kYlF1ZXJpZXIuanMnO1xuaW1wb3J0IHsgTW9uZ29kYlF1ZXJpZXJQb29sIH0gZnJvbSAnLi9tb25nb2RiUXVlcmllclBvb2wuanMnO1xuXG5jbGFzcyBNb25nb2RiUXVlcmllckl0IGV4dGVuZHMgQWJzdHJhY3RRdWVyaWVySXQ8TW9uZ29kYlF1ZXJpZXI+IHtcbiAgc3RhdGljIHJlcGxTZXQ6IE1vbmdvTWVtb3J5UmVwbFNldDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihuZXcgTW9uZ29kYlF1ZXJpZXJQb29sKCdtb25nb2RiOi8vMTI3LjAuMC4xOjI3MDE3L3Rlc3QnKSk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBiZWZvcmVBbGwoKSB7XG4gICAgTW9uZ29kYlF1ZXJpZXJJdC5yZXBsU2V0ID0gYXdhaXQgTW9uZ29NZW1vcnlSZXBsU2V0LmNyZWF0ZSh7XG4gICAgICByZXBsU2V0OiB7IGNvdW50OiAxLCBzdG9yYWdlRW5naW5lOiAnd2lyZWRUaWdlcicgfSxcbiAgICB9KTtcbiAgICBjb25zdCB1cmkgPSBNb25nb2RiUXVlcmllckl0LnJlcGxTZXQuZ2V0VXJpKCk7XG4gICAgdGhpcy5wb29sID0gbmV3IE1vbmdvZGJRdWVyaWVyUG9vbCh1cmkpO1xuICAgIGF3YWl0IHN1cGVyLmJlZm9yZUFsbCgpO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgYWZ0ZXJBbGwoKSB7XG4gICAgYXdhaXQgc3VwZXIuYWZ0ZXJBbGwoKTtcbiAgICBhd2FpdCB0aGlzLnBvb2wuZW5kKCk7XG4gICAgYXdhaXQgTW9uZ29kYlF1ZXJpZXJJdC5yZXBsU2V0LnN0b3AoKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIGNyZWF0ZVRhYmxlcygpIHtcbiAgICBjb25zdCBlbnRpdGllcyA9IGdldEVudGl0aWVzKCk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBlbnRpdGllcy5tYXAoKGVudGl0eSkgPT4ge1xuICAgICAgICBjb25zdCBtZXRhID0gZ2V0TWV0YShlbnRpdHkpO1xuICAgICAgICByZXR1cm4gdGhpcy5xdWVyaWVyLmNvbm4uZGIoKS5jcmVhdGVDb2xsZWN0aW9uKG1ldGEubmFtZSk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgZHJvcFRhYmxlcygpIHtcbiAgICBhd2FpdCB0aGlzLnF1ZXJpZXIuY29ubi5kYigpLmRyb3BEYXRhYmFzZSgpO1xuICB9XG59XG5cbmNyZWF0ZVNwZWMobmV3IE1vbmdvZGJRdWVyaWVySXQoKSk7XG4iXX0=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type MongoClientOptions } from 'mongodb';
|
|
2
|
+
import { AbstractQuerierPool } from '../querier/index.js';
|
|
3
|
+
import type { ExtraOptions } from '../type/index.js';
|
|
4
|
+
import { MongodbQuerier } from './mongodbQuerier.js';
|
|
5
|
+
export declare class MongodbQuerierPool extends AbstractQuerierPool<MongodbQuerier> {
|
|
6
|
+
private readonly client;
|
|
7
|
+
constructor(uri: string, opts?: MongoClientOptions, extra?: ExtraOptions);
|
|
8
|
+
getQuerier(): Promise<MongodbQuerier>;
|
|
9
|
+
end(): Promise<void>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { MongoClient } from 'mongodb';
|
|
2
|
+
import { AbstractQuerierPool } from '../querier/index.js';
|
|
3
|
+
import { MongoDialect } from './mongoDialect.js';
|
|
4
|
+
import { MongodbQuerier } from './mongodbQuerier.js';
|
|
5
|
+
export class MongodbQuerierPool extends AbstractQuerierPool {
|
|
6
|
+
client;
|
|
7
|
+
constructor(uri, opts, extra) {
|
|
8
|
+
super('mongodb', extra);
|
|
9
|
+
this.client = new MongoClient(uri, opts);
|
|
10
|
+
}
|
|
11
|
+
async getQuerier() {
|
|
12
|
+
const conn = await this.client.connect();
|
|
13
|
+
const querier = new MongodbQuerier(new MongoDialect(), conn, this.extra);
|
|
14
|
+
return querier;
|
|
15
|
+
}
|
|
16
|
+
async end() {
|
|
17
|
+
await this.client.close();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZ29kYlF1ZXJpZXJQb29sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vbmdvL21vbmdvZGJRdWVyaWVyUG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUEyQixNQUFNLFNBQVMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXJELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxtQkFBbUM7SUFDeEQsTUFBTSxDQUFjO0lBRXJDLFlBQVksR0FBVyxFQUFFLElBQXlCLEVBQUUsS0FBb0I7UUFDdEUsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksV0FBVyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVU7UUFDZCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDekMsTUFBTSxPQUFPLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pFLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM1QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb25nb0NsaWVudCwgdHlwZSBNb25nb0NsaWVudE9wdGlvbnMgfSBmcm9tICdtb25nb2RiJztcbmltcG9ydCB7IEFic3RyYWN0UXVlcmllclBvb2wgfSBmcm9tICcuLi9xdWVyaWVyL2luZGV4LmpzJztcbmltcG9ydCB0eXBlIHsgRXh0cmFPcHRpb25zIH0gZnJvbSAnLi4vdHlwZS9pbmRleC5qcyc7XG5pbXBvcnQgeyBNb25nb0RpYWxlY3QgfSBmcm9tICcuL21vbmdvRGlhbGVjdC5qcyc7XG5pbXBvcnQgeyBNb25nb2RiUXVlcmllciB9IGZyb20gJy4vbW9uZ29kYlF1ZXJpZXIuanMnO1xuXG5leHBvcnQgY2xhc3MgTW9uZ29kYlF1ZXJpZXJQb29sIGV4dGVuZHMgQWJzdHJhY3RRdWVyaWVyUG9vbDxNb25nb2RiUXVlcmllcj4ge1xuICBwcml2YXRlIHJlYWRvbmx5IGNsaWVudDogTW9uZ29DbGllbnQ7XG5cbiAgY29uc3RydWN0b3IodXJpOiBzdHJpbmcsIG9wdHM/OiBNb25nb0NsaWVudE9wdGlvbnMsIGV4dHJhPzogRXh0cmFPcHRpb25zKSB7XG4gICAgc3VwZXIoJ21vbmdvZGInLCBleHRyYSk7XG4gICAgdGhpcy5jbGllbnQgPSBuZXcgTW9uZ29DbGllbnQodXJpLCBvcHRzKTtcbiAgfVxuXG4gIGFzeW5jIGdldFF1ZXJpZXIoKSB7XG4gICAgY29uc3QgY29ubiA9IGF3YWl0IHRoaXMuY2xpZW50LmNvbm5lY3QoKTtcbiAgICBjb25zdCBxdWVyaWVyID0gbmV3IE1vbmdvZGJRdWVyaWVyKG5ldyBNb25nb0RpYWxlY3QoKSwgY29ubiwgdGhpcy5leHRyYSk7XG4gICAgcmV0dXJuIHF1ZXJpZXI7XG4gIH1cblxuICBhc3luYyBlbmQoKSB7XG4gICAgYXdhaXQgdGhpcy5jbGllbnQuY2xvc2UoKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { MongoMemoryReplSet } from 'mongodb-memory-server';
|
|
2
|
+
import { AbstractQuerierPoolIt } from '../querier/abstractQuerierPool-test.js';
|
|
3
|
+
import { createSpec } from '../test/index.js';
|
|
4
|
+
import { MongodbQuerierPool } from './mongodbQuerierPool.js';
|
|
5
|
+
class MongodbQuerierPoolIt extends AbstractQuerierPoolIt {
|
|
6
|
+
static replSet;
|
|
7
|
+
async beforeAll() {
|
|
8
|
+
MongodbQuerierPoolIt.replSet = await MongoMemoryReplSet.create({
|
|
9
|
+
replSet: { count: 1, storageEngine: 'wiredTiger' },
|
|
10
|
+
});
|
|
11
|
+
const uri = MongodbQuerierPoolIt.replSet.getUri();
|
|
12
|
+
this.pool = new MongodbQuerierPool(uri);
|
|
13
|
+
}
|
|
14
|
+
async afterAll() {
|
|
15
|
+
await super.afterAll();
|
|
16
|
+
await this.pool.end();
|
|
17
|
+
await MongodbQuerierPoolIt.replSet.stop();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
createSpec(new MongodbQuerierPoolIt(new MongodbQuerierPool('mongodb://127.0.0.1:27017/test')));
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZ29kYlF1ZXJpZXJQb29sLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9uZ28vbW9uZ29kYlF1ZXJpZXJQb29sLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTdELE1BQU0sb0JBQXFCLFNBQVEscUJBQXFDO0lBQ3RFLE1BQU0sQ0FBQyxPQUFPLENBQXFCO0lBRW5DLEtBQUssQ0FBQyxTQUFTO1FBQ2Isb0JBQW9CLENBQUMsT0FBTyxHQUFHLE1BQU0sa0JBQWtCLENBQUMsTUFBTSxDQUFDO1lBQzdELE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRTtTQUNuRCxDQUFDLENBQUM7UUFDSCxNQUFNLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFUSxLQUFLLENBQUMsUUFBUTtRQUNyQixNQUFNLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2QixNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDdEIsTUFBTSxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUMsQ0FBQztDQUNGO0FBRUQsVUFBVSxDQUFDLElBQUksb0JBQW9CLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vbmdvTWVtb3J5UmVwbFNldCB9IGZyb20gJ21vbmdvZGItbWVtb3J5LXNlcnZlcic7XG5pbXBvcnQgeyBBYnN0cmFjdFF1ZXJpZXJQb29sSXQgfSBmcm9tICcuLi9xdWVyaWVyL2Fic3RyYWN0UXVlcmllclBvb2wtdGVzdC5qcyc7XG5pbXBvcnQgeyBjcmVhdGVTcGVjIH0gZnJvbSAnLi4vdGVzdC9pbmRleC5qcyc7XG5pbXBvcnQgdHlwZSB7IE1vbmdvZGJRdWVyaWVyIH0gZnJvbSAnLi9tb25nb2RiUXVlcmllci5qcyc7XG5pbXBvcnQgeyBNb25nb2RiUXVlcmllclBvb2wgfSBmcm9tICcuL21vbmdvZGJRdWVyaWVyUG9vbC5qcyc7XG5cbmNsYXNzIE1vbmdvZGJRdWVyaWVyUG9vbEl0IGV4dGVuZHMgQWJzdHJhY3RRdWVyaWVyUG9vbEl0PE1vbmdvZGJRdWVyaWVyPiB7XG4gIHN0YXRpYyByZXBsU2V0OiBNb25nb01lbW9yeVJlcGxTZXQ7XG5cbiAgYXN5bmMgYmVmb3JlQWxsKCkge1xuICAgIE1vbmdvZGJRdWVyaWVyUG9vbEl0LnJlcGxTZXQgPSBhd2FpdCBNb25nb01lbW9yeVJlcGxTZXQuY3JlYXRlKHtcbiAgICAgIHJlcGxTZXQ6IHsgY291bnQ6IDEsIHN0b3JhZ2VFbmdpbmU6ICd3aXJlZFRpZ2VyJyB9LFxuICAgIH0pO1xuICAgIGNvbnN0IHVyaSA9IE1vbmdvZGJRdWVyaWVyUG9vbEl0LnJlcGxTZXQuZ2V0VXJpKCk7XG4gICAgdGhpcy5wb29sID0gbmV3IE1vbmdvZGJRdWVyaWVyUG9vbCh1cmkpO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgYWZ0ZXJBbGwoKSB7XG4gICAgYXdhaXQgc3VwZXIuYWZ0ZXJBbGwoKTtcbiAgICBhd2FpdCB0aGlzLnBvb2wuZW5kKCk7XG4gICAgYXdhaXQgTW9uZ29kYlF1ZXJpZXJQb29sSXQucmVwbFNldC5zdG9wKCk7XG4gIH1cbn1cblxuY3JlYXRlU3BlYyhuZXcgTW9uZ29kYlF1ZXJpZXJQb29sSXQobmV3IE1vbmdvZGJRdWVyaWVyUG9vbCgnbW9uZ29kYjovLzEyNy4wLjAuMToyNzAxNy90ZXN0JykpKTtcbiJdfQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './mysql2Querier.js';
|
|
2
|
+
export * from './mysql2QuerierPool.js';
|
|
3
|
+
export * from './mysqlDialect.js';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbXlzcWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL215c3FsMlF1ZXJpZXIuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9teXNxbDJRdWVyaWVyUG9vbC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL215c3FsRGlhbGVjdC5qcyc7XG4iXX0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { PoolConnection } from 'mysql2/promise';
|
|
2
|
+
import { AbstractSqlQuerier } from '../querier/index.js';
|
|
3
|
+
import type { ExtraOptions } from '../type/index.js';
|
|
4
|
+
export declare class MySql2Querier extends AbstractSqlQuerier {
|
|
5
|
+
readonly connect: () => Promise<PoolConnection>;
|
|
6
|
+
readonly extra?: ExtraOptions;
|
|
7
|
+
conn: PoolConnection;
|
|
8
|
+
constructor(connect: () => Promise<PoolConnection>, extra?: ExtraOptions);
|
|
9
|
+
internalAll<T>(query: string, values?: unknown[]): Promise<T[]>;
|
|
10
|
+
internalRun(query: string, values?: unknown[]): Promise<{
|
|
11
|
+
changes: any;
|
|
12
|
+
ids: any[];
|
|
13
|
+
firstId: any;
|
|
14
|
+
}>;
|
|
15
|
+
lazyConnect(): Promise<void>;
|
|
16
|
+
internalRelease(): Promise<void>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { AbstractSqlQuerier } from '../querier/index.js';
|
|
2
|
+
import { MySqlDialect } from './mysqlDialect.js';
|
|
3
|
+
export class MySql2Querier extends AbstractSqlQuerier {
|
|
4
|
+
connect;
|
|
5
|
+
extra;
|
|
6
|
+
conn;
|
|
7
|
+
constructor(connect, extra) {
|
|
8
|
+
super(new MySqlDialect(extra?.namingStrategy));
|
|
9
|
+
this.connect = connect;
|
|
10
|
+
this.extra = extra;
|
|
11
|
+
}
|
|
12
|
+
async internalAll(query, values) {
|
|
13
|
+
this.extra?.logger?.(query, values);
|
|
14
|
+
await this.lazyConnect();
|
|
15
|
+
const [res] = await this.conn.query(query, values);
|
|
16
|
+
return res;
|
|
17
|
+
}
|
|
18
|
+
async internalRun(query, values) {
|
|
19
|
+
this.extra?.logger?.(query, values);
|
|
20
|
+
await this.lazyConnect();
|
|
21
|
+
const [res] = await this.conn.query(query, values);
|
|
22
|
+
const ids = res.insertId
|
|
23
|
+
? Array(res.affectedRows)
|
|
24
|
+
.fill(res.insertId)
|
|
25
|
+
.map((i, index) => i + index)
|
|
26
|
+
: [];
|
|
27
|
+
return { changes: res.affectedRows, ids, firstId: ids[0] };
|
|
28
|
+
}
|
|
29
|
+
async lazyConnect() {
|
|
30
|
+
this.conn ??= await this.connect();
|
|
31
|
+
}
|
|
32
|
+
async internalRelease() {
|
|
33
|
+
if (this.hasOpenTransaction) {
|
|
34
|
+
throw TypeError('pending transaction');
|
|
35
|
+
}
|
|
36
|
+
if (!this.conn) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
await this.conn.release();
|
|
40
|
+
this.conn = undefined;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXlzcWwyUXVlcmllci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9teXNxbC9teXNxbDJRdWVyaWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVqRCxNQUFNLE9BQU8sYUFBYyxTQUFRLGtCQUFrQjtJQUl4QztJQUNBO0lBSlgsSUFBSSxDQUFpQjtJQUVyQixZQUNXLE9BQXNDLEVBQ3RDLEtBQW9CO1FBRTdCLEtBQUssQ0FBQyxJQUFJLFlBQVksQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUh0QyxZQUFPLEdBQVAsT0FBTyxDQUErQjtRQUN0QyxVQUFLLEdBQUwsS0FBSyxDQUFlO0lBRy9CLENBQUM7SUFFUSxLQUFLLENBQUMsV0FBVyxDQUFJLEtBQWEsRUFBRSxNQUFrQjtRQUM3RCxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNwQyxNQUFNLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN6QixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbkQsT0FBTyxHQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVRLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBYSxFQUFFLE1BQWtCO1FBQzFELElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBUSxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN4RCxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsUUFBUTtZQUN0QixDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUM7aUJBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO2lCQUNsQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDUCxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQThCLENBQUM7SUFDekYsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXO1FBQ2YsSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRVEsS0FBSyxDQUFDLGVBQWU7UUFDNUIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUM1QixNQUFNLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2YsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7SUFDeEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQb29sQ29ubmVjdGlvbiB9IGZyb20gJ215c3FsMi9wcm9taXNlJztcbmltcG9ydCB7IEFic3RyYWN0U3FsUXVlcmllciB9IGZyb20gJy4uL3F1ZXJpZXIvaW5kZXguanMnO1xuaW1wb3J0IHR5cGUgeyBFeHRyYU9wdGlvbnMsIFF1ZXJ5VXBkYXRlUmVzdWx0IH0gZnJvbSAnLi4vdHlwZS9pbmRleC5qcyc7XG5pbXBvcnQgeyBNeVNxbERpYWxlY3QgfSBmcm9tICcuL215c3FsRGlhbGVjdC5qcyc7XG5cbmV4cG9ydCBjbGFzcyBNeVNxbDJRdWVyaWVyIGV4dGVuZHMgQWJzdHJhY3RTcWxRdWVyaWVyIHtcbiAgY29ubjogUG9vbENvbm5lY3Rpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgY29ubmVjdDogKCkgPT4gUHJvbWlzZTxQb29sQ29ubmVjdGlvbj4sXG4gICAgcmVhZG9ubHkgZXh0cmE/OiBFeHRyYU9wdGlvbnMsXG4gICkge1xuICAgIHN1cGVyKG5ldyBNeVNxbERpYWxlY3QoZXh0cmE/Lm5hbWluZ1N0cmF0ZWd5KSk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBpbnRlcm5hbEFsbDxUPihxdWVyeTogc3RyaW5nLCB2YWx1ZXM/OiB1bmtub3duW10pIHtcbiAgICB0aGlzLmV4dHJhPy5sb2dnZXI/LihxdWVyeSwgdmFsdWVzKTtcbiAgICBhd2FpdCB0aGlzLmxhenlDb25uZWN0KCk7XG4gICAgY29uc3QgW3Jlc10gPSBhd2FpdCB0aGlzLmNvbm4ucXVlcnkocXVlcnksIHZhbHVlcyk7XG4gICAgcmV0dXJuIHJlcyBhcyBUW107XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBpbnRlcm5hbFJ1bihxdWVyeTogc3RyaW5nLCB2YWx1ZXM/OiB1bmtub3duW10pIHtcbiAgICB0aGlzLmV4dHJhPy5sb2dnZXI/LihxdWVyeSwgdmFsdWVzKTtcbiAgICBhd2FpdCB0aGlzLmxhenlDb25uZWN0KCk7XG4gICAgY29uc3QgW3Jlc106IGFueSA9IGF3YWl0IHRoaXMuY29ubi5xdWVyeShxdWVyeSwgdmFsdWVzKTtcbiAgICBjb25zdCBpZHMgPSByZXMuaW5zZXJ0SWRcbiAgICAgID8gQXJyYXkocmVzLmFmZmVjdGVkUm93cylcbiAgICAgICAgICAuZmlsbChyZXMuaW5zZXJ0SWQpXG4gICAgICAgICAgLm1hcCgoaSwgaW5kZXgpID0+IGkgKyBpbmRleClcbiAgICAgIDogW107XG4gICAgcmV0dXJuIHsgY2hhbmdlczogcmVzLmFmZmVjdGVkUm93cywgaWRzLCBmaXJzdElkOiBpZHNbMF0gfSBzYXRpc2ZpZXMgUXVlcnlVcGRhdGVSZXN1bHQ7XG4gIH1cblxuICBhc3luYyBsYXp5Q29ubmVjdCgpIHtcbiAgICB0aGlzLmNvbm4gPz89IGF3YWl0IHRoaXMuY29ubmVjdCgpO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgaW50ZXJuYWxSZWxlYXNlKCkge1xuICAgIGlmICh0aGlzLmhhc09wZW5UcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgVHlwZUVycm9yKCdwZW5kaW5nIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5jb25uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IHRoaXMuY29ubi5yZWxlYXNlKCk7XG4gICAgdGhpcy5jb25uID0gdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AbstractSqlQuerierIt } from '../querier/abstractSqlQuerier-test.js';
|
|
2
|
+
import { createSpec } from '../test/index.js';
|
|
3
|
+
import { MySql2QuerierPool } from './mysql2QuerierPool.js';
|
|
4
|
+
export class MySql2QuerierIt extends AbstractSqlQuerierIt {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(new MySql2QuerierPool({
|
|
7
|
+
host: '0.0.0.0',
|
|
8
|
+
port: 3316,
|
|
9
|
+
user: 'test',
|
|
10
|
+
password: 'test',
|
|
11
|
+
database: 'test',
|
|
12
|
+
}), 'INT AUTO_INCREMENT PRIMARY KEY');
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
createSpec(new MySql2QuerierIt());
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXlzcWwyUXVlcmllci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL215c3FsL215c3FsMlF1ZXJpZXIudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFM0QsTUFBTSxPQUFPLGVBQWdCLFNBQVEsb0JBQW9CO0lBQ3ZEO1FBQ0UsS0FBSyxDQUNILElBQUksaUJBQWlCLENBQUM7WUFDcEIsSUFBSSxFQUFFLFNBQVM7WUFDZixJQUFJLEVBQUUsSUFBSTtZQUNWLElBQUksRUFBRSxNQUFNO1lBQ1osUUFBUSxFQUFFLE1BQU07WUFDaEIsUUFBUSxFQUFFLE1BQU07U0FDakIsQ0FBQyxFQUNGLGdDQUFnQyxDQUNqQyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBRUQsVUFBVSxDQUFDLElBQUksZUFBZSxFQUFFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0U3FsUXVlcmllckl0IH0gZnJvbSAnLi4vcXVlcmllci9hYnN0cmFjdFNxbFF1ZXJpZXItdGVzdC5qcyc7XG5pbXBvcnQgeyBjcmVhdGVTcGVjIH0gZnJvbSAnLi4vdGVzdC9pbmRleC5qcyc7XG5pbXBvcnQgeyBNeVNxbDJRdWVyaWVyUG9vbCB9IGZyb20gJy4vbXlzcWwyUXVlcmllclBvb2wuanMnO1xuXG5leHBvcnQgY2xhc3MgTXlTcWwyUXVlcmllckl0IGV4dGVuZHMgQWJzdHJhY3RTcWxRdWVyaWVySXQge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcbiAgICAgIG5ldyBNeVNxbDJRdWVyaWVyUG9vbCh7XG4gICAgICAgIGhvc3Q6ICcwLjAuMC4wJyxcbiAgICAgICAgcG9ydDogMzMxNixcbiAgICAgICAgdXNlcjogJ3Rlc3QnLFxuICAgICAgICBwYXNzd29yZDogJ3Rlc3QnLFxuICAgICAgICBkYXRhYmFzZTogJ3Rlc3QnLFxuICAgICAgfSksXG4gICAgICAnSU5UIEFVVE9fSU5DUkVNRU5UIFBSSU1BUlkgS0VZJyxcbiAgICApO1xuICB9XG59XG5cbmNyZWF0ZVNwZWMobmV3IE15U3FsMlF1ZXJpZXJJdCgpKTtcbiJdfQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type Pool, type PoolOptions } from 'mysql2/promise';
|
|
2
|
+
import { AbstractQuerierPool } from '../querier/index.js';
|
|
3
|
+
import type { ExtraOptions } from '../type/index.js';
|
|
4
|
+
import { MySql2Querier } from './mysql2Querier.js';
|
|
5
|
+
export declare class MySql2QuerierPool extends AbstractQuerierPool<MySql2Querier> {
|
|
6
|
+
readonly pool: Pool;
|
|
7
|
+
constructor(opts: PoolOptions, extra?: ExtraOptions);
|
|
8
|
+
getQuerier(): Promise<MySql2Querier>;
|
|
9
|
+
end(): Promise<void>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { createPool } from 'mysql2/promise';
|
|
2
|
+
import { AbstractQuerierPool } from '../querier/index.js';
|
|
3
|
+
import { MySql2Querier } from './mysql2Querier.js';
|
|
4
|
+
export class MySql2QuerierPool extends AbstractQuerierPool {
|
|
5
|
+
pool;
|
|
6
|
+
constructor(opts, extra) {
|
|
7
|
+
super('mysql', extra);
|
|
8
|
+
this.pool = createPool(opts);
|
|
9
|
+
}
|
|
10
|
+
async getQuerier() {
|
|
11
|
+
return new MySql2Querier(() => this.pool.getConnection(), this.extra);
|
|
12
|
+
}
|
|
13
|
+
async end() {
|
|
14
|
+
await this.pool.end();
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXlzcWwyUXVlcmllclBvb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbXlzcWwvbXlzcWwyUXVlcmllclBvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBK0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFbkQsTUFBTSxPQUFPLGlCQUFrQixTQUFRLG1CQUFrQztJQUM5RCxJQUFJLENBQU87SUFFcEIsWUFBWSxJQUFpQixFQUFFLEtBQW9CO1FBQ2pELEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVO1FBQ2QsT0FBTyxJQUFJLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQUc7UUFDUCxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDeEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlUG9vbCwgdHlwZSBQb29sLCB0eXBlIFBvb2xPcHRpb25zIH0gZnJvbSAnbXlzcWwyL3Byb21pc2UnO1xuaW1wb3J0IHsgQWJzdHJhY3RRdWVyaWVyUG9vbCB9IGZyb20gJy4uL3F1ZXJpZXIvaW5kZXguanMnO1xuaW1wb3J0IHR5cGUgeyBFeHRyYU9wdGlvbnMgfSBmcm9tICcuLi90eXBlL2luZGV4LmpzJztcbmltcG9ydCB7IE15U3FsMlF1ZXJpZXIgfSBmcm9tICcuL215c3FsMlF1ZXJpZXIuanMnO1xuXG5leHBvcnQgY2xhc3MgTXlTcWwyUXVlcmllclBvb2wgZXh0ZW5kcyBBYnN0cmFjdFF1ZXJpZXJQb29sPE15U3FsMlF1ZXJpZXI+IHtcbiAgcmVhZG9ubHkgcG9vbDogUG9vbDtcblxuICBjb25zdHJ1Y3RvcihvcHRzOiBQb29sT3B0aW9ucywgZXh0cmE/OiBFeHRyYU9wdGlvbnMpIHtcbiAgICBzdXBlcignbXlzcWwnLCBleHRyYSk7XG4gICAgdGhpcy5wb29sID0gY3JlYXRlUG9vbChvcHRzKTtcbiAgfVxuXG4gIGFzeW5jIGdldFF1ZXJpZXIoKSB7XG4gICAgcmV0dXJuIG5ldyBNeVNxbDJRdWVyaWVyKCgpID0+IHRoaXMucG9vbC5nZXRDb25uZWN0aW9uKCksIHRoaXMuZXh0cmEpO1xuICB9XG5cbiAgYXN5bmMgZW5kKCkge1xuICAgIGF3YWl0IHRoaXMucG9vbC5lbmQoKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AbstractQuerierPoolIt } from '../querier/abstractQuerierPool-test.js';
|
|
2
|
+
import { createSpec } from '../test/index.js';
|
|
3
|
+
import { MySql2QuerierPool } from './mysql2QuerierPool.js';
|
|
4
|
+
export class MySql2QuerierPoolIt extends AbstractQuerierPoolIt {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(new MySql2QuerierPool({
|
|
7
|
+
host: '0.0.0.0',
|
|
8
|
+
port: 3316,
|
|
9
|
+
user: 'test',
|
|
10
|
+
password: 'test',
|
|
11
|
+
database: 'test',
|
|
12
|
+
}));
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
createSpec(new MySql2QuerierPoolIt());
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXlzcWwyUXVlcmllclBvb2wudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9teXNxbC9teXNxbDJRdWVyaWVyUG9vbC50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUzRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEscUJBQW9DO0lBQzNFO1FBQ0UsS0FBSyxDQUNILElBQUksaUJBQWlCLENBQUM7WUFDcEIsSUFBSSxFQUFFLFNBQVM7WUFDZixJQUFJLEVBQUUsSUFBSTtZQUNWLElBQUksRUFBRSxNQUFNO1lBQ1osUUFBUSxFQUFFLE1BQU07WUFDaEIsUUFBUSxFQUFFLE1BQU07U0FDakIsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFFRCxVQUFVLENBQUMsSUFBSSxtQkFBbUIsRUFBRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdFF1ZXJpZXJQb29sSXQgfSBmcm9tICcuLi9xdWVyaWVyL2Fic3RyYWN0UXVlcmllclBvb2wtdGVzdC5qcyc7XG5pbXBvcnQgeyBjcmVhdGVTcGVjIH0gZnJvbSAnLi4vdGVzdC9pbmRleC5qcyc7XG5pbXBvcnQgdHlwZSB7IE15U3FsMlF1ZXJpZXIgfSBmcm9tICcuL215c3FsMlF1ZXJpZXIuanMnO1xuaW1wb3J0IHsgTXlTcWwyUXVlcmllclBvb2wgfSBmcm9tICcuL215c3FsMlF1ZXJpZXJQb29sLmpzJztcblxuZXhwb3J0IGNsYXNzIE15U3FsMlF1ZXJpZXJQb29sSXQgZXh0ZW5kcyBBYnN0cmFjdFF1ZXJpZXJQb29sSXQ8TXlTcWwyUXVlcmllcj4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcbiAgICAgIG5ldyBNeVNxbDJRdWVyaWVyUG9vbCh7XG4gICAgICAgIGhvc3Q6ICcwLjAuMC4wJyxcbiAgICAgICAgcG9ydDogMzMxNixcbiAgICAgICAgdXNlcjogJ3Rlc3QnLFxuICAgICAgICBwYXNzd29yZDogJ3Rlc3QnLFxuICAgICAgICBkYXRhYmFzZTogJ3Rlc3QnLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxufVxuXG5jcmVhdGVTcGVjKG5ldyBNeVNxbDJRdWVyaWVyUG9vbEl0KCkpO1xuIl19
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import SqlString from 'sqlstring';
|
|
2
|
+
import { AbstractSqlDialect } from '../dialect/index.js';
|
|
3
|
+
export class MySqlDialect extends AbstractSqlDialect {
|
|
4
|
+
addValue(values, value) {
|
|
5
|
+
if (value instanceof Date) {
|
|
6
|
+
values.push(value);
|
|
7
|
+
return '?';
|
|
8
|
+
}
|
|
9
|
+
return super.addValue(values, value);
|
|
10
|
+
}
|
|
11
|
+
escape(value) {
|
|
12
|
+
return SqlString.escape(value);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXlzcWxEaWFsZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL215c3FsL215c3FsRGlhbGVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFNBQVMsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFekQsTUFBTSxPQUFPLFlBQWEsU0FBUSxrQkFBa0I7SUFDekMsUUFBUSxDQUFDLE1BQWlCLEVBQUUsS0FBYztRQUNqRCxJQUFJLEtBQUssWUFBWSxJQUFJLEVBQUUsQ0FBQztZQUMxQixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25CLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVRLE1BQU0sQ0FBQyxLQUFjO1FBQzVCLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU3FsU3RyaW5nIGZyb20gJ3NxbHN0cmluZyc7XG5pbXBvcnQgeyBBYnN0cmFjdFNxbERpYWxlY3QgfSBmcm9tICcuLi9kaWFsZWN0L2luZGV4LmpzJztcblxuZXhwb3J0IGNsYXNzIE15U3FsRGlhbGVjdCBleHRlbmRzIEFic3RyYWN0U3FsRGlhbGVjdCB7XG4gIG92ZXJyaWRlIGFkZFZhbHVlKHZhbHVlczogdW5rbm93bltdLCB2YWx1ZTogdW5rbm93bik6IHN0cmluZyB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgdmFsdWVzLnB1c2godmFsdWUpO1xuICAgICAgcmV0dXJuICc/JztcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLmFkZFZhbHVlKHZhbHVlcywgdmFsdWUpO1xuICB9XG5cbiAgb3ZlcnJpZGUgZXNjYXBlKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU3FsU3RyaW5nLmVzY2FwZSh2YWx1ZSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { NamingStrategy } from '../type/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Default naming strategy that returns identifiers as-is.
|
|
4
|
+
*/
|
|
5
|
+
export declare class DefaultNamingStrategy implements NamingStrategy {
|
|
6
|
+
tableName(className: string): string;
|
|
7
|
+
columnName(propertyName: string): string;
|
|
8
|
+
joinTableName(source: string, target: string, _propertyName?: string): string;
|
|
9
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default naming strategy that returns identifiers as-is.
|
|
3
|
+
*/
|
|
4
|
+
export class DefaultNamingStrategy {
|
|
5
|
+
tableName(className) {
|
|
6
|
+
return className;
|
|
7
|
+
}
|
|
8
|
+
columnName(propertyName) {
|
|
9
|
+
return propertyName;
|
|
10
|
+
}
|
|
11
|
+
joinTableName(source, target, _propertyName) {
|
|
12
|
+
return `${source}_${target}`;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdE5hbWluZ1N0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25hbWluZ1N0cmF0ZWd5L2RlZmF1bHROYW1pbmdTdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7R0FFRztBQUNILE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsU0FBUyxDQUFDLFNBQWlCO1FBQ3pCLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxVQUFVLENBQUMsWUFBb0I7UUFDN0IsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFjLEVBQUUsTUFBYyxFQUFFLGFBQXNCO1FBQ2xFLE9BQU8sR0FBRyxNQUFNLElBQUksTUFBTSxFQUFFLENBQUM7SUFDL0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBOYW1pbmdTdHJhdGVneSB9IGZyb20gJy4uL3R5cGUvaW5kZXguanMnO1xuXG4vKipcbiAqIERlZmF1bHQgbmFtaW5nIHN0cmF0ZWd5IHRoYXQgcmV0dXJucyBpZGVudGlmaWVycyBhcy1pcy5cbiAqL1xuZXhwb3J0IGNsYXNzIERlZmF1bHROYW1pbmdTdHJhdGVneSBpbXBsZW1lbnRzIE5hbWluZ1N0cmF0ZWd5IHtcbiAgdGFibGVOYW1lKGNsYXNzTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY2xhc3NOYW1lO1xuICB9XG5cbiAgY29sdW1uTmFtZShwcm9wZXJ0eU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHByb3BlcnR5TmFtZTtcbiAgfVxuXG4gIGpvaW5UYWJsZU5hbWUoc291cmNlOiBzdHJpbmcsIHRhcmdldDogc3RyaW5nLCBfcHJvcGVydHlOYW1lPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7c291cmNlfV8ke3RhcmdldH1gO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './defaultNamingStrategy.js';
|
|
2
|
+
export * from './snakeCaseNamingStrategy.js';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmFtaW5nU3RyYXRlZ3kvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDhCQUE4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kZWZhdWx0TmFtaW5nU3RyYXRlZ3kuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9zbmFrZUNhc2VOYW1pbmdTdHJhdGVneS5qcyc7XG4iXX0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { DefaultNamingStrategy } from './defaultNamingStrategy.js';
|
|
2
|
+
/**
|
|
3
|
+
* Naming strategy that converts identifiers to snake_case.
|
|
4
|
+
*/
|
|
5
|
+
export declare class SnakeCaseNamingStrategy extends DefaultNamingStrategy {
|
|
6
|
+
tableName(className: string): string;
|
|
7
|
+
columnName(propertyName: string): string;
|
|
8
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { snakeCase } from '../util/index.js';
|
|
2
|
+
import { DefaultNamingStrategy } from './defaultNamingStrategy.js';
|
|
3
|
+
/**
|
|
4
|
+
* Naming strategy that converts identifiers to snake_case.
|
|
5
|
+
*/
|
|
6
|
+
export class SnakeCaseNamingStrategy extends DefaultNamingStrategy {
|
|
7
|
+
tableName(className) {
|
|
8
|
+
return snakeCase(className);
|
|
9
|
+
}
|
|
10
|
+
columnName(propertyName) {
|
|
11
|
+
return snakeCase(propertyName);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25ha2VDYXNlTmFtaW5nU3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmFtaW5nU3RyYXRlZ3kvc25ha2VDYXNlTmFtaW5nU3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRW5FOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHVCQUF3QixTQUFRLHFCQUFxQjtJQUN2RCxTQUFTLENBQUMsU0FBaUI7UUFDbEMsT0FBTyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVRLFVBQVUsQ0FBQyxZQUFvQjtRQUN0QyxPQUFPLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNqQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzbmFrZUNhc2UgfSBmcm9tICcuLi91dGlsL2luZGV4LmpzJztcbmltcG9ydCB7IERlZmF1bHROYW1pbmdTdHJhdGVneSB9IGZyb20gJy4vZGVmYXVsdE5hbWluZ1N0cmF0ZWd5LmpzJztcblxuLyoqXG4gKiBOYW1pbmcgc3RyYXRlZ3kgdGhhdCBjb252ZXJ0cyBpZGVudGlmaWVycyB0byBzbmFrZV9jYXNlLlxuICovXG5leHBvcnQgY2xhc3MgU25ha2VDYXNlTmFtaW5nU3RyYXRlZ3kgZXh0ZW5kcyBEZWZhdWx0TmFtaW5nU3RyYXRlZ3kge1xuICBvdmVycmlkZSB0YWJsZU5hbWUoY2xhc3NOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBzbmFrZUNhc2UoY2xhc3NOYW1lKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGNvbHVtbk5hbWUocHJvcGVydHlOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBzbmFrZUNhc2UocHJvcGVydHlOYW1lKTtcbiAgfVxufVxuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Querier, QuerierPool } from './type';
|
|
1
|
+
import type { Querier, QuerierPool } from './type/index.js';
|
|
2
2
|
export declare function setQuerierPool<T extends QuerierPool = QuerierPool>(pool: T): void;
|
|
3
3
|
export declare function getQuerierPool(): QuerierPool;
|
|
4
4
|
export declare function getQuerier(): Promise<Querier>;
|