@uql/core 1.0.12 → 3.0.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 +243 -0
- package/LICENSE.md +2 -2
- package/dist/CHANGELOG.md +186 -0
- package/dist/README.md +413 -0
- 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 +84 -16
- 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,190 @@
|
|
|
1
|
+
import { Router as expressRouter } from 'express';
|
|
2
|
+
import { getEntities, getMeta } from '../entity/index.js';
|
|
3
|
+
import { getQuerier } from '../index.js';
|
|
4
|
+
import { kebabCase } from '../util/index.js';
|
|
5
|
+
import { parseQuery } from './query.util.js';
|
|
6
|
+
export function querierMiddleware(opts = {}) {
|
|
7
|
+
const router = expressRouter();
|
|
8
|
+
const { include, exclude, ...extra } = opts;
|
|
9
|
+
let entities = include ?? getEntities();
|
|
10
|
+
if (exclude) {
|
|
11
|
+
entities = entities.filter((entity) => !opts.exclude.includes(entity));
|
|
12
|
+
}
|
|
13
|
+
if (!entities.length) {
|
|
14
|
+
throw new TypeError('no entities for the uql express middleware');
|
|
15
|
+
}
|
|
16
|
+
for (const entity of entities) {
|
|
17
|
+
const path = kebabCase(entity.name);
|
|
18
|
+
const subRouter = buildQuerierRouter(entity, extra);
|
|
19
|
+
router.use('/' + path, subRouter);
|
|
20
|
+
}
|
|
21
|
+
return router;
|
|
22
|
+
}
|
|
23
|
+
export function buildQuerierRouter(entity, opts) {
|
|
24
|
+
const meta = getMeta(entity);
|
|
25
|
+
const router = expressRouter();
|
|
26
|
+
router.use((req, res, next) => {
|
|
27
|
+
pre(req, meta, opts);
|
|
28
|
+
next();
|
|
29
|
+
});
|
|
30
|
+
router.get('/one', async (req, res, next) => {
|
|
31
|
+
const q = req.query;
|
|
32
|
+
const querier = await getQuerier();
|
|
33
|
+
try {
|
|
34
|
+
const data = await querier.findOne(entity, q);
|
|
35
|
+
res.json({ data, count: data ? 1 : 0 });
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
next(err);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
router.get('/:id', async (req, res, next) => {
|
|
42
|
+
const id = req.params.id;
|
|
43
|
+
const q = req.query;
|
|
44
|
+
q.$where ??= {};
|
|
45
|
+
if (Array.isArray(q.$where)) {
|
|
46
|
+
q.$where.push(id);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
q.$where[meta.id] = id;
|
|
50
|
+
}
|
|
51
|
+
const querier = await getQuerier();
|
|
52
|
+
try {
|
|
53
|
+
const data = await querier.findOne(entity, q);
|
|
54
|
+
res.json({ data, count: data ? 1 : 0 });
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
next(err);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
router.get('/', async (req, res, next) => {
|
|
61
|
+
const q = req.query;
|
|
62
|
+
const querier = await getQuerier();
|
|
63
|
+
try {
|
|
64
|
+
const findManyPromise = querier.findMany(entity, q);
|
|
65
|
+
const countPromise = req.query.count ? querier.count(entity, q) : undefined;
|
|
66
|
+
const [data, count] = await Promise.all([findManyPromise, countPromise]);
|
|
67
|
+
res.json({ data, count });
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
next(err);
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
router.get('/count', async (req, res, next) => {
|
|
74
|
+
const q = req.query;
|
|
75
|
+
const querier = await getQuerier();
|
|
76
|
+
try {
|
|
77
|
+
const count = await querier.count(entity, q);
|
|
78
|
+
res.json({ data: count, count });
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
next(err);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
router.post('/', async (req, res, next) => {
|
|
85
|
+
const payload = req.body;
|
|
86
|
+
const querier = await getQuerier();
|
|
87
|
+
try {
|
|
88
|
+
await querier.beginTransaction();
|
|
89
|
+
const id = await querier.insertOne(entity, payload);
|
|
90
|
+
await querier.commitTransaction();
|
|
91
|
+
res.json({ data: id, count: id ? 1 : 0 });
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
await querier.rollbackTransaction();
|
|
95
|
+
next(err);
|
|
96
|
+
}
|
|
97
|
+
finally {
|
|
98
|
+
await querier.release();
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
router.patch('/:id', async (req, res, next) => {
|
|
102
|
+
const payload = req.body;
|
|
103
|
+
const id = req.params.id;
|
|
104
|
+
const q = req.query;
|
|
105
|
+
q.$where ??= {};
|
|
106
|
+
if (Array.isArray(q.$where)) {
|
|
107
|
+
q.$where.push(id);
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
q.$where[meta.id] = id;
|
|
111
|
+
}
|
|
112
|
+
const querier = await getQuerier();
|
|
113
|
+
try {
|
|
114
|
+
await querier.beginTransaction();
|
|
115
|
+
const count = await querier.updateMany(entity, q, payload);
|
|
116
|
+
await querier.commitTransaction();
|
|
117
|
+
res.json({ data: req.params.id, count });
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
await querier.rollbackTransaction();
|
|
121
|
+
next(err);
|
|
122
|
+
}
|
|
123
|
+
finally {
|
|
124
|
+
await querier.release();
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
router.delete('/:id', async (req, res, next) => {
|
|
128
|
+
const id = req.params.id;
|
|
129
|
+
const q = req.query;
|
|
130
|
+
q.$where ??= {};
|
|
131
|
+
if (Array.isArray(q.$where)) {
|
|
132
|
+
q.$where.push(id);
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
q.$where[meta.id] = id;
|
|
136
|
+
}
|
|
137
|
+
const querier = await getQuerier();
|
|
138
|
+
try {
|
|
139
|
+
await querier.beginTransaction();
|
|
140
|
+
const count = await querier.deleteMany(entity, q, {
|
|
141
|
+
softDelete: !!req.query.softDelete,
|
|
142
|
+
});
|
|
143
|
+
await querier.commitTransaction();
|
|
144
|
+
res.json({ data: req.params.id, count });
|
|
145
|
+
}
|
|
146
|
+
catch (err) {
|
|
147
|
+
await querier.rollbackTransaction();
|
|
148
|
+
next(err);
|
|
149
|
+
}
|
|
150
|
+
finally {
|
|
151
|
+
await querier.release();
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
router.delete('/', async (req, res, next) => {
|
|
155
|
+
const q = req.query;
|
|
156
|
+
const querier = await getQuerier();
|
|
157
|
+
let ids = [];
|
|
158
|
+
let count = 0;
|
|
159
|
+
try {
|
|
160
|
+
await querier.beginTransaction();
|
|
161
|
+
const founds = await querier.findMany(entity, q);
|
|
162
|
+
if (founds.length) {
|
|
163
|
+
ids = founds.map((found) => found[meta.id]);
|
|
164
|
+
count = await querier.deleteMany(entity, { $where: ids }, { softDelete: !!req.query.softDelete });
|
|
165
|
+
}
|
|
166
|
+
await querier.commitTransaction();
|
|
167
|
+
res.json({ data: ids, count });
|
|
168
|
+
}
|
|
169
|
+
catch (err) {
|
|
170
|
+
await querier.rollbackTransaction();
|
|
171
|
+
next(err);
|
|
172
|
+
}
|
|
173
|
+
finally {
|
|
174
|
+
await querier.release();
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
return router;
|
|
178
|
+
}
|
|
179
|
+
function pre(req, meta, extra) {
|
|
180
|
+
const method = req.method;
|
|
181
|
+
parseQuery(req);
|
|
182
|
+
extra.pre?.(req, meta);
|
|
183
|
+
if (method === 'POST' || method === 'PATCH' || method === 'PUT') {
|
|
184
|
+
extra.preSave?.(req, meta);
|
|
185
|
+
}
|
|
186
|
+
else if (method === 'GET' || method === 'DELETE') {
|
|
187
|
+
extra.preFilter?.(req, meta);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcmllck1pZGRsZXdhcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXhwcmVzcy9xdWVyaWVyTWlkZGxld2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxJQUFJLGFBQWEsRUFBNkIsTUFBTSxTQUFTLENBQUM7QUFDN0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFN0MsTUFBTSxVQUFVLGlCQUFpQixDQUFDLE9BQTBCLEVBQUU7SUFDNUQsTUFBTSxNQUFNLEdBQUcsYUFBYSxFQUFFLENBQUM7SUFFL0IsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFFNUMsSUFBSSxRQUFRLEdBQUcsT0FBTyxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBRXhDLElBQUksT0FBTyxFQUFFLENBQUM7UUFDWixRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3JCLE1BQU0sSUFBSSxTQUFTLENBQUMsNENBQTRDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsS0FBSyxNQUFNLE1BQU0sSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUM5QixNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BD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QztJQUMxQixVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEIsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN2QixJQUFJLE1BQU0sS0FBSyxNQUFNLElBQUksTUFBTSxLQUFLLE9BQU8sSUFBSSxNQUFNLEtBQUssS0FBSyxFQUFFLENBQUM7UUFDaEUsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO1NBQU0sSUFBSSxNQUFNLEtBQUssS0FBSyxJQUFJLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNuRCxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGVyIGFzIGV4cHJlc3NSb3V0ZXIsIHR5cGUgUmVxdWVzdCwgdHlwZSBSb3V0ZXIgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCB7IGdldEVudGl0aWVzLCBnZXRNZXRhIH0gZnJvbSAnLi4vZW50aXR5L2luZGV4LmpzJztcbmltcG9ydCB7IGdldFF1ZXJpZXIgfSBmcm9tICcuLi9pbmRleC5qcyc7XG5pbXBvcnQgdHlwZSB7IEVudGl0eU1ldGEsIElkVmFsdWUsIFF1ZXJ5LCBUeXBlIH0gZnJvbSAnLi4vdHlwZS9pbmRleC5qcyc7XG5pbXBvcnQgeyBrZWJhYkNhc2UgfSBmcm9tICcuLi91dGlsL2luZGV4LmpzJztcbmltcG9ydCB7IHBhcnNlUXVlcnkgfSBmcm9tICcuL3F1ZXJ5LnV0aWwuanMnO1xuXG5leHBvcnQgZnVuY3Rpb24gcXVlcmllck1pZGRsZXdhcmUob3B0czogTWlkZGxld2FyZU9wdGlvbnMgPSB7fSk6IFJvdXRlciB7XG4gIGNvbnN0IHJvdXRlciA9IGV4cHJlc3NSb3V0ZXIoKTtcblxuICBjb25zdCB7IGluY2x1ZGUsIGV4Y2x1ZGUsIC4uLmV4dHJhIH0gPSBvcHRzO1xuXG4gIGxldCBlbnRpdGllcyA9IGluY2x1ZGUgPz8gZ2V0RW50aXRpZXMoKTtcblxuICBpZiAoZXhjbHVkZSkge1xuICAgIGVudGl0aWVzID0gZW50aXRpZXMuZmlsdGVyKChlbnRpdHkpID0+ICFvcHRzLmV4Y2x1ZGUuaW5jbHVkZXMoZW50aXR5KSk7XG4gIH1cblxuICBpZiAoIWVudGl0aWVzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ25vIGVudGl0aWVzIGZvciB0aGUgdXFsIGV4cHJlc3MgbWlkZGxld2FyZScpO1xuICB9XG5cbiAgZm9yIChjb25zdCBlbnRpdHkgb2YgZW50aXRpZXMpIHtcbiAgICBjb25zdCBwYXRoID0ga2ViYWJDYXNlKGVudGl0eS5uYW1lKTtcbiAgICBjb25zdCBzdWJSb3V0ZXIgPSBidWlsZFF1ZXJpZXJSb3V0ZXIoZW50aXR5LCBleHRyYSk7XG4gICAgcm91dGVyLnVzZSgnLycgKyBwYXRoLCBzdWJSb3V0ZXIpO1xuICB9XG5cbiAgcmV0dXJuIHJvdXRlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUXVlcmllclJvdXRlcjxFPihlbnRpdHk6IFR5cGU8RT4sIG9wdHM6IEV4dHJhT3B0aW9ucyk6IFJvdXRlciB7XG4gIGNvbnN0IG1ldGEgPSBnZXRNZXRhKGVudGl0eSk7XG4gIGNvbnN0IHJvdXRlciA9IGV4cHJlc3NSb3V0ZXIoKTtcblxuICByb3V0ZXIudXNlKChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIHByZShyZXEsIG1ldGEsIG9wdHMpO1xuICAgIG5leHQoKTtcbiAgfSk7XG5cbiAgcm91dGVyLmdldCgnL29uZScsIGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHEgPSByZXEucXVlcnkgYXMgUXVlcnk8RT47XG4gICAgY29uc3QgcXVlcmllciA9IGF3YWl0IGdldFF1ZXJpZXIoKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHF1ZXJpZXIuZmluZE9uZShlbnRpdHksIHEpO1xuICAgICAgcmVzLmpzb24oeyBkYXRhLCBjb3VudDogZGF0YSA/IDEgOiAwIH0pO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICBuZXh0KGVycik7XG4gICAgfVxuICB9KTtcblxuICByb3V0ZXIuZ2V0KCcvOmlkJywgYXN5bmMgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3QgaWQgPSByZXEucGFyYW1zLmlkIGFzIElkVmFsdWU8RT47XG4gICAgY29uc3QgcSA9IHJlcS5xdWVyeSBhcyBRdWVyeTxFPjtcbiAgICBxLiR3aGVyZSA/Pz0ge307XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocS4kd2hlcmUpKSB7XG4gICAgICBxLiR3aGVyZS5wdXNoKGlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcS4kd2hlcmVbbWV0YS5pZCBhcyBzdHJpbmddID0gaWQ7XG4gICAgfVxuICAgIGNvbnN0IHF1ZXJpZXIgPSBhd2FpdCBnZXRRdWVyaWVyKCk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBxdWVyaWVyLmZpbmRPbmUoZW50aXR5LCBxKTtcbiAgICAgIHJlcy5qc29uKHsgZGF0YSwgY291bnQ6IGRhdGEgPyAxIDogMCB9KTtcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgbmV4dChlcnIpO1xuICAgIH1cbiAgfSk7XG5cbiAgcm91dGVyLmdldCgnLycsIGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHEgPSByZXEucXVlcnkgYXMgUXVlcnk8RT47XG4gICAgY29uc3QgcXVlcmllciA9IGF3YWl0IGdldFF1ZXJpZXIoKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZmluZE1hbnlQcm9taXNlID0gcXVlcmllci5maW5kTWFueShlbnRpdHksIHEpO1xuICAgICAgY29uc3QgY291bnRQcm9taXNlID0gcmVxLnF1ZXJ5LmNvdW50ID8gcXVlcmllci5jb3VudChlbnRpdHksIHEpIDogdW5kZWZpbmVkO1xuICAgICAgY29uc3QgW2RhdGEsIGNvdW50XSA9IGF3YWl0IFByb21pc2UuYWxsKFtmaW5kTWFueVByb21pc2UsIGNvdW50UHJvbWlzZV0pO1xuICAgICAgcmVzLmpzb24oeyBkYXRhLCBjb3VudCB9KTtcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgbmV4dChlcnIpO1xuICAgIH1cbiAgfSk7XG5cbiAgcm91dGVyLmdldCgnL2NvdW50JywgYXN5bmMgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3QgcSA9IHJlcS5xdWVyeSBhcyBRdWVyeTxFPjtcbiAgICBjb25zdCBxdWVyaWVyID0gYXdhaXQgZ2V0UXVlcmllcigpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjb3VudCA9IGF3YWl0IHF1ZXJpZXIuY291bnQoZW50aXR5LCBxKTtcbiAgICAgIHJlcy5qc29uKHsgZGF0YTogY291bnQsIGNvdW50IH0pO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICBuZXh0KGVycik7XG4gICAgfVxuICB9KTtcblxuICByb3V0ZXIucG9zdCgnLycsIGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHBheWxvYWQgPSByZXEuYm9keSBhcyBFO1xuICAgIGNvbnN0IHF1ZXJpZXIgPSBhd2FpdCBnZXRRdWVyaWVyKCk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHF1ZXJpZXIuYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgICAgY29uc3QgaWQgPSBhd2FpdCBxdWVyaWVyLmluc2VydE9uZShlbnRpdHksIHBheWxvYWQpO1xuICAgICAgYXdhaXQgcXVlcmllci5jb21taXRUcmFuc2FjdGlvbigpO1xuICAgICAgcmVzLmpzb24oeyBkYXRhOiBpZCwgY291bnQ6IGlkID8gMSA6IDAgfSk7XG4gICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgIGF3YWl0IHF1ZXJpZXIucm9sbGJhY2tUcmFuc2FjdGlvbigpO1xuICAgICAgbmV4dChlcnIpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBxdWVyaWVyLnJlbGVhc2UoKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJvdXRlci5wYXRjaCgnLzppZCcsIGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHBheWxvYWQgPSByZXEuYm9keSBhcyBFO1xuICAgIGNvbnN0IGlkID0gcmVxLnBhcmFtcy5pZCBhcyBJZFZhbHVlPEU+O1xuICAgIGNvbnN0IHEgPSByZXEucXVlcnkgYXMgUXVlcnk8RT47XG4gICAgcS4kd2hlcmUgPz89IHt9O1xuICAgIGlmIChBcnJheS5pc0FycmF5KHEuJHdoZXJlKSkge1xuICAgICAgcS4kd2hlcmUucHVzaChpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHEuJHdoZXJlW21ldGEuaWQgYXMgc3RyaW5nXSA9IGlkO1xuICAgIH1cbiAgICBjb25zdCBxdWVyaWVyID0gYXdhaXQgZ2V0UXVlcmllcigpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBxdWVyaWVyLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICAgIGNvbnN0IGNvdW50ID0gYXdhaXQgcXVlcmllci51cGRhdGVNYW55KGVudGl0eSwgcSwgcGF5bG9hZCk7XG4gICAgICBhd2FpdCBxdWVyaWVyLmNvbW1pdFRyYW5zYWN0aW9uKCk7XG4gICAgICByZXMuanNvbih7IGRhdGE6IHJlcS5wYXJhbXMuaWQsIGNvdW50IH0pO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICBhd2FpdCBxdWVyaWVyLnJvbGxiYWNrVHJhbnNhY3Rpb24oKTtcbiAgICAgIG5leHQoZXJyKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgcXVlcmllci5yZWxlYXNlKCk7XG4gICAgfVxuICB9KTtcblxuICByb3V0ZXIuZGVsZXRlKCcvOmlkJywgYXN5bmMgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3QgaWQgPSByZXEucGFyYW1zLmlkIGFzIElkVmFsdWU8RT47XG4gICAgY29uc3QgcSA9IHJlcS5xdWVyeSBhcyBRdWVyeTxFPjtcbiAgICBxLiR3aGVyZSA/Pz0ge307XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocS4kd2hlcmUpKSB7XG4gICAgICBxLiR3aGVyZS5wdXNoKGlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcS4kd2hlcmVbbWV0YS5pZCBhcyBzdHJpbmddID0gaWQ7XG4gICAgfVxuICAgIGNvbnN0IHF1ZXJpZXIgPSBhd2FpdCBnZXRRdWVyaWVyKCk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHF1ZXJpZXIuYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgICAgY29uc3QgY291bnQgPSBhd2FpdCBxdWVyaWVyLmRlbGV0ZU1hbnkoZW50aXR5LCBxLCB7XG4gICAgICAgIHNvZnREZWxldGU6ICEhcmVxLnF1ZXJ5LnNvZnREZWxldGUsXG4gICAgICB9KTtcbiAgICAgIGF3YWl0IHF1ZXJpZXIuY29tbWl0VHJhbnNhY3Rpb24oKTtcbiAgICAgIHJlcy5qc29uKHsgZGF0YTogcmVxLnBhcmFtcy5pZCwgY291bnQgfSk7XG4gICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgIGF3YWl0IHF1ZXJpZXIucm9sbGJhY2tUcmFuc2FjdGlvbigpO1xuICAgICAgbmV4dChlcnIpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBxdWVyaWVyLnJlbGVhc2UoKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJvdXRlci5kZWxldGUoJy8nLCBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBxID0gcmVxLnF1ZXJ5IGFzIFF1ZXJ5PEU+O1xuICAgIGNvbnN0IHF1ZXJpZXIgPSBhd2FpdCBnZXRRdWVyaWVyKCk7XG4gICAgbGV0IGlkczogSWRWYWx1ZTxFPltdID0gW107XG4gICAgbGV0IGNvdW50ID0gMDtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgcXVlcmllci5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgICBjb25zdCBmb3VuZHMgPSBhd2FpdCBxdWVyaWVyLmZpbmRNYW55KGVudGl0eSwgcSk7XG4gICAgICBpZiAoZm91bmRzLmxlbmd0aCkge1xuICAgICAgICBpZHMgPSBmb3VuZHMubWFwKChmb3VuZCkgPT4gZm91bmRbbWV0YS5pZF0pO1xuICAgICAgICBjb3VudCA9IGF3YWl0IHF1ZXJpZXIuZGVsZXRlTWFueShlbnRpdHksIHsgJHdoZXJlOiBpZHMgfSwgeyBzb2Z0RGVsZXRlOiAhIXJlcS5xdWVyeS5zb2Z0RGVsZXRlIH0pO1xuICAgICAgfVxuICAgICAgYXdhaXQgcXVlcmllci5jb21taXRUcmFuc2FjdGlvbigpO1xuICAgICAgcmVzLmpzb24oeyBkYXRhOiBpZHMsIGNvdW50IH0pO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICBhd2FpdCBxdWVyaWVyLnJvbGxiYWNrVHJhbnNhY3Rpb24oKTtcbiAgICAgIG5leHQoZXJyKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgcXVlcmllci5yZWxlYXNlKCk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gcm91dGVyO1xufVxuXG5mdW5jdGlvbiBwcmUocmVxOiBSZXF1ZXN0LCBtZXRhOiBFbnRpdHlNZXRhPGFueT4sIGV4dHJhOiBFeHRyYU9wdGlvbnMpIHtcbiAgY29uc3QgbWV0aG9kID0gcmVxLm1ldGhvZDtcbiAgcGFyc2VRdWVyeShyZXEpO1xuICBleHRyYS5wcmU/LihyZXEsIG1ldGEpO1xuICBpZiAobWV0aG9kID09PSAnUE9TVCcgfHwgbWV0aG9kID09PSAnUEFUQ0gnIHx8IG1ldGhvZCA9PT0gJ1BVVCcpIHtcbiAgICBleHRyYS5wcmVTYXZlPy4ocmVxLCBtZXRhKTtcbiAgfSBlbHNlIGlmIChtZXRob2QgPT09ICdHRVQnIHx8IG1ldGhvZCA9PT0gJ0RFTEVURScpIHtcbiAgICBleHRyYS5wcmVGaWx0ZXI/LihyZXEsIG1ldGEpO1xuICB9XG59XG5cbnR5cGUgRXh0cmFPcHRpb25zID0ge1xuICAvKipcbiAgICogQWxsb3cgYXVnbWVudCBhbnkga2luZCBvZiByZXF1ZXN0IGJlZm9yZSBpdCBydW5zXG4gICAqL1xuICByZWFkb25seSBwcmU/OiBQcmU7XG4gIC8qKlxuICAgKiBBbGxvdyBhdWdtZW50IGEgc2F2aW5nIHJlcXVlc3QgKFBPU1QsIFBBVENILCBQVVQpIGJlZm9yZSBpdCBydW5zXG4gICAqL1xuICByZWFkb25seSBwcmVTYXZlPzogUHJlU2F2ZTtcbiAgLyoqXG4gICAqIEFsbG93IGF1Z21lbnQgYSBmaWx0ZXJpbmcgcmVxdWVzdCAoR0VULCBQVVQsIERFTEVURSkgYmVmb3JlIGl0IHJ1bnNcbiAgICovXG4gIHJlYWRvbmx5IHByZUZpbHRlcj86IFByZUZpbHRlcjtcbn07XG5cbnR5cGUgTWlkZGxld2FyZU9wdGlvbnMgPSB7XG4gIHJlYWRvbmx5IGluY2x1ZGU/OiBUeXBlPHVua25vd24+W107XG4gIHJlYWRvbmx5IGV4Y2x1ZGU/OiBUeXBlPHVua25vd24+W107XG59ICYgRXh0cmFPcHRpb25zO1xuXG50eXBlIFByZSA9IDxFID0gdW5rbm93bj4ocmVxOiBSZXF1ZXN0LCBtZXRhOiBFbnRpdHlNZXRhPEU+KSA9PiB2b2lkO1xudHlwZSBQcmVTYXZlID0gPEUgPSB1bmtub3duPihyZXE6IFJlcXVlc3QsIG1ldGE6IEVudGl0eU1ldGE8RT4pID0+IHZvaWQ7XG50eXBlIFByZUZpbHRlciA9IDxFID0gdW5rbm93bj4ocmVxOiBSZXF1ZXN0LCBtZXRhOiBFbnRpdHlNZXRhPEU+KSA9PiB2b2lkO1xuIl19
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export function parseQuery(req) {
|
|
2
|
+
req.query ??= {};
|
|
3
|
+
const qmsSrc = req.query;
|
|
4
|
+
const qm = qmsSrc;
|
|
5
|
+
if (qmsSrc.$select) {
|
|
6
|
+
qm.$select = JSON.parse(qmsSrc.$select);
|
|
7
|
+
}
|
|
8
|
+
qm.$where = qmsSrc.$where ? JSON.parse(qmsSrc.$where) : {};
|
|
9
|
+
if (qmsSrc.$sort) {
|
|
10
|
+
qm.$sort = JSON.parse(qmsSrc.$sort);
|
|
11
|
+
}
|
|
12
|
+
if (qmsSrc.$skip) {
|
|
13
|
+
qm.$skip = Number(qmsSrc.$skip);
|
|
14
|
+
}
|
|
15
|
+
if (qmsSrc.$limit) {
|
|
16
|
+
qm.$limit = Number(qmsSrc.$limit);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leHByZXNzL3F1ZXJ5LnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxVQUFVLFVBQVUsQ0FBQyxHQUFZO0lBQ3JDLEdBQUcsQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDO0lBQ2pCLE1BQU0sTUFBTSxHQUFxQixHQUFHLENBQUMsS0FBSyxDQUFDO0lBQzNDLE1BQU0sRUFBRSxHQUFHLE1BQW1DLENBQUM7SUFDL0MsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbkIsRUFBRSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQ0QsRUFBRSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzNELElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pCLEVBQUUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUNELElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pCLEVBQUUsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbEIsRUFBRSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSZXF1ZXN0IH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgdHlwZSB7IFF1ZXJ5LCBRdWVyeVN0cmluZ2lmaWVkIH0gZnJvbSAnLi4vdHlwZS9pbmRleC5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVF1ZXJ5KHJlcTogUmVxdWVzdCkge1xuICByZXEucXVlcnkgPz89IHt9O1xuICBjb25zdCBxbXNTcmM6IFF1ZXJ5U3RyaW5naWZpZWQgPSByZXEucXVlcnk7XG4gIGNvbnN0IHFtID0gcW1zU3JjIGFzIHVua25vd24gYXMgUXVlcnk8dW5rbm93bj47XG4gIGlmIChxbXNTcmMuJHNlbGVjdCkge1xuICAgIHFtLiRzZWxlY3QgPSBKU09OLnBhcnNlKHFtc1NyYy4kc2VsZWN0KTtcbiAgfVxuICBxbS4kd2hlcmUgPSBxbXNTcmMuJHdoZXJlID8gSlNPTi5wYXJzZShxbXNTcmMuJHdoZXJlKSA6IHt9O1xuICBpZiAocW1zU3JjLiRzb3J0KSB7XG4gICAgcW0uJHNvcnQgPSBKU09OLnBhcnNlKHFtc1NyYy4kc29ydCk7XG4gIH1cbiAgaWYgKHFtc1NyYy4kc2tpcCkge1xuICAgIHFtLiRza2lwID0gTnVtYmVyKHFtc1NyYy4kc2tpcCk7XG4gIH1cbiAgaWYgKHFtc1NyYy4kbGltaXQpIHtcbiAgICBxbS4kbGltaXQgPSBOdW1iZXIocW1zU3JjLiRsaW1pdCk7XG4gIH1cbn1cbiJdfQ==
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './dialect/index.js';
|
|
2
|
+
export * from './entity/index.js';
|
|
3
|
+
export * from './migrate/index.js';
|
|
4
|
+
export * from './namingStrategy/index.js';
|
|
5
|
+
export * from './options.js';
|
|
6
|
+
export * from './querier/index.js';
|
|
7
|
+
export * from './repository/index.js';
|
|
8
|
+
export * from './type/index.js';
|
|
9
|
+
export * from './util/index.js';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from './dialect/index.js';
|
|
2
|
+
export * from './entity/index.js';
|
|
3
|
+
export * from './migrate/index.js';
|
|
4
|
+
export * from './namingStrategy/index.js';
|
|
5
|
+
export * from './options.js';
|
|
6
|
+
export * from './querier/index.js';
|
|
7
|
+
export * from './repository/index.js';
|
|
8
|
+
export * from './type/index.js';
|
|
9
|
+
export * from './util/index.js';
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kaWFsZWN0L2luZGV4LmpzJztcbmV4cG9ydCAqIGZyb20gJy4vZW50aXR5L2luZGV4LmpzJztcbmV4cG9ydCAqIGZyb20gJy4vbWlncmF0ZS9pbmRleC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL25hbWluZ1N0cmF0ZWd5L2luZGV4LmpzJztcbmV4cG9ydCAqIGZyb20gJy4vb3B0aW9ucy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3F1ZXJpZXIvaW5kZXguanMnO1xuZXhwb3J0ICogZnJvbSAnLi9yZXBvc2l0b3J5L2luZGV4LmpzJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZS9pbmRleC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWwvaW5kZXguanMnO1xuIl19
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './mariaDialect.js';
|
|
2
|
+
export * from './mariadbQuerier.js';
|
|
3
|
+
export * from './mariadbQuerierPool.js';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWFyaWEvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21hcmlhRGlhbGVjdC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL21hcmlhZGJRdWVyaWVyLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vbWFyaWFkYlF1ZXJpZXJQb29sLmpzJztcbiJdfQ==
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { AbstractSqlDialect } from '../dialect/index.js';
|
|
2
|
+
import type { QueryConflictPaths, QueryContext, QueryOptions, Type } from '../type/index.js';
|
|
3
|
+
export declare class MariaDialect extends AbstractSqlDialect {
|
|
4
|
+
addValue(values: unknown[], value: unknown): string;
|
|
5
|
+
insert<E>(ctx: QueryContext, entity: Type<E>, payload: E | E[], opts?: QueryOptions): void;
|
|
6
|
+
upsert<E>(ctx: QueryContext, entity: Type<E>, conflictPaths: QueryConflictPaths<E>, payload: E): void;
|
|
7
|
+
escape(value: unknown): string;
|
|
8
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import SqlString from 'sqlstring';
|
|
2
|
+
import { AbstractSqlDialect } from '../dialect/index.js';
|
|
3
|
+
import { getMeta } from '../entity/index.js';
|
|
4
|
+
export class MariaDialect extends AbstractSqlDialect {
|
|
5
|
+
addValue(values, value) {
|
|
6
|
+
if (value instanceof Date) {
|
|
7
|
+
values.push(value);
|
|
8
|
+
return '?';
|
|
9
|
+
}
|
|
10
|
+
return super.addValue(values, value);
|
|
11
|
+
}
|
|
12
|
+
insert(ctx, entity, payload, opts) {
|
|
13
|
+
super.insert(ctx, entity, payload, opts);
|
|
14
|
+
ctx.append(' ' + this.returningId(entity));
|
|
15
|
+
}
|
|
16
|
+
upsert(ctx, entity, conflictPaths, payload) {
|
|
17
|
+
const meta = getMeta(entity);
|
|
18
|
+
const update = this.getUpsertUpdateAssignments(ctx, meta, conflictPaths, payload, (name) => `VALUES(${name})`);
|
|
19
|
+
const returning = this.returningId(entity);
|
|
20
|
+
if (update) {
|
|
21
|
+
super.insert(ctx, entity, payload);
|
|
22
|
+
ctx.append(` ON DUPLICATE KEY UPDATE ${update} ${returning}`);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
const insertCtx = this.createContext();
|
|
26
|
+
super.insert(insertCtx, entity, payload);
|
|
27
|
+
ctx.append(insertCtx.sql.replace(/^INSERT/, 'INSERT IGNORE'));
|
|
28
|
+
ctx.append(' ' + returning);
|
|
29
|
+
insertCtx.values.forEach((val) => {
|
|
30
|
+
ctx.pushValue(val);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
escape(value) {
|
|
35
|
+
return SqlString.escape(value);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyaWFEaWFsZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hcmlhL21hcmlhRGlhbGVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFNBQVMsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRzdDLE1BQU0sT0FBTyxZQUFhLFNBQVEsa0JBQWtCO0lBQ3pDLFFBQVEsQ0FBQyxNQUFpQixFQUFFLEtBQWM7UUFDakQsSUFBSSxLQUFLLFlBQVksSUFBSSxFQUFFLENBQUM7WUFDMUIsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuQixPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFUSxNQUFNLENBQUksR0FBaUIsRUFBRSxNQUFlLEVBQUUsT0FBZ0IsRUFBRSxJQUFtQjtRQUMxRixLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3pDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRVEsTUFBTSxDQUFJLEdBQWlCLEVBQUUsTUFBZSxFQUFFLGFBQW9DLEVBQUUsT0FBVTtRQUNyRyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQy9HLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFM0MsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNuQyxHQUFHLENBQUMsTUFBTSxDQUFDLDRCQUE0QixNQUFNLElBQUksU0FBUyxFQUFFLENBQUMsQ0FBQztRQUNoRSxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDekMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztZQUM5RCxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQUMsQ0FBQztZQUM1QixTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUMvQixHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFUSxNQUFNLENBQUMsS0FBYztRQUM1QixPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFNxbFN0cmluZyBmcm9tICdzcWxzdHJpbmcnO1xuaW1wb3J0IHsgQWJzdHJhY3RTcWxEaWFsZWN0IH0gZnJvbSAnLi4vZGlhbGVjdC9pbmRleC5qcyc7XG5pbXBvcnQgeyBnZXRNZXRhIH0gZnJvbSAnLi4vZW50aXR5L2luZGV4LmpzJztcbmltcG9ydCB0eXBlIHsgUXVlcnlDb25mbGljdFBhdGhzLCBRdWVyeUNvbnRleHQsIFF1ZXJ5T3B0aW9ucywgVHlwZSB9IGZyb20gJy4uL3R5cGUvaW5kZXguanMnO1xuXG5leHBvcnQgY2xhc3MgTWFyaWFEaWFsZWN0IGV4dGVuZHMgQWJzdHJhY3RTcWxEaWFsZWN0IHtcbiAgb3ZlcnJpZGUgYWRkVmFsdWUodmFsdWVzOiB1bmtub3duW10sIHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICB2YWx1ZXMucHVzaCh2YWx1ZSk7XG4gICAgICByZXR1cm4gJz8nO1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuYWRkVmFsdWUodmFsdWVzLCB2YWx1ZSk7XG4gIH1cblxuICBvdmVycmlkZSBpbnNlcnQ8RT4oY3R4OiBRdWVyeUNvbnRleHQsIGVudGl0eTogVHlwZTxFPiwgcGF5bG9hZDogRSB8IEVbXSwgb3B0cz86IFF1ZXJ5T3B0aW9ucyk6IHZvaWQge1xuICAgIHN1cGVyLmluc2VydChjdHgsIGVudGl0eSwgcGF5bG9hZCwgb3B0cyk7XG4gICAgY3R4LmFwcGVuZCgnICcgKyB0aGlzLnJldHVybmluZ0lkKGVudGl0eSkpO1xuICB9XG5cbiAgb3ZlcnJpZGUgdXBzZXJ0PEU+KGN0eDogUXVlcnlDb250ZXh0LCBlbnRpdHk6IFR5cGU8RT4sIGNvbmZsaWN0UGF0aHM6IFF1ZXJ5Q29uZmxpY3RQYXRoczxFPiwgcGF5bG9hZDogRSk6IHZvaWQge1xuICAgIGNvbnN0IG1ldGEgPSBnZXRNZXRhKGVudGl0eSk7XG4gICAgY29uc3QgdXBkYXRlID0gdGhpcy5nZXRVcHNlcnRVcGRhdGVBc3NpZ25tZW50cyhjdHgsIG1ldGEsIGNvbmZsaWN0UGF0aHMsIHBheWxvYWQsIChuYW1lKSA9PiBgVkFMVUVTKCR7bmFtZX0pYCk7XG4gICAgY29uc3QgcmV0dXJuaW5nID0gdGhpcy5yZXR1cm5pbmdJZChlbnRpdHkpO1xuXG4gICAgaWYgKHVwZGF0ZSkge1xuICAgICAgc3VwZXIuaW5zZXJ0KGN0eCwgZW50aXR5LCBwYXlsb2FkKTtcbiAgICAgIGN0eC5hcHBlbmQoYCBPTiBEVVBMSUNBVEUgS0VZIFVQREFURSAke3VwZGF0ZX0gJHtyZXR1cm5pbmd9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGluc2VydEN0eCA9IHRoaXMuY3JlYXRlQ29udGV4dCgpO1xuICAgICAgc3VwZXIuaW5zZXJ0KGluc2VydEN0eCwgZW50aXR5LCBwYXlsb2FkKTtcbiAgICAgIGN0eC5hcHBlbmQoaW5zZXJ0Q3R4LnNxbC5yZXBsYWNlKC9eSU5TRVJULywgJ0lOU0VSVCBJR05PUkUnKSk7XG4gICAgICBjdHguYXBwZW5kKCcgJyArIHJldHVybmluZyk7XG4gICAgICBpbnNlcnRDdHgudmFsdWVzLmZvckVhY2goKHZhbCkgPT4ge1xuICAgICAgICBjdHgucHVzaFZhbHVlKHZhbCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvdmVycmlkZSBlc2NhcGUodmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xuICAgIHJldHVybiBTcWxTdHJpbmcuZXNjYXBlKHZhbHVlKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { AbstractQuerierPoolIt } from '../querier/abstractQuerierPool-test.js';
|
|
2
|
+
import { createSpec } from '../test/index.js';
|
|
3
|
+
import { MariadbQuerierPool } from './mariadbQuerierPool.js';
|
|
4
|
+
export class MariadbQuerierPoolIt extends AbstractQuerierPoolIt {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(new MariadbQuerierPool({
|
|
7
|
+
host: '0.0.0.0',
|
|
8
|
+
port: 3326,
|
|
9
|
+
user: 'test',
|
|
10
|
+
password: 'test',
|
|
11
|
+
database: 'test',
|
|
12
|
+
connectionLimit: 5,
|
|
13
|
+
trace: true,
|
|
14
|
+
bigIntAsNumber: true,
|
|
15
|
+
}));
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
createSpec(new MariadbQuerierPoolIt());
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyaWFRdWVyaWVyUG9vbC50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hcmlhL21hcmlhUXVlcmllclBvb2wudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFOUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFN0QsTUFBTSxPQUFPLG9CQUFxQixTQUFRLHFCQUFxQztJQUM3RTtRQUNFLEtBQUssQ0FDSCxJQUFJLGtCQUFrQixDQUFDO1lBQ3JCLElBQUksRUFBRSxTQUFTO1lBQ2YsSUFBSSxFQUFFLElBQUk7WUFDVixJQUFJLEVBQUUsTUFBTTtZQUNaLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLGVBQWUsRUFBRSxDQUFDO1lBQ2xCLEtBQUssRUFBRSxJQUFJO1lBQ1gsY0FBYyxFQUFFLElBQUk7U0FDckIsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFFRCxVQUFVLENBQUMsSUFBSSxvQkFBb0IsRUFBRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdFF1ZXJpZXJQb29sSXQgfSBmcm9tICcuLi9xdWVyaWVyL2Fic3RyYWN0UXVlcmllclBvb2wtdGVzdC5qcyc7XG5pbXBvcnQgeyBjcmVhdGVTcGVjIH0gZnJvbSAnLi4vdGVzdC9pbmRleC5qcyc7XG5pbXBvcnQgdHlwZSB7IE1hcmlhZGJRdWVyaWVyIH0gZnJvbSAnLi9tYXJpYWRiUXVlcmllci5qcyc7XG5pbXBvcnQgeyBNYXJpYWRiUXVlcmllclBvb2wgfSBmcm9tICcuL21hcmlhZGJRdWVyaWVyUG9vbC5qcyc7XG5cbmV4cG9ydCBjbGFzcyBNYXJpYWRiUXVlcmllclBvb2xJdCBleHRlbmRzIEFic3RyYWN0UXVlcmllclBvb2xJdDxNYXJpYWRiUXVlcmllcj4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcbiAgICAgIG5ldyBNYXJpYWRiUXVlcmllclBvb2woe1xuICAgICAgICBob3N0OiAnMC4wLjAuMCcsXG4gICAgICAgIHBvcnQ6IDMzMjYsXG4gICAgICAgIHVzZXI6ICd0ZXN0JyxcbiAgICAgICAgcGFzc3dvcmQ6ICd0ZXN0JyxcbiAgICAgICAgZGF0YWJhc2U6ICd0ZXN0JyxcbiAgICAgICAgY29ubmVjdGlvbkxpbWl0OiA1LFxuICAgICAgICB0cmFjZTogdHJ1ZSxcbiAgICAgICAgYmlnSW50QXNOdW1iZXI6IHRydWUsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG59XG5cbmNyZWF0ZVNwZWMobmV3IE1hcmlhZGJRdWVyaWVyUG9vbEl0KCkpO1xuIl19
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { PoolConnection } from 'mariadb';
|
|
2
|
+
import { AbstractSqlQuerier } from '../querier/index.js';
|
|
3
|
+
import type { ExtraOptions } from '../type/index.js';
|
|
4
|
+
export declare class MariadbQuerier 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,39 @@
|
|
|
1
|
+
import { AbstractSqlQuerier } from '../querier/index.js';
|
|
2
|
+
import { MariaDialect } from './mariaDialect.js';
|
|
3
|
+
export class MariadbQuerier extends AbstractSqlQuerier {
|
|
4
|
+
connect;
|
|
5
|
+
extra;
|
|
6
|
+
conn;
|
|
7
|
+
constructor(connect, extra) {
|
|
8
|
+
super(new MariaDialect(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.slice(0, res.length);
|
|
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.length ? res.map((r) => r.id) : [];
|
|
23
|
+
return { changes: res.affectedRows, ids, firstId: ids[0] };
|
|
24
|
+
}
|
|
25
|
+
async lazyConnect() {
|
|
26
|
+
this.conn ??= await this.connect();
|
|
27
|
+
}
|
|
28
|
+
async internalRelease() {
|
|
29
|
+
if (this.hasOpenTransaction) {
|
|
30
|
+
throw TypeError('pending transaction');
|
|
31
|
+
}
|
|
32
|
+
if (!this.conn) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
await this.conn.release();
|
|
36
|
+
this.conn = undefined;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyaWFkYlF1ZXJpZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWFyaWEvbWFyaWFkYlF1ZXJpZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWpELE1BQU0sT0FBTyxjQUFlLFNBQVEsa0JBQWtCO0lBSXpDO0lBQ0E7SUFKWCxJQUFJLENBQWlCO0lBRXJCLFlBQ1csT0FBc0MsRUFDdEMsS0FBb0I7UUFFN0IsS0FBSyxDQUFDLElBQUksWUFBWSxDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBSHRDLFlBQU8sR0FBUCxPQUFPLENBQStCO1FBQ3RDLFVBQUssR0FBTCxLQUFLLENBQWU7SUFHL0IsQ0FBQztJQUVRLEtBQUssQ0FBQyxXQUFXLENBQUksS0FBYSxFQUFFLE1BQWtCO1FBQzdELElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sR0FBRyxHQUFRLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFUSxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQWEsRUFBRSxNQUFrQjtRQUMxRCxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNwQyxNQUFNLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN6QixNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNqRCxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN4RCxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQThCLENBQUM7SUFDekYsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXO1FBQ2YsSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRVEsS0FBSyxDQUFDLGVBQWU7UUFDNUIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUM1QixNQUFNLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2YsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7SUFDeEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQb29sQ29ubmVjdGlvbiB9IGZyb20gJ21hcmlhZGInO1xuaW1wb3J0IHsgQWJzdHJhY3RTcWxRdWVyaWVyIH0gZnJvbSAnLi4vcXVlcmllci9pbmRleC5qcyc7XG5pbXBvcnQgdHlwZSB7IEV4dHJhT3B0aW9ucywgUXVlcnlVcGRhdGVSZXN1bHQgfSBmcm9tICcuLi90eXBlL2luZGV4LmpzJztcbmltcG9ydCB7IE1hcmlhRGlhbGVjdCB9IGZyb20gJy4vbWFyaWFEaWFsZWN0LmpzJztcblxuZXhwb3J0IGNsYXNzIE1hcmlhZGJRdWVyaWVyIGV4dGVuZHMgQWJzdHJhY3RTcWxRdWVyaWVyIHtcbiAgY29ubjogUG9vbENvbm5lY3Rpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgY29ubmVjdDogKCkgPT4gUHJvbWlzZTxQb29sQ29ubmVjdGlvbj4sXG4gICAgcmVhZG9ubHkgZXh0cmE/OiBFeHRyYU9wdGlvbnMsXG4gICkge1xuICAgIHN1cGVyKG5ldyBNYXJpYURpYWxlY3QoZXh0cmE/Lm5hbWluZ1N0cmF0ZWd5KSk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBpbnRlcm5hbEFsbDxUPihxdWVyeTogc3RyaW5nLCB2YWx1ZXM/OiB1bmtub3duW10pIHtcbiAgICB0aGlzLmV4dHJhPy5sb2dnZXI/LihxdWVyeSwgdmFsdWVzKTtcbiAgICBhd2FpdCB0aGlzLmxhenlDb25uZWN0KCk7XG4gICAgY29uc3QgcmVzOiBUW10gPSBhd2FpdCB0aGlzLmNvbm4ucXVlcnkocXVlcnksIHZhbHVlcyk7XG4gICAgcmV0dXJuIHJlcy5zbGljZSgwLCByZXMubGVuZ3RoKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIGludGVybmFsUnVuKHF1ZXJ5OiBzdHJpbmcsIHZhbHVlcz86IHVua25vd25bXSkge1xuICAgIHRoaXMuZXh0cmE/LmxvZ2dlcj8uKHF1ZXJ5LCB2YWx1ZXMpO1xuICAgIGF3YWl0IHRoaXMubGF6eUNvbm5lY3QoKTtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmNvbm4ucXVlcnkocXVlcnksIHZhbHVlcyk7XG4gICAgY29uc3QgaWRzID0gcmVzLmxlbmd0aCA/IHJlcy5tYXAoKHI6IGFueSkgPT4gci5pZCkgOiBbXTtcbiAgICByZXR1cm4geyBjaGFuZ2VzOiByZXMuYWZmZWN0ZWRSb3dzLCBpZHMsIGZpcnN0SWQ6IGlkc1swXSB9IHNhdGlzZmllcyBRdWVyeVVwZGF0ZVJlc3VsdDtcbiAgfVxuXG4gIGFzeW5jIGxhenlDb25uZWN0KCkge1xuICAgIHRoaXMuY29ubiA/Pz0gYXdhaXQgdGhpcy5jb25uZWN0KCk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBpbnRlcm5hbFJlbGVhc2UoKSB7XG4gICAgaWYgKHRoaXMuaGFzT3BlblRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBUeXBlRXJyb3IoJ3BlbmRpbmcgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmNvbm4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5jb25uLnJlbGVhc2UoKTtcbiAgICB0aGlzLmNvbm4gPSB1bmRlZmluZWQ7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { AbstractSqlQuerierIt } from '../querier/abstractSqlQuerier-test.js';
|
|
2
|
+
import { createSpec } from '../test/index.js';
|
|
3
|
+
import { MariadbQuerierPool } from './mariadbQuerierPool.js';
|
|
4
|
+
export class MariadbQuerierIt extends AbstractSqlQuerierIt {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(new MariadbQuerierPool({
|
|
7
|
+
host: '0.0.0.0',
|
|
8
|
+
port: 3326,
|
|
9
|
+
user: 'test',
|
|
10
|
+
password: 'test',
|
|
11
|
+
database: 'test',
|
|
12
|
+
connectionLimit: 5,
|
|
13
|
+
trace: true,
|
|
14
|
+
bigIntAsNumber: true,
|
|
15
|
+
}), 'INT AUTO_INCREMENT PRIMARY KEY');
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
createSpec(new MariadbQuerierIt());
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyaWFkYlF1ZXJpZXIudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXJpYS9tYXJpYWRiUXVlcmllci50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU3RCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsb0JBQW9CO0lBQ3hEO1FBQ0UsS0FBSyxDQUNILElBQUksa0JBQWtCLENBQUM7WUFDckIsSUFBSSxFQUFFLFNBQVM7WUFDZixJQUFJLEVBQUUsSUFBSTtZQUNWLElBQUksRUFBRSxNQUFNO1lBQ1osUUFBUSxFQUFFLE1BQU07WUFDaEIsUUFBUSxFQUFFLE1BQU07WUFDaEIsZUFBZSxFQUFFLENBQUM7WUFDbEIsS0FBSyxFQUFFLElBQUk7WUFDWCxjQUFjLEVBQUUsSUFBSTtTQUNyQixDQUFDLEVBQ0YsZ0NBQWdDLENBQ2pDLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFFRCxVQUFVLENBQUMsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdFNxbFF1ZXJpZXJJdCB9IGZyb20gJy4uL3F1ZXJpZXIvYWJzdHJhY3RTcWxRdWVyaWVyLXRlc3QuanMnO1xuaW1wb3J0IHsgY3JlYXRlU3BlYyB9IGZyb20gJy4uL3Rlc3QvaW5kZXguanMnO1xuaW1wb3J0IHsgTWFyaWFkYlF1ZXJpZXJQb29sIH0gZnJvbSAnLi9tYXJpYWRiUXVlcmllclBvb2wuanMnO1xuXG5leHBvcnQgY2xhc3MgTWFyaWFkYlF1ZXJpZXJJdCBleHRlbmRzIEFic3RyYWN0U3FsUXVlcmllckl0IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXG4gICAgICBuZXcgTWFyaWFkYlF1ZXJpZXJQb29sKHtcbiAgICAgICAgaG9zdDogJzAuMC4wLjAnLFxuICAgICAgICBwb3J0OiAzMzI2LFxuICAgICAgICB1c2VyOiAndGVzdCcsXG4gICAgICAgIHBhc3N3b3JkOiAndGVzdCcsXG4gICAgICAgIGRhdGFiYXNlOiAndGVzdCcsXG4gICAgICAgIGNvbm5lY3Rpb25MaW1pdDogNSxcbiAgICAgICAgdHJhY2U6IHRydWUsXG4gICAgICAgIGJpZ0ludEFzTnVtYmVyOiB0cnVlLFxuICAgICAgfSksXG4gICAgICAnSU5UIEFVVE9fSU5DUkVNRU5UIFBSSU1BUlkgS0VZJyxcbiAgICApO1xuICB9XG59XG5cbmNyZWF0ZVNwZWMobmV3IE1hcmlhZGJRdWVyaWVySXQoKSk7XG4iXX0=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type Pool, type PoolConfig } from 'mariadb';
|
|
2
|
+
import { AbstractQuerierPool } from '../querier/index.js';
|
|
3
|
+
import type { ExtraOptions } from '../type/index.js';
|
|
4
|
+
import { MariadbQuerier } from './mariadbQuerier.js';
|
|
5
|
+
export declare class MariadbQuerierPool extends AbstractQuerierPool<MariadbQuerier> {
|
|
6
|
+
readonly pool: Pool;
|
|
7
|
+
constructor(opts: PoolConfig, extra?: ExtraOptions);
|
|
8
|
+
getQuerier(): Promise<MariadbQuerier>;
|
|
9
|
+
end(): Promise<void>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { createPool } from 'mariadb';
|
|
2
|
+
import { AbstractQuerierPool } from '../querier/index.js';
|
|
3
|
+
import { MariadbQuerier } from './mariadbQuerier.js';
|
|
4
|
+
export class MariadbQuerierPool extends AbstractQuerierPool {
|
|
5
|
+
pool;
|
|
6
|
+
constructor(opts, extra) {
|
|
7
|
+
super('mariadb', extra);
|
|
8
|
+
this.pool = createPool(opts);
|
|
9
|
+
}
|
|
10
|
+
async getQuerier() {
|
|
11
|
+
return new MariadbQuerier(() => this.pool.getConnection(), this.extra);
|
|
12
|
+
}
|
|
13
|
+
async end() {
|
|
14
|
+
await this.pool.end();
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyaWFkYlF1ZXJpZXJQb29sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hcmlhL21hcmlhZGJRdWVyaWVyUG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUE4QixNQUFNLFNBQVMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFckQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLG1CQUFtQztJQUNoRSxJQUFJLENBQU87SUFFcEIsWUFBWSxJQUFnQixFQUFFLEtBQW9CO1FBQ2hELEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVO1FBQ2QsT0FBTyxJQUFJLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQUc7UUFDUCxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDeEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlUG9vbCwgdHlwZSBQb29sLCB0eXBlIFBvb2xDb25maWcgfSBmcm9tICdtYXJpYWRiJztcbmltcG9ydCB7IEFic3RyYWN0UXVlcmllclBvb2wgfSBmcm9tICcuLi9xdWVyaWVyL2luZGV4LmpzJztcbmltcG9ydCB0eXBlIHsgRXh0cmFPcHRpb25zIH0gZnJvbSAnLi4vdHlwZS9pbmRleC5qcyc7XG5pbXBvcnQgeyBNYXJpYWRiUXVlcmllciB9IGZyb20gJy4vbWFyaWFkYlF1ZXJpZXIuanMnO1xuXG5leHBvcnQgY2xhc3MgTWFyaWFkYlF1ZXJpZXJQb29sIGV4dGVuZHMgQWJzdHJhY3RRdWVyaWVyUG9vbDxNYXJpYWRiUXVlcmllcj4ge1xuICByZWFkb25seSBwb29sOiBQb29sO1xuXG4gIGNvbnN0cnVjdG9yKG9wdHM6IFBvb2xDb25maWcsIGV4dHJhPzogRXh0cmFPcHRpb25zKSB7XG4gICAgc3VwZXIoJ21hcmlhZGInLCBleHRyYSk7XG4gICAgdGhpcy5wb29sID0gY3JlYXRlUG9vbChvcHRzKTtcbiAgfVxuXG4gIGFzeW5jIGdldFF1ZXJpZXIoKSB7XG4gICAgcmV0dXJuIG5ldyBNYXJpYWRiUXVlcmllcigoKSA9PiB0aGlzLnBvb2wuZ2V0Q29ubmVjdGlvbigpLCB0aGlzLmV4dHJhKTtcbiAgfVxuXG4gIGFzeW5jIGVuZCgpIHtcbiAgICBhd2FpdCB0aGlzLnBvb2wuZW5kKCk7XG4gIH1cbn1cbiJdfQ==
|