@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,24 @@
|
|
|
1
|
+
import type { MigrationStorage, QuerierPool, SqlQuerier } from '../../type/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Stores migration state in a database table.
|
|
4
|
+
* Uses the querier's dialect for escaping and placeholders.
|
|
5
|
+
*/
|
|
6
|
+
export declare class DatabaseMigrationStorage implements MigrationStorage {
|
|
7
|
+
private readonly querierPool;
|
|
8
|
+
private readonly tableName;
|
|
9
|
+
private storageInitialized;
|
|
10
|
+
constructor(querierPool: QuerierPool, options?: {
|
|
11
|
+
tableName?: string;
|
|
12
|
+
});
|
|
13
|
+
ensureStorage(): Promise<void>;
|
|
14
|
+
private createTableIfNotExists;
|
|
15
|
+
executed(): Promise<string[]>;
|
|
16
|
+
/**
|
|
17
|
+
* Log a migration as executed - uses provided querier (within transaction)
|
|
18
|
+
*/
|
|
19
|
+
logWithQuerier(querier: SqlQuerier, migrationName: string): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Unlog a migration - uses provided querier (within transaction)
|
|
22
|
+
*/
|
|
23
|
+
unlogWithQuerier(querier: SqlQuerier, migrationName: string): Promise<void>;
|
|
24
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { isSqlQuerier } from '../../type/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Stores migration state in a database table.
|
|
4
|
+
* Uses the querier's dialect for escaping and placeholders.
|
|
5
|
+
*/
|
|
6
|
+
export class DatabaseMigrationStorage {
|
|
7
|
+
querierPool;
|
|
8
|
+
tableName;
|
|
9
|
+
storageInitialized = false;
|
|
10
|
+
constructor(querierPool, options = {}) {
|
|
11
|
+
this.querierPool = querierPool;
|
|
12
|
+
this.tableName = options.tableName ?? 'uql_migrations';
|
|
13
|
+
}
|
|
14
|
+
async ensureStorage() {
|
|
15
|
+
if (this.storageInitialized) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const querier = await this.querierPool.getQuerier();
|
|
19
|
+
if (!isSqlQuerier(querier)) {
|
|
20
|
+
await querier.release();
|
|
21
|
+
throw new Error('DatabaseMigrationStorage requires a SQL-based querier');
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
await this.createTableIfNotExists(querier);
|
|
25
|
+
this.storageInitialized = true;
|
|
26
|
+
}
|
|
27
|
+
finally {
|
|
28
|
+
await querier.release();
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
async createTableIfNotExists(querier) {
|
|
32
|
+
const { escapeId } = querier.dialect;
|
|
33
|
+
const sql = `
|
|
34
|
+
CREATE TABLE IF NOT EXISTS ${escapeId(this.tableName)} (
|
|
35
|
+
${escapeId('name')} VARCHAR(255) PRIMARY KEY,
|
|
36
|
+
${escapeId('executed_at')} TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
37
|
+
)
|
|
38
|
+
`;
|
|
39
|
+
await querier.run(sql);
|
|
40
|
+
}
|
|
41
|
+
async executed() {
|
|
42
|
+
await this.ensureStorage();
|
|
43
|
+
const querier = await this.querierPool.getQuerier();
|
|
44
|
+
if (!isSqlQuerier(querier)) {
|
|
45
|
+
await querier.release();
|
|
46
|
+
throw new Error('DatabaseMigrationStorage requires a SQL-based querier');
|
|
47
|
+
}
|
|
48
|
+
try {
|
|
49
|
+
const { escapeId } = querier.dialect;
|
|
50
|
+
const sql = `SELECT ${escapeId('name')} FROM ${escapeId(this.tableName)} ORDER BY ${escapeId('name')} ASC`;
|
|
51
|
+
const results = await querier.all(sql);
|
|
52
|
+
return results.map((r) => r.name);
|
|
53
|
+
}
|
|
54
|
+
finally {
|
|
55
|
+
await querier.release();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Log a migration as executed - uses provided querier (within transaction)
|
|
60
|
+
*/
|
|
61
|
+
async logWithQuerier(querier, migrationName) {
|
|
62
|
+
await this.ensureStorage();
|
|
63
|
+
const { escapeId, placeholder } = querier.dialect;
|
|
64
|
+
const sql = `INSERT INTO ${escapeId(this.tableName)} (${escapeId('name')}) VALUES (${placeholder(1)})`;
|
|
65
|
+
await querier.run(sql, [migrationName]);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Unlog a migration - uses provided querier (within transaction)
|
|
69
|
+
*/
|
|
70
|
+
async unlogWithQuerier(querier, migrationName) {
|
|
71
|
+
await this.ensureStorage();
|
|
72
|
+
const { escapeId, placeholder } = querier.dialect;
|
|
73
|
+
const sql = `DELETE FROM ${escapeId(this.tableName)} WHERE ${escapeId('name')} = ${placeholder(1)}`;
|
|
74
|
+
await querier.run(sql, [migrationName]);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2VTdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21pZ3JhdGUvc3RvcmFnZS9kYXRhYmFzZVN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBVW5EOzs7R0FHRztBQUNILE1BQU0sT0FBTyx3QkFBd0I7SUFLaEI7SUFKRixTQUFTLENBQVM7SUFDM0Isa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0lBRW5DLFlBQ21CLFdBQXdCLEVBQ3pDLFVBRUksRUFBRTtRQUhXLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBS3pDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxnQkFBZ0IsQ0FBQztJQUN6RCxDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWE7UUFDakIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUM1QixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVwRCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDM0IsTUFBTSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO1FBQzNFLENBQUM7UUFFRCxJQUFJLENBQUM7WUFDSCxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLENBQUM7Z0JBQVMsQ0FBQztZQUNULE1BQU0sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBRU8sS0FBSyxDQUFDLHNCQUFzQixDQUFDLE9BQW1CO1FBQ3RELE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQ3JDLE1BQU0sR0FBRyxHQUFHO21DQUNtQixRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztVQUNqRCxRQUFRLENBQUMsTUFBTSxDQUFDO1VBQ2hCLFFBQVEsQ0FBQyxhQUFhLENBQUM7O0tBRTVCLENBQUM7UUFFRixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRO1FBQ1osTUFBTSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFM0IsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRXBELElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUMzQixNQUFNLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUM7UUFDM0UsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO1lBQ3JDLE1BQU0sR0FBRyxHQUFHLFVBQVUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDM0csTUFBTSxPQUFPLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFrQixHQUFHLENBQUMsQ0FBQztZQUN4RCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxDQUFDO2dCQUFTLENBQUM7WUFDVCxNQUFNLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUFtQixFQUFFLGFBQXFCO1FBQzdELE1BQU0sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNCLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUNsRCxNQUFNLEdBQUcsR0FBRyxlQUFlLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssUUFBUSxDQUFDLE1BQU0sQ0FBQyxhQUFhLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ3ZHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFtQixFQUFFLGFBQXFCO1FBQy9ELE1BQU0sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNCLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUNsRCxNQUFNLEdBQUcsR0FBRyxlQUFlLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3BHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTWlncmF0aW9uU3RvcmFnZSwgUXVlcmllclBvb2wsIFNxbFF1ZXJpZXIgfSBmcm9tICcuLi8uLi90eXBlL2luZGV4LmpzJztcbmltcG9ydCB7IGlzU3FsUXVlcmllciB9IGZyb20gJy4uLy4uL3R5cGUvaW5kZXguanMnO1xuXG4vKipcbiAqIE1pZ3JhdGlvbiBtZXRhZGF0YSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlXG4gKi9cbmludGVyZmFjZSBNaWdyYXRpb25SZWNvcmQge1xuICBuYW1lOiBzdHJpbmc7XG4gIGV4ZWN1dGVkX2F0OiBEYXRlIHwgbnVtYmVyO1xufVxuXG4vKipcbiAqIFN0b3JlcyBtaWdyYXRpb24gc3RhdGUgaW4gYSBkYXRhYmFzZSB0YWJsZS5cbiAqIFVzZXMgdGhlIHF1ZXJpZXIncyBkaWFsZWN0IGZvciBlc2NhcGluZyBhbmQgcGxhY2Vob2xkZXJzLlxuICovXG5leHBvcnQgY2xhc3MgRGF0YWJhc2VNaWdyYXRpb25TdG9yYWdlIGltcGxlbWVudHMgTWlncmF0aW9uU3RvcmFnZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGFibGVOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgc3RvcmFnZUluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBxdWVyaWVyUG9vbDogUXVlcmllclBvb2wsXG4gICAgb3B0aW9uczoge1xuICAgICAgdGFibGVOYW1lPzogc3RyaW5nO1xuICAgIH0gPSB7fSxcbiAgKSB7XG4gICAgdGhpcy50YWJsZU5hbWUgPSBvcHRpb25zLnRhYmxlTmFtZSA/PyAndXFsX21pZ3JhdGlvbnMnO1xuICB9XG5cbiAgYXN5bmMgZW5zdXJlU3RvcmFnZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5zdG9yYWdlSW5pdGlhbGl6ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBxdWVyaWVyID0gYXdhaXQgdGhpcy5xdWVyaWVyUG9vbC5nZXRRdWVyaWVyKCk7XG5cbiAgICBpZiAoIWlzU3FsUXVlcmllcihxdWVyaWVyKSkge1xuICAgICAgYXdhaXQgcXVlcmllci5yZWxlYXNlKCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RhdGFiYXNlTWlncmF0aW9uU3RvcmFnZSByZXF1aXJlcyBhIFNRTC1iYXNlZCBxdWVyaWVyJyk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuY3JlYXRlVGFibGVJZk5vdEV4aXN0cyhxdWVyaWVyKTtcbiAgICAgIHRoaXMuc3RvcmFnZUluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgcXVlcmllci5yZWxlYXNlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjcmVhdGVUYWJsZUlmTm90RXhpc3RzKHF1ZXJpZXI6IFNxbFF1ZXJpZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGVzY2FwZUlkIH0gPSBxdWVyaWVyLmRpYWxlY3Q7XG4gICAgY29uc3Qgc3FsID0gYFxuICAgICAgQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgJHtlc2NhcGVJZCh0aGlzLnRhYmxlTmFtZSl9IChcbiAgICAgICAgJHtlc2NhcGVJZCgnbmFtZScpfSBWQVJDSEFSKDI1NSkgUFJJTUFSWSBLRVksXG4gICAgICAgICR7ZXNjYXBlSWQoJ2V4ZWN1dGVkX2F0Jyl9IFRJTUVTVEFNUCBERUZBVUxUIENVUlJFTlRfVElNRVNUQU1QXG4gICAgICApXG4gICAgYDtcblxuICAgIGF3YWl0IHF1ZXJpZXIucnVuKHNxbCk7XG4gIH1cblxuICBhc3luYyBleGVjdXRlZCgpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgYXdhaXQgdGhpcy5lbnN1cmVTdG9yYWdlKCk7XG5cbiAgICBjb25zdCBxdWVyaWVyID0gYXdhaXQgdGhpcy5xdWVyaWVyUG9vbC5nZXRRdWVyaWVyKCk7XG5cbiAgICBpZiAoIWlzU3FsUXVlcmllcihxdWVyaWVyKSkge1xuICAgICAgYXdhaXQgcXVlcmllci5yZWxlYXNlKCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RhdGFiYXNlTWlncmF0aW9uU3RvcmFnZSByZXF1aXJlcyBhIFNRTC1iYXNlZCBxdWVyaWVyJyk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgZXNjYXBlSWQgfSA9IHF1ZXJpZXIuZGlhbGVjdDtcbiAgICAgIGNvbnN0IHNxbCA9IGBTRUxFQ1QgJHtlc2NhcGVJZCgnbmFtZScpfSBGUk9NICR7ZXNjYXBlSWQodGhpcy50YWJsZU5hbWUpfSBPUkRFUiBCWSAke2VzY2FwZUlkKCduYW1lJyl9IEFTQ2A7XG4gICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgcXVlcmllci5hbGw8TWlncmF0aW9uUmVjb3JkPihzcWwpO1xuICAgICAgcmV0dXJuIHJlc3VsdHMubWFwKChyOiBhbnkpID0+IHIubmFtZSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IHF1ZXJpZXIucmVsZWFzZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMb2cgYSBtaWdyYXRpb24gYXMgZXhlY3V0ZWQgLSB1c2VzIHByb3ZpZGVkIHF1ZXJpZXIgKHdpdGhpbiB0cmFuc2FjdGlvbilcbiAgICovXG4gIGFzeW5jIGxvZ1dpdGhRdWVyaWVyKHF1ZXJpZXI6IFNxbFF1ZXJpZXIsIG1pZ3JhdGlvbk5hbWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlU3RvcmFnZSgpO1xuICAgIGNvbnN0IHsgZXNjYXBlSWQsIHBsYWNlaG9sZGVyIH0gPSBxdWVyaWVyLmRpYWxlY3Q7XG4gICAgY29uc3Qgc3FsID0gYElOU0VSVCBJTlRPICR7ZXNjYXBlSWQodGhpcy50YWJsZU5hbWUpfSAoJHtlc2NhcGVJZCgnbmFtZScpfSkgVkFMVUVTICgke3BsYWNlaG9sZGVyKDEpfSlgO1xuICAgIGF3YWl0IHF1ZXJpZXIucnVuKHNxbCwgW21pZ3JhdGlvbk5hbWVdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmxvZyBhIG1pZ3JhdGlvbiAtIHVzZXMgcHJvdmlkZWQgcXVlcmllciAod2l0aGluIHRyYW5zYWN0aW9uKVxuICAgKi9cbiAgYXN5bmMgdW5sb2dXaXRoUXVlcmllcihxdWVyaWVyOiBTcWxRdWVyaWVyLCBtaWdyYXRpb25OYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVN0b3JhZ2UoKTtcbiAgICBjb25zdCB7IGVzY2FwZUlkLCBwbGFjZWhvbGRlciB9ID0gcXVlcmllci5kaWFsZWN0O1xuICAgIGNvbnN0IHNxbCA9IGBERUxFVEUgRlJPTSAke2VzY2FwZUlkKHRoaXMudGFibGVOYW1lKX0gV0hFUkUgJHtlc2NhcGVJZCgnbmFtZScpfSA9ICR7cGxhY2Vob2xkZXIoMSl9YDtcbiAgICBhd2FpdCBxdWVyaWVyLnJ1bihzcWwsIFttaWdyYXRpb25OYW1lXSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './databaseStorage.js';
|
|
2
|
+
export * from './jsonStorage.js';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWlncmF0ZS9zdG9yYWdlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGF0YWJhc2VTdG9yYWdlLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vanNvblN0b3JhZ2UuanMnO1xuIl19
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { MigrationStorage, SqlQuerier } from '../../type/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Stores migration state in a JSON file (useful for development/testing)
|
|
4
|
+
*/
|
|
5
|
+
export declare class JsonMigrationStorage implements MigrationStorage {
|
|
6
|
+
private readonly filePath;
|
|
7
|
+
private cache;
|
|
8
|
+
constructor(filePath?: string);
|
|
9
|
+
ensureStorage(): Promise<void>;
|
|
10
|
+
executed(): Promise<string[]>;
|
|
11
|
+
logWithQuerier(_querier: SqlQuerier, migrationName: string): Promise<void>;
|
|
12
|
+
unlogWithQuerier(_querier: SqlQuerier, migrationName: string): Promise<void>;
|
|
13
|
+
private load;
|
|
14
|
+
private save;
|
|
15
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { mkdir, readFile, writeFile } from 'node:fs/promises';
|
|
2
|
+
import { dirname } from 'node:path';
|
|
3
|
+
/**
|
|
4
|
+
* Stores migration state in a JSON file (useful for development/testing)
|
|
5
|
+
*/
|
|
6
|
+
export class JsonMigrationStorage {
|
|
7
|
+
filePath;
|
|
8
|
+
cache = null;
|
|
9
|
+
constructor(filePath = './migrations/.uql-migrations.json') {
|
|
10
|
+
this.filePath = filePath;
|
|
11
|
+
}
|
|
12
|
+
async ensureStorage() {
|
|
13
|
+
try {
|
|
14
|
+
await this.load();
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
// File doesn't exist, create it
|
|
18
|
+
await this.save([]);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
async executed() {
|
|
22
|
+
await this.ensureStorage();
|
|
23
|
+
return this.cache ?? [];
|
|
24
|
+
}
|
|
25
|
+
async logWithQuerier(_querier, migrationName) {
|
|
26
|
+
const executed = await this.executed();
|
|
27
|
+
if (!executed.includes(migrationName)) {
|
|
28
|
+
executed.push(migrationName);
|
|
29
|
+
executed.sort();
|
|
30
|
+
await this.save(executed);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
async unlogWithQuerier(_querier, migrationName) {
|
|
34
|
+
const executed = await this.executed();
|
|
35
|
+
const index = executed.indexOf(migrationName);
|
|
36
|
+
if (index !== -1) {
|
|
37
|
+
executed.splice(index, 1);
|
|
38
|
+
await this.save(executed);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
async load() {
|
|
42
|
+
const content = await readFile(this.filePath, 'utf-8');
|
|
43
|
+
this.cache = JSON.parse(content);
|
|
44
|
+
}
|
|
45
|
+
async save(migrations) {
|
|
46
|
+
await mkdir(dirname(this.filePath), { recursive: true });
|
|
47
|
+
await writeFile(this.filePath, JSON.stringify(migrations, null, 2), 'utf-8');
|
|
48
|
+
this.cache = migrations;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvblN0b3JhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWlncmF0ZS9zdG9yYWdlL2pzb25TdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFHcEM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sb0JBQW9CO0lBQ2QsUUFBUSxDQUFTO0lBQzFCLEtBQUssR0FBb0IsSUFBSSxDQUFDO0lBRXRDLFlBQVksUUFBUSxHQUFHLG1DQUFtQztRQUN4RCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWE7UUFDakIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEIsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLGdDQUFnQztZQUNoQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUTtRQUNaLE1BQU0sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNCLE9BQU8sSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELEtBQUssQ0FBQyxjQUFjLENBQUMsUUFBb0IsRUFBRSxhQUFxQjtRQUM5RCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQ3RDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDN0IsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFvQixFQUFFLGFBQXFCO1FBQ2hFLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDOUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNqQixRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMxQixNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsSUFBSTtRQUNoQixNQUFNLE9BQU8sR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRU8sS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFvQjtRQUNyQyxNQUFNLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDekQsTUFBTSxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUM7SUFDMUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWtkaXIsIHJlYWRGaWxlLCB3cml0ZUZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJztcbmltcG9ydCB7IGRpcm5hbWUgfSBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHR5cGUgeyBNaWdyYXRpb25TdG9yYWdlLCBTcWxRdWVyaWVyIH0gZnJvbSAnLi4vLi4vdHlwZS9pbmRleC5qcyc7XG5cbi8qKlxuICogU3RvcmVzIG1pZ3JhdGlvbiBzdGF0ZSBpbiBhIEpTT04gZmlsZSAodXNlZnVsIGZvciBkZXZlbG9wbWVudC90ZXN0aW5nKVxuICovXG5leHBvcnQgY2xhc3MgSnNvbk1pZ3JhdGlvblN0b3JhZ2UgaW1wbGVtZW50cyBNaWdyYXRpb25TdG9yYWdlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBmaWxlUGF0aDogc3RyaW5nO1xuICBwcml2YXRlIGNhY2hlOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKGZpbGVQYXRoID0gJy4vbWlncmF0aW9ucy8udXFsLW1pZ3JhdGlvbnMuanNvbicpIHtcbiAgICB0aGlzLmZpbGVQYXRoID0gZmlsZVBhdGg7XG4gIH1cblxuICBhc3luYyBlbnN1cmVTdG9yYWdlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmxvYWQoKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIEZpbGUgZG9lc24ndCBleGlzdCwgY3JlYXRlIGl0XG4gICAgICBhd2FpdCB0aGlzLnNhdmUoW10pO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGV4ZWN1dGVkKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVN0b3JhZ2UoKTtcbiAgICByZXR1cm4gdGhpcy5jYWNoZSA/PyBbXTtcbiAgfVxuXG4gIGFzeW5jIGxvZ1dpdGhRdWVyaWVyKF9xdWVyaWVyOiBTcWxRdWVyaWVyLCBtaWdyYXRpb25OYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBleGVjdXRlZCA9IGF3YWl0IHRoaXMuZXhlY3V0ZWQoKTtcbiAgICBpZiAoIWV4ZWN1dGVkLmluY2x1ZGVzKG1pZ3JhdGlvbk5hbWUpKSB7XG4gICAgICBleGVjdXRlZC5wdXNoKG1pZ3JhdGlvbk5hbWUpO1xuICAgICAgZXhlY3V0ZWQuc29ydCgpO1xuICAgICAgYXdhaXQgdGhpcy5zYXZlKGV4ZWN1dGVkKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyB1bmxvZ1dpdGhRdWVyaWVyKF9xdWVyaWVyOiBTcWxRdWVyaWVyLCBtaWdyYXRpb25OYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBleGVjdXRlZCA9IGF3YWl0IHRoaXMuZXhlY3V0ZWQoKTtcbiAgICBjb25zdCBpbmRleCA9IGV4ZWN1dGVkLmluZGV4T2YobWlncmF0aW9uTmFtZSk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgZXhlY3V0ZWQuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIGF3YWl0IHRoaXMuc2F2ZShleGVjdXRlZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZSh0aGlzLmZpbGVQYXRoLCAndXRmLTgnKTtcbiAgICB0aGlzLmNhY2hlID0gSlNPTi5wYXJzZShjb250ZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2F2ZShtaWdyYXRpb25zOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IG1rZGlyKGRpcm5hbWUodGhpcy5maWxlUGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIGF3YWl0IHdyaXRlRmlsZSh0aGlzLmZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShtaWdyYXRpb25zLCBudWxsLCAyKSwgJ3V0Zi04Jyk7XG4gICAgdGhpcy5jYWNoZSA9IG1pZ3JhdGlvbnM7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '../type/index.js';
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from '../type/index.js';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taWdyYXRlL3R5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4uL3R5cGUvaW5kZXguanMnO1xuIl19
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './mongoDialect.js';
|
|
2
|
+
export * from './mongodbQuerier.js';
|
|
3
|
+
export * from './mongodbQuerierPool.js';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9uZ28vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21vbmdvRGlhbGVjdC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL21vbmdvZGJRdWVyaWVyLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vbW9uZ29kYlF1ZXJpZXJQb29sLmpzJztcbiJdfQ==
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { type Document, type Filter, ObjectId, type Sort } from 'mongodb';
|
|
2
|
+
import { AbstractDialect } from '../dialect/index.js';
|
|
3
|
+
import type { EntityMeta, FieldValue, Query, QueryOptions, QuerySelect, QuerySelectMap, QuerySort, QueryWhere, RelationKey, Type } from '../type/index.js';
|
|
4
|
+
import { type CallbackKey } from '../util/index.js';
|
|
5
|
+
export declare class MongoDialect extends AbstractDialect {
|
|
6
|
+
where<E extends Document>(entity: Type<E>, where?: QueryWhere<E>, { softDelete }?: QueryOptions): Filter<E>;
|
|
7
|
+
select<E extends Document>(entity: Type<E>, select: QuerySelect<E>): QuerySelectMap<E>;
|
|
8
|
+
sort<E extends Document>(entity: Type<E>, sort: QuerySort<E>): Sort;
|
|
9
|
+
aggregationPipeline<E extends Document>(entity: Type<E>, q: Query<E>): MongoAggregationPipelineEntry<E>[];
|
|
10
|
+
normalizeIds<E extends Document>(meta: EntityMeta<E>, docs: E[]): E[];
|
|
11
|
+
normalizeId<E extends Document>(meta: EntityMeta<E>, doc: E): E;
|
|
12
|
+
getIdValue<T extends IdValue>(value: T): T;
|
|
13
|
+
getPersistable<E>(meta: EntityMeta<E>, payload: E, callbackKey: CallbackKey): E;
|
|
14
|
+
getPersistables<E>(meta: EntityMeta<E>, payload: E | E[], callbackKey: CallbackKey): E[];
|
|
15
|
+
}
|
|
16
|
+
type MongoAggregationPipelineEntry<E extends Document> = {
|
|
17
|
+
readonly $lookup?: MongoAggregationLookup<E>;
|
|
18
|
+
$match?: Filter<E> | Record<string, any>;
|
|
19
|
+
$sort?: Sort;
|
|
20
|
+
readonly $unwind?: MongoAggregationUnwind;
|
|
21
|
+
};
|
|
22
|
+
type MongoAggregationLookup<E extends Document> = {
|
|
23
|
+
readonly from?: string;
|
|
24
|
+
readonly foreignField?: string;
|
|
25
|
+
readonly localField?: string;
|
|
26
|
+
readonly pipeline?: MongoAggregationPipelineEntry<FieldValue<E>>[];
|
|
27
|
+
readonly as?: RelationKey<E>;
|
|
28
|
+
};
|
|
29
|
+
type MongoAggregationUnwind = {
|
|
30
|
+
readonly path?: string;
|
|
31
|
+
readonly preserveNullAndEmptyArrays?: boolean;
|
|
32
|
+
};
|
|
33
|
+
type IdValue = string | ObjectId;
|
|
34
|
+
export {};
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { ObjectId } from 'mongodb';
|
|
2
|
+
import { AbstractDialect } from '../dialect/index.js';
|
|
3
|
+
import { getMeta } from '../entity/index.js';
|
|
4
|
+
import { buildSortMap, buldQueryWhereAsMap, fillOnFields, filterFieldKeys, filterRelationKeys, getKeys, hasKeys, } from '../util/index.js';
|
|
5
|
+
export class MongoDialect extends AbstractDialect {
|
|
6
|
+
where(entity, where = {}, { softDelete } = {}) {
|
|
7
|
+
const meta = getMeta(entity);
|
|
8
|
+
where = buldQueryWhereAsMap(meta, where);
|
|
9
|
+
if (meta.softDelete && (softDelete || softDelete === undefined) && !where[meta.softDelete]) {
|
|
10
|
+
const field = meta.fields[meta.softDelete];
|
|
11
|
+
where[this.resolveColumnName(meta.softDelete, field)] = null;
|
|
12
|
+
}
|
|
13
|
+
return getKeys(where).reduce((acc, key) => {
|
|
14
|
+
let value = where[key];
|
|
15
|
+
if (key === '$and' || key === '$or') {
|
|
16
|
+
acc[key] = value.map((filterIt) => this.where(entity, filterIt));
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
const field = meta.fields[key];
|
|
20
|
+
if (key === '_id' || key === meta.id) {
|
|
21
|
+
key = '_id';
|
|
22
|
+
value = this.getIdValue(value);
|
|
23
|
+
}
|
|
24
|
+
else if (field) {
|
|
25
|
+
key = this.resolveColumnName(key, field);
|
|
26
|
+
}
|
|
27
|
+
if (Array.isArray(value)) {
|
|
28
|
+
value = {
|
|
29
|
+
$in: value,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
acc[key] = value;
|
|
33
|
+
}
|
|
34
|
+
return acc;
|
|
35
|
+
}, {});
|
|
36
|
+
}
|
|
37
|
+
select(entity, select) {
|
|
38
|
+
if (Array.isArray(select)) {
|
|
39
|
+
return select.reduce((acc, it) => {
|
|
40
|
+
acc[it] = true;
|
|
41
|
+
return acc;
|
|
42
|
+
}, {});
|
|
43
|
+
}
|
|
44
|
+
return select;
|
|
45
|
+
}
|
|
46
|
+
sort(entity, sort) {
|
|
47
|
+
return buildSortMap(sort);
|
|
48
|
+
}
|
|
49
|
+
aggregationPipeline(entity, q) {
|
|
50
|
+
const meta = getMeta(entity);
|
|
51
|
+
const where = this.where(entity, q.$where);
|
|
52
|
+
const sort = this.sort(entity, q.$sort);
|
|
53
|
+
const firstPipelineEntry = {};
|
|
54
|
+
if (hasKeys(where)) {
|
|
55
|
+
firstPipelineEntry.$match = where;
|
|
56
|
+
}
|
|
57
|
+
if (hasKeys(sort)) {
|
|
58
|
+
firstPipelineEntry.$sort = sort;
|
|
59
|
+
}
|
|
60
|
+
const pipeline = [];
|
|
61
|
+
if (hasKeys(firstPipelineEntry)) {
|
|
62
|
+
pipeline.push(firstPipelineEntry);
|
|
63
|
+
}
|
|
64
|
+
const relKeys = filterRelationKeys(meta, q.$select);
|
|
65
|
+
for (const relKey of relKeys) {
|
|
66
|
+
const relOpts = meta.relations[relKey];
|
|
67
|
+
if (relOpts.cardinality === '1m' || relOpts.cardinality === 'mm') {
|
|
68
|
+
// '1m' and 'mm' should be resolved in a higher layer because they will need multiple queries
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
const relEntity = relOpts.entity();
|
|
72
|
+
const relMeta = getMeta(relEntity);
|
|
73
|
+
if (relOpts.cardinality === 'm1') {
|
|
74
|
+
const localField = meta.fields[relOpts.references[0].local];
|
|
75
|
+
pipeline.push({
|
|
76
|
+
$lookup: {
|
|
77
|
+
from: this.resolveTableName(relEntity, relMeta),
|
|
78
|
+
localField: this.resolveColumnName(relOpts.references[0].local, localField),
|
|
79
|
+
foreignField: '_id',
|
|
80
|
+
as: relKey,
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
const foreignField = relMeta.fields[relOpts.references[0].foreign];
|
|
86
|
+
const foreignFieldName = this.resolveColumnName(relOpts.references[0].foreign, foreignField);
|
|
87
|
+
const referenceWhere = this.where(relEntity, where);
|
|
88
|
+
const referenceSort = this.sort(relEntity, q.$sort);
|
|
89
|
+
const referencePipelineEntry = {
|
|
90
|
+
$match: { [foreignFieldName]: referenceWhere._id },
|
|
91
|
+
};
|
|
92
|
+
if (hasKeys(referenceSort)) {
|
|
93
|
+
referencePipelineEntry.$sort = referenceSort;
|
|
94
|
+
}
|
|
95
|
+
pipeline.push({
|
|
96
|
+
$lookup: {
|
|
97
|
+
from: this.resolveTableName(relEntity, relMeta),
|
|
98
|
+
pipeline: [referencePipelineEntry],
|
|
99
|
+
as: relKey,
|
|
100
|
+
},
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
pipeline.push({ $unwind: { path: `$${relKey}`, preserveNullAndEmptyArrays: true } });
|
|
104
|
+
}
|
|
105
|
+
return pipeline;
|
|
106
|
+
}
|
|
107
|
+
normalizeIds(meta, docs) {
|
|
108
|
+
return docs?.map((doc) => this.normalizeId(meta, doc));
|
|
109
|
+
}
|
|
110
|
+
normalizeId(meta, doc) {
|
|
111
|
+
if (!doc) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
const res = doc;
|
|
115
|
+
if (res._id) {
|
|
116
|
+
res[meta.id] = res._id;
|
|
117
|
+
if (meta.id !== '_id') {
|
|
118
|
+
delete res._id;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
for (const key of getKeys(meta.fields)) {
|
|
122
|
+
const field = meta.fields[key];
|
|
123
|
+
const dbName = this.resolveColumnName(key, field);
|
|
124
|
+
if (dbName !== key && res[dbName] !== undefined) {
|
|
125
|
+
res[key] = res[dbName];
|
|
126
|
+
delete res[dbName];
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
const relKeys = getKeys(meta.relations).filter((key) => res[key]);
|
|
130
|
+
for (const relKey of relKeys) {
|
|
131
|
+
const relOpts = meta.relations[relKey];
|
|
132
|
+
const relMeta = getMeta(relOpts.entity());
|
|
133
|
+
res[relKey] = Array.isArray(res[relKey])
|
|
134
|
+
? this.normalizeIds(relMeta, res[relKey])
|
|
135
|
+
: this.normalizeId(relMeta, res[relKey]);
|
|
136
|
+
}
|
|
137
|
+
return res;
|
|
138
|
+
}
|
|
139
|
+
getIdValue(value) {
|
|
140
|
+
if (value instanceof ObjectId) {
|
|
141
|
+
return value;
|
|
142
|
+
}
|
|
143
|
+
try {
|
|
144
|
+
return new ObjectId(value);
|
|
145
|
+
}
|
|
146
|
+
catch (e) {
|
|
147
|
+
return value;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
getPersistable(meta, payload, callbackKey) {
|
|
151
|
+
return this.getPersistables(meta, payload, callbackKey)[0];
|
|
152
|
+
}
|
|
153
|
+
getPersistables(meta, payload, callbackKey) {
|
|
154
|
+
const payloads = fillOnFields(meta, payload, callbackKey);
|
|
155
|
+
const persistableKeys = filterFieldKeys(meta, payloads[0], callbackKey);
|
|
156
|
+
return payloads.map((it) => persistableKeys.reduce((acc, key) => {
|
|
157
|
+
const field = meta.fields[key];
|
|
158
|
+
acc[this.resolveColumnName(key, field)] = it[key];
|
|
159
|
+
return acc;
|
|
160
|
+
}, {}));
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZ29EaWFsZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vbmdvL21vbmdvRGlhbGVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQThCLFFBQVEsRUFBYSxNQUFNLFNBQVMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBYTdDLE9BQU8sRUFDTCxZQUFZLEVBQ1osbUJBQW1CLEVBRW5CLFlBQVksRUFDWixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLE9BQU8sRUFDUCxPQUFPLEdBQ1IsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQixNQUFNLE9BQU8sWUFBYSxTQUFRLGVBQWU7SUFDL0MsS0FBSyxDQUFxQixNQUFlLEVBQUUsUUFBdUIsRUFBRSxFQUFFLEVBQUUsVUFBVSxLQUFtQixFQUFFO1FBQ3JHLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU3QixLQUFLLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXpDLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLFVBQVUsSUFBSSxVQUFVLEtBQUssU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDM0YsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDM0MsS0FBSyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQy9ELENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQzFCLENBQUMsR0FBRyxFQUFFLEdBQUcs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QUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDbEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMvQixHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNsRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFBRSxFQUFPLENBQUMsQ0FDWixDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEb2N1bWVudCwgdHlwZSBGaWx0ZXIsIE9iamVjdElkLCB0eXBlIFNvcnQgfSBmcm9tICdtb25nb2RiJztcbmltcG9ydCB7IEFic3RyYWN0RGlhbGVjdCB9IGZyb20gJy4uL2RpYWxlY3QvaW5kZXguanMnO1xuaW1wb3J0IHsgZ2V0TWV0YSB9IGZyb20gJy4uL2VudGl0eS9pbmRleC5qcyc7XG5pbXBvcnQgdHlwZSB7XG4gIEVudGl0eU1ldGEsXG4gIEZpZWxkVmFsdWUsXG4gIFF1ZXJ5LFxuICBRdWVyeU9wdGlvbnMsXG4gIFF1ZXJ5U2VsZWN0LFxuICBRdWVyeVNlbGVjdE1hcCxcbiAgUXVlcnlTb3J0LFxuICBRdWVyeVdoZXJlLFxuICBSZWxhdGlvbktleSxcbiAgVHlwZSxcbn0gZnJvbSAnLi4vdHlwZS9pbmRleC5qcyc7XG5pbXBvcnQge1xuICBidWlsZFNvcnRNYXAsXG4gIGJ1bGRRdWVyeVdoZXJlQXNNYXAsXG4gIHR5cGUgQ2FsbGJhY2tLZXksXG4gIGZpbGxPbkZpZWxkcyxcbiAgZmlsdGVyRmllbGRLZXlzLFxuICBmaWx0ZXJSZWxhdGlvbktleXMsXG4gIGdldEtleXMsXG4gIGhhc0tleXMsXG59IGZyb20gJy4uL3V0aWwvaW5kZXguanMnO1xuXG5leHBvcnQgY2xhc3MgTW9uZ29EaWFsZWN0IGV4dGVuZHMgQWJzdHJhY3REaWFsZWN0IHtcbiAgd2hlcmU8RSBleHRlbmRzIERvY3VtZW50PihlbnRpdHk6IFR5cGU8RT4sIHdoZXJlOiBRdWVyeVdoZXJlPEU+ID0ge30sIHsgc29mdERlbGV0ZSB9OiBRdWVyeU9wdGlvbnMgPSB7fSk6IEZpbHRlcjxFPiB7XG4gICAgY29uc3QgbWV0YSA9IGdldE1ldGEoZW50aXR5KTtcblxuICAgIHdoZXJlID0gYnVsZFF1ZXJ5V2hlcmVBc01hcChtZXRhLCB3aGVyZSk7XG5cbiAgICBpZiAobWV0YS5zb2Z0RGVsZXRlICYmIChzb2Z0RGVsZXRlIHx8IHNvZnREZWxldGUgPT09IHVuZGVmaW5lZCkgJiYgIXdoZXJlW21ldGEuc29mdERlbGV0ZV0pIHtcbiAgICAgIGNvbnN0IGZpZWxkID0gbWV0YS5maWVsZHNbbWV0YS5zb2Z0RGVsZXRlXTtcbiAgICAgIHdoZXJlW3RoaXMucmVzb2x2ZUNvbHVtbk5hbWUobWV0YS5zb2Z0RGVsZXRlLCBmaWVsZCldID0gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0S2V5cyh3aGVyZSkucmVkdWNlKFxuICAgICAgKGFjYywga2V5KSA9PiB7XG4gICAgICAgIGxldCB2YWx1ZSA9IHdoZXJlW2tleV07XG4gICAgICAgIGlmIChrZXkgPT09ICckYW5kJyB8fCBrZXkgPT09ICckb3InKSB7XG4gICAgICAgICAgYWNjW2tleV0gPSB2YWx1ZS5tYXAoKGZpbHRlckl0OiBRdWVyeVdoZXJlPEU+KSA9PiB0aGlzLndoZXJlKGVudGl0eSwgZmlsdGVySXQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBmaWVsZCA9IG1ldGEuZmllbGRzW2tleV07XG4gICAgICAgICAgaWYgKGtleSA9PT0gJ19pZCcgfHwga2V5ID09PSBtZXRhLmlkKSB7XG4gICAgICAgICAgICBrZXkgPSAnX2lkJztcbiAgICAgICAgICAgIHZhbHVlID0gdGhpcy5nZXRJZFZhbHVlKHZhbHVlKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkKSB7XG4gICAgICAgICAgICBrZXkgPSB0aGlzLnJlc29sdmVDb2x1bW5OYW1lKGtleSwgZmllbGQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlID0ge1xuICAgICAgICAgICAgICAkaW46IHZhbHVlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYWNjW2tleSBhcyBrZXlvZiBGaWx0ZXI8RT5dID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sXG4gICAgICB7fSBhcyBGaWx0ZXI8RT4sXG4gICAgKTtcbiAgfVxuXG4gIHNlbGVjdDxFIGV4dGVuZHMgRG9jdW1lbnQ+KGVudGl0eTogVHlwZTxFPiwgc2VsZWN0OiBRdWVyeVNlbGVjdDxFPik6IFF1ZXJ5U2VsZWN0TWFwPEU+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzZWxlY3QpKSB7XG4gICAgICByZXR1cm4gc2VsZWN0LnJlZHVjZShcbiAgICAgICAgKGFjYywgaXQpID0+IHtcbiAgICAgICAgICBhY2NbaXQgYXMgc3RyaW5nXSA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSxcbiAgICAgICAge30gc2F0aXNmaWVzIFF1ZXJ5U2VsZWN0TWFwPEU+LFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHNlbGVjdCBhcyBRdWVyeVNlbGVjdE1hcDxFPjtcbiAgfVxuXG4gIHNvcnQ8RSBleHRlbmRzIERvY3VtZW50PihlbnRpdHk6IFR5cGU8RT4sIHNvcnQ6IFF1ZXJ5U29ydDxFPik6IFNvcnQge1xuICAgIHJldHVybiBidWlsZFNvcnRNYXAoc29ydCkgYXMgU29ydDtcbiAgfVxuXG4gIGFnZ3JlZ2F0aW9uUGlwZWxpbmU8RSBleHRlbmRzIERvY3VtZW50PihlbnRpdHk6IFR5cGU8RT4sIHE6IFF1ZXJ5PEU+KTogTW9uZ29BZ2dyZWdhdGlvblBpcGVsaW5lRW50cnk8RT5bXSB7XG4gICAgY29uc3QgbWV0YSA9IGdldE1ldGEoZW50aXR5KTtcblxuICAgIGNvbnN0IHdoZXJlID0gdGhpcy53aGVyZShlbnRpdHksIHEuJHdoZXJlKTtcbiAgICBjb25zdCBzb3J0ID0gdGhpcy5zb3J0KGVudGl0eSwgcS4kc29ydCk7XG4gICAgY29uc3QgZmlyc3RQaXBlbGluZUVudHJ5OiBNb25nb0FnZ3JlZ2F0aW9uUGlwZWxpbmVFbnRyeTxFPiA9IHt9O1xuXG4gICAgaWYgKGhhc0tleXMod2hlcmUpKSB7XG4gICAgICBmaXJzdFBpcGVsaW5lRW50cnkuJG1hdGNoID0gd2hlcmU7XG4gICAgfVxuICAgIGlmIChoYXNLZXlzKHNvcnQpKSB7XG4gICAgICBmaXJzdFBpcGVsaW5lRW50cnkuJHNvcnQgPSBzb3J0O1xuICAgIH1cblxuICAgIGNvbnN0IHBpcGVsaW5lOiBNb25nb0FnZ3JlZ2F0aW9uUGlwZWxpbmVFbnRyeTxFPltdID0gW107XG5cbiAgICBpZiAoaGFzS2V5cyhmaXJzdFBpcGVsaW5lRW50cnkpKSB7XG4gICAgICBwaXBlbGluZS5wdXNoKGZpcnN0UGlwZWxpbmVFbnRyeSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVsS2V5cyA9IGZpbHRlclJlbGF0aW9uS2V5cyhtZXRhLCBxLiRzZWxlY3QpO1xuXG4gICAgZm9yIChjb25zdCByZWxLZXkgb2YgcmVsS2V5cykge1xuICAgICAgY29uc3QgcmVsT3B0cyA9IG1ldGEucmVsYXRpb25zW3JlbEtleV07XG5cbiAgICAgIGlmIChyZWxPcHRzLmNhcmRpbmFsaXR5ID09PSAnMW0nIHx8IHJlbE9wdHMuY2FyZGluYWxpdHkgPT09ICdtbScpIHtcbiAgICAgICAgLy8gJzFtJyBhbmQgJ21tJyBzaG91bGQgYmUgcmVzb2x2ZWQgaW4gYSBoaWdoZXIgbGF5ZXIgYmVjYXVzZSB0aGV5IHdpbGwgbmVlZCBtdWx0aXBsZSBxdWVyaWVzXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZWxFbnRpdHkgPSByZWxPcHRzLmVudGl0eSgpO1xuICAgICAgY29uc3QgcmVsTWV0YSA9IGdldE1ldGEocmVsRW50aXR5KTtcblxuICAgICAgaWYgKHJlbE9wdHMuY2FyZGluYWxpdHkgPT09ICdtMScpIHtcbiAgICAgICAgY29uc3QgbG9jYWxGaWVsZCA9IG1ldGEuZmllbGRzW3JlbE9wdHMucmVmZXJlbmNlc1swXS5sb2NhbF07XG4gICAgICAgIHBpcGVsaW5lLnB1c2goe1xuICAgICAgICAgICRsb29rdXA6IHtcbiAgICAgICAgICAgIGZyb206IHRoaXMucmVzb2x2ZVRhYmxlTmFtZShyZWxFbnRpdHksIHJlbE1ldGEpLFxuICAgICAgICAgICAgbG9jYWxGaWVsZDogdGhpcy5yZXNvbHZlQ29sdW1uTmFtZShyZWxPcHRzLnJlZmVyZW5jZXNbMF0ubG9jYWwsIGxvY2FsRmllbGQpLFxuICAgICAgICAgICAgZm9yZWlnbkZpZWxkOiAnX2lkJyxcbiAgICAgICAgICAgIGFzOiByZWxLZXksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBmb3JlaWduRmllbGQgPSByZWxNZXRhLmZpZWxkc1tyZWxPcHRzLnJlZmVyZW5jZXNbMF0uZm9yZWlnbl07XG4gICAgICAgIGNvbnN0IGZvcmVpZ25GaWVsZE5hbWUgPSB0aGlzLnJlc29sdmVDb2x1bW5OYW1lKHJlbE9wdHMucmVmZXJlbmNlc1swXS5mb3JlaWduLCBmb3JlaWduRmllbGQpO1xuICAgICAgICBjb25zdCByZWZlcmVuY2VXaGVyZSA9IHRoaXMud2hlcmUocmVsRW50aXR5LCB3aGVyZSk7XG4gICAgICAgIGNvbnN0IHJlZmVyZW5jZVNvcnQgPSB0aGlzLnNvcnQocmVsRW50aXR5LCBxLiRzb3J0KTtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlUGlwZWxpbmVFbnRyeTogTW9uZ29BZ2dyZWdhdGlvblBpcGVsaW5lRW50cnk8RmllbGRWYWx1ZTxFPj4gPSB7XG4gICAgICAgICAgJG1hdGNoOiB7IFtmb3JlaWduRmllbGROYW1lXTogcmVmZXJlbmNlV2hlcmUuX2lkIH0sXG4gICAgICAgIH07XG4gICAgICAgIGlmIChoYXNLZXlzKHJlZmVyZW5jZVNvcnQpKSB7XG4gICAgICAgICAgcmVmZXJlbmNlUGlwZWxpbmVFbnRyeS4kc29ydCA9IHJlZmVyZW5jZVNvcnQ7XG4gICAgICAgIH1cbiAgICAgICAgcGlwZWxpbmUucHVzaCh7XG4gICAgICAgICAgJGxvb2t1cDoge1xuICAgICAgICAgICAgZnJvbTogdGhpcy5yZXNvbHZlVGFibGVOYW1lKHJlbEVudGl0eSwgcmVsTWV0YSksXG4gICAgICAgICAgICBwaXBlbGluZTogW3JlZmVyZW5jZVBpcGVsaW5lRW50cnldLFxuICAgICAgICAgICAgYXM6IHJlbEtleSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcGlwZWxpbmUucHVzaCh7ICR1bndpbmQ6IHsgcGF0aDogYCQke3JlbEtleX1gLCBwcmVzZXJ2ZU51bGxBbmRFbXB0eUFycmF5czogdHJ1ZSB9IH0pO1xuICAgIH1cblxuICAgIHJldHVybiBwaXBlbGluZTtcbiAgfVxuXG4gIG5vcm1hbGl6ZUlkczxFIGV4dGVuZHMgRG9jdW1lbnQ+KG1ldGE6IEVudGl0eU1ldGE8RT4sIGRvY3M6IEVbXSk6IEVbXSB7XG4gICAgcmV0dXJuIGRvY3M/Lm1hcCgoZG9jKSA9PiB0aGlzLm5vcm1hbGl6ZUlkKG1ldGEsIGRvYykpO1xuICB9XG5cbiAgbm9ybWFsaXplSWQ8RSBleHRlbmRzIERvY3VtZW50PihtZXRhOiBFbnRpdHlNZXRhPEU+LCBkb2M6IEUpOiBFIHtcbiAgICBpZiAoIWRvYykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcyA9IGRvYyBhcyBhbnk7XG5cbiAgICBpZiAocmVzLl9pZCkge1xuICAgICAgcmVzW21ldGEuaWRdID0gcmVzLl9pZDtcbiAgICAgIGlmIChtZXRhLmlkICE9PSAnX2lkJykge1xuICAgICAgICBkZWxldGUgcmVzLl9pZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBnZXRLZXlzKG1ldGEuZmllbGRzKSkge1xuICAgICAgY29uc3QgZmllbGQgPSBtZXRhLmZpZWxkc1trZXldO1xuICAgICAgY29uc3QgZGJOYW1lID0gdGhpcy5yZXNvbHZlQ29sdW1uTmFtZShrZXksIGZpZWxkKTtcbiAgICAgIGlmIChkYk5hbWUgIT09IGtleSAmJiByZXNbZGJOYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJlc1trZXldID0gcmVzW2RiTmFtZV07XG4gICAgICAgIGRlbGV0ZSByZXNbZGJOYW1lXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByZWxLZXlzID0gZ2V0S2V5cyhtZXRhLnJlbGF0aW9ucykuZmlsdGVyKChrZXkpID0+IHJlc1trZXldKSBhcyBSZWxhdGlvbktleTxFPltdO1xuXG4gICAgZm9yIChjb25zdCByZWxLZXkgb2YgcmVsS2V5cykge1xuICAgICAgY29uc3QgcmVsT3B0cyA9IG1ldGEucmVsYXRpb25zW3JlbEtleV07XG4gICAgICBjb25zdCByZWxNZXRhID0gZ2V0TWV0YShyZWxPcHRzLmVudGl0eSgpKTtcbiAgICAgIHJlc1tyZWxLZXldID0gQXJyYXkuaXNBcnJheShyZXNbcmVsS2V5XSlcbiAgICAgICAgPyB0aGlzLm5vcm1hbGl6ZUlkcyhyZWxNZXRhLCByZXNbcmVsS2V5XSlcbiAgICAgICAgOiB0aGlzLm5vcm1hbGl6ZUlkKHJlbE1ldGEsIHJlc1tyZWxLZXldKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgZ2V0SWRWYWx1ZTxUIGV4dGVuZHMgSWRWYWx1ZT4odmFsdWU6IFQpOiBUIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBPYmplY3RJZCkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG5ldyBPYmplY3RJZCh2YWx1ZSkgYXMgVDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0UGVyc2lzdGFibGU8RT4obWV0YTogRW50aXR5TWV0YTxFPiwgcGF5bG9hZDogRSwgY2FsbGJhY2tLZXk6IENhbGxiYWNrS2V5KTogRSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UGVyc2lzdGFibGVzKG1ldGEsIHBheWxvYWQsIGNhbGxiYWNrS2V5KVswXTtcbiAgfVxuXG4gIGdldFBlcnNpc3RhYmxlczxFPihtZXRhOiBFbnRpdHlNZXRhPEU+LCBwYXlsb2FkOiBFIHwgRVtdLCBjYWxsYmFja0tleTogQ2FsbGJhY2tLZXkpOiBFW10ge1xuICAgIGNvbnN0IHBheWxvYWRzID0gZmlsbE9uRmllbGRzKG1ldGEsIHBheWxvYWQsIGNhbGxiYWNrS2V5KTtcbiAgICBjb25zdCBwZXJzaXN0YWJsZUtleXMgPSBmaWx0ZXJGaWVsZEtleXMobWV0YSwgcGF5bG9hZHNbMF0sIGNhbGxiYWNrS2V5KTtcbiAgICByZXR1cm4gcGF5bG9hZHMubWFwKChpdCkgPT5cbiAgICAgIHBlcnNpc3RhYmxlS2V5cy5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gbWV0YS5maWVsZHNba2V5XTtcbiAgICAgICAgYWNjW3RoaXMucmVzb2x2ZUNvbHVtbk5hbWUoa2V5LCBmaWVsZCldID0gaXRba2V5XTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIHt9IGFzIEUpLFxuICAgICk7XG4gIH1cbn1cblxudHlwZSBNb25nb0FnZ3JlZ2F0aW9uUGlwZWxpbmVFbnRyeTxFIGV4dGVuZHMgRG9jdW1lbnQ+ID0ge1xuICByZWFkb25seSAkbG9va3VwPzogTW9uZ29BZ2dyZWdhdGlvbkxvb2t1cDxFPjtcbiAgJG1hdGNoPzogRmlsdGVyPEU+IHwgUmVjb3JkPHN0cmluZywgYW55PjtcbiAgJHNvcnQ/OiBTb3J0O1xuICByZWFkb25seSAkdW53aW5kPzogTW9uZ29BZ2dyZWdhdGlvblVud2luZDtcbn07XG5cbnR5cGUgTW9uZ29BZ2dyZWdhdGlvbkxvb2t1cDxFIGV4dGVuZHMgRG9jdW1lbnQ+ID0ge1xuICByZWFkb25seSBmcm9tPzogc3RyaW5nO1xuICByZWFkb25seSBmb3JlaWduRmllbGQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGxvY2FsRmllbGQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBpcGVsaW5lPzogTW9uZ29BZ2dyZWdhdGlvblBpcGVsaW5lRW50cnk8RmllbGRWYWx1ZTxFPj5bXTtcbiAgcmVhZG9ubHkgYXM/OiBSZWxhdGlvbktleTxFPjtcbn07XG5cbnR5cGUgTW9uZ29BZ2dyZWdhdGlvblVud2luZCA9IHtcbiAgcmVhZG9ubHkgcGF0aD86IHN0cmluZztcbiAgcmVhZG9ubHkgcHJlc2VydmVOdWxsQW5kRW1wdHlBcnJheXM/OiBib29sZWFuO1xufTtcblxudHlwZSBJZFZhbHVlID0gc3RyaW5nIHwgT2JqZWN0SWQ7XG4iXX0=
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Document, MongoClient } from 'mongodb';
|
|
2
|
+
import { AbstractQuerier } from '../querier/index.js';
|
|
3
|
+
import type { ExtraOptions, IdValue, Query, QueryConflictPaths, QueryOptions, QuerySearch, Type } from '../type/index.js';
|
|
4
|
+
import type { MongoDialect } from './mongoDialect.js';
|
|
5
|
+
export declare class MongodbQuerier extends AbstractQuerier {
|
|
6
|
+
readonly dialect: MongoDialect;
|
|
7
|
+
readonly conn: MongoClient;
|
|
8
|
+
readonly extra?: ExtraOptions;
|
|
9
|
+
private session;
|
|
10
|
+
constructor(dialect: MongoDialect, conn: MongoClient, extra?: ExtraOptions);
|
|
11
|
+
private execute;
|
|
12
|
+
findMany<E extends Document>(entity: Type<E>, q: Query<E>): Promise<E[]>;
|
|
13
|
+
count<E extends Document>(entity: Type<E>, qm?: QuerySearch<E>): Promise<number>;
|
|
14
|
+
insertMany<E extends Document>(entity: Type<E>, payloads: E[]): Promise<IdValue<E>[]>;
|
|
15
|
+
updateMany<E extends Document>(entity: Type<E>, qm: QuerySearch<E>, payload: E): Promise<number>;
|
|
16
|
+
upsertOne<E extends Document>(entity: Type<E>, conflictPaths: QueryConflictPaths<E>, payload: E): Promise<{
|
|
17
|
+
firstId: string;
|
|
18
|
+
changes: number;
|
|
19
|
+
}>;
|
|
20
|
+
deleteMany<E extends Document>(entity: Type<E>, qm: QuerySearch<E>, opts?: QueryOptions): Promise<number>;
|
|
21
|
+
get hasOpenTransaction(): boolean;
|
|
22
|
+
collection<E extends Document>(entity: Type<E>): import("mongodb").Collection<E>;
|
|
23
|
+
get db(): import("mongodb").Db;
|
|
24
|
+
beginTransaction(): Promise<void>;
|
|
25
|
+
commitTransaction(): Promise<void>;
|
|
26
|
+
rollbackTransaction(): Promise<void>;
|
|
27
|
+
internalRelease(): Promise<void>;
|
|
28
|
+
}
|