uql-orm 0.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 +521 -0
- package/LICENSE.md +22 -0
- package/README.md +560 -0
- package/dist/browser/cc-BEf4wTUm.js +535 -0
- package/dist/browser/cc-BEf4wTUm.js.map +1 -0
- package/dist/browser/http/bus.d.ts +4 -0
- package/dist/browser/http/bus.d.ts.map +1 -0
- package/dist/browser/http/bus.js +14 -0
- package/dist/browser/http/bus.js.map +1 -0
- package/dist/browser/http/http.d.ts +7 -0
- package/dist/browser/http/http.d.ts.map +1 -0
- package/dist/browser/http/http.js +45 -0
- package/dist/browser/http/http.js.map +1 -0
- package/dist/browser/http/index.d.ts +3 -0
- package/dist/browser/http/index.d.ts.map +1 -0
- package/dist/browser/http/index.js +3 -0
- package/dist/browser/http/index.js.map +1 -0
- package/dist/browser/index.d.ts +5 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +5 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/options.d.ts +5 -0
- package/dist/browser/options.d.ts.map +1 -0
- package/dist/browser/options.js +14 -0
- package/dist/browser/options.js.map +1 -0
- package/dist/browser/querier/httpQuerier.d.ts +20 -0
- package/dist/browser/querier/httpQuerier.d.ts.map +1 -0
- package/dist/browser/querier/httpQuerier.js +68 -0
- package/dist/browser/querier/httpQuerier.js.map +1 -0
- package/dist/browser/querier/index.d.ts +3 -0
- package/dist/browser/querier/index.d.ts.map +1 -0
- package/dist/browser/querier/index.js +3 -0
- package/dist/browser/querier/index.js.map +1 -0
- package/dist/browser/querier/querier.util.d.ts +3 -0
- package/dist/browser/querier/querier.util.d.ts.map +1 -0
- package/dist/browser/querier/querier.util.js +17 -0
- package/dist/browser/querier/querier.util.js.map +1 -0
- package/dist/browser/type/clientQuerier.d.ts +24 -0
- package/dist/browser/type/clientQuerier.d.ts.map +1 -0
- package/dist/browser/type/clientQuerier.js +2 -0
- package/dist/browser/type/clientQuerier.js.map +1 -0
- package/dist/browser/type/clientQuerierPool.d.ts +5 -0
- package/dist/browser/type/clientQuerierPool.d.ts.map +1 -0
- package/dist/browser/type/clientQuerierPool.js +2 -0
- package/dist/browser/type/clientQuerierPool.js.map +1 -0
- package/dist/browser/type/index.d.ts +4 -0
- package/dist/browser/type/index.d.ts.map +1 -0
- package/dist/browser/type/index.js +4 -0
- package/dist/browser/type/index.js.map +1 -0
- package/dist/browser/type/request.d.ts +29 -0
- package/dist/browser/type/request.d.ts.map +1 -0
- package/dist/browser/type/request.js +2 -0
- package/dist/browser/type/request.js.map +1 -0
- package/dist/browser/uql-browser.min.js +4818 -0
- package/dist/browser/uql-browser.min.js.map +1 -0
- package/dist/d1/d1Querier.d.ts +45 -0
- package/dist/d1/d1Querier.d.ts.map +1 -0
- package/dist/d1/d1Querier.js +31 -0
- package/dist/d1/d1Querier.js.map +1 -0
- package/dist/d1/d1QuerierPool.d.ts +10 -0
- package/dist/d1/d1QuerierPool.d.ts.map +1 -0
- package/dist/d1/d1QuerierPool.js +16 -0
- package/dist/d1/d1QuerierPool.js.map +1 -0
- package/dist/d1/index.d.ts +3 -0
- package/dist/d1/index.d.ts.map +1 -0
- package/dist/d1/index.js +3 -0
- package/dist/d1/index.js.map +1 -0
- package/dist/dialect/abstractDialect.d.ts +22 -0
- package/dist/dialect/abstractDialect.d.ts.map +1 -0
- package/dist/dialect/abstractDialect.js +37 -0
- package/dist/dialect/abstractDialect.js.map +1 -0
- package/dist/dialect/abstractSqlDialect.d.ts +140 -0
- package/dist/dialect/abstractSqlDialect.d.ts.map +1 -0
- package/dist/dialect/abstractSqlDialect.js +957 -0
- package/dist/dialect/abstractSqlDialect.js.map +1 -0
- package/dist/dialect/dialectConfig.d.ts +23 -0
- package/dist/dialect/dialectConfig.d.ts.map +1 -0
- package/dist/dialect/dialectConfig.js +96 -0
- package/dist/dialect/dialectConfig.js.map +1 -0
- package/dist/dialect/index.d.ts +5 -0
- package/dist/dialect/index.d.ts.map +1 -0
- package/dist/dialect/index.js +5 -0
- package/dist/dialect/index.js.map +1 -0
- package/dist/dialect/queryContext.d.ts +49 -0
- package/dist/dialect/queryContext.d.ts.map +1 -0
- package/dist/dialect/queryContext.js +65 -0
- package/dist/dialect/queryContext.js.map +1 -0
- package/dist/entity/decorator/definition.d.ts +11 -0
- package/dist/entity/decorator/definition.d.ts.map +1 -0
- package/dist/entity/decorator/definition.js +247 -0
- package/dist/entity/decorator/definition.js.map +1 -0
- package/dist/entity/decorator/entity.d.ts +3 -0
- package/dist/entity/decorator/entity.d.ts.map +1 -0
- package/dist/entity/decorator/entity.js +7 -0
- package/dist/entity/decorator/entity.js.map +1 -0
- package/dist/entity/decorator/field.d.ts +3 -0
- package/dist/entity/decorator/field.d.ts.map +1 -0
- package/dist/entity/decorator/field.js +8 -0
- package/dist/entity/decorator/field.js.map +1 -0
- package/dist/entity/decorator/hook.d.ts +8 -0
- package/dist/entity/decorator/hook.d.ts.map +1 -0
- package/dist/entity/decorator/hook.js +15 -0
- package/dist/entity/decorator/hook.js.map +1 -0
- package/dist/entity/decorator/id.d.ts +3 -0
- package/dist/entity/decorator/id.d.ts.map +1 -0
- package/dist/entity/decorator/id.js +8 -0
- package/dist/entity/decorator/id.js.map +1 -0
- package/dist/entity/decorator/index-decorator.d.ts +36 -0
- package/dist/entity/decorator/index-decorator.d.ts.map +1 -0
- package/dist/entity/decorator/index-decorator.js +52 -0
- package/dist/entity/decorator/index-decorator.js.map +1 -0
- package/dist/entity/decorator/index.d.ts +8 -0
- package/dist/entity/decorator/index.d.ts.map +1 -0
- package/dist/entity/decorator/index.js +8 -0
- package/dist/entity/decorator/index.js.map +1 -0
- package/dist/entity/decorator/relation.d.ts +9 -0
- package/dist/entity/decorator/relation.d.ts.map +1 -0
- package/dist/entity/decorator/relation.js +20 -0
- package/dist/entity/decorator/relation.js.map +1 -0
- package/dist/entity/index.d.ts +2 -0
- package/dist/entity/index.d.ts.map +1 -0
- package/dist/entity/index.js +2 -0
- package/dist/entity/index.js.map +1 -0
- package/dist/express/index.d.ts +3 -0
- package/dist/express/index.d.ts.map +1 -0
- package/dist/express/index.js +3 -0
- package/dist/express/index.js.map +1 -0
- package/dist/express/querierMiddleware.d.ts +26 -0
- package/dist/express/querierMiddleware.d.ts.map +1 -0
- package/dist/express/querierMiddleware.js +149 -0
- package/dist/express/querierMiddleware.js.map +1 -0
- package/dist/express/query.util.d.ts +7 -0
- package/dist/express/query.util.d.ts.map +1 -0
- package/dist/express/query.util.js +28 -0
- package/dist/express/query.util.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/libsql/index.d.ts +3 -0
- package/dist/libsql/index.d.ts.map +1 -0
- package/dist/libsql/index.js +3 -0
- package/dist/libsql/index.js.map +1 -0
- package/dist/libsql/libsqlQuerier.d.ts +17 -0
- package/dist/libsql/libsqlQuerier.d.ts.map +1 -0
- package/dist/libsql/libsqlQuerier.js +71 -0
- package/dist/libsql/libsqlQuerier.js.map +1 -0
- package/dist/libsql/libsqlQuerierPool.d.ts +12 -0
- package/dist/libsql/libsqlQuerierPool.d.ts.map +1 -0
- package/dist/libsql/libsqlQuerierPool.js +19 -0
- package/dist/libsql/libsqlQuerierPool.js.map +1 -0
- package/dist/maria/index.d.ts +4 -0
- package/dist/maria/index.d.ts.map +1 -0
- package/dist/maria/index.js +4 -0
- package/dist/maria/index.js.map +1 -0
- package/dist/maria/mariaDialect.d.ts +10 -0
- package/dist/maria/mariaDialect.d.ts.map +1 -0
- package/dist/maria/mariaDialect.js +41 -0
- package/dist/maria/mariaDialect.js.map +1 -0
- package/dist/maria/mariadbQuerier.d.ts +10 -0
- package/dist/maria/mariadbQuerier.d.ts.map +1 -0
- package/dist/maria/mariadbQuerier.js +20 -0
- package/dist/maria/mariadbQuerier.js.map +1 -0
- package/dist/maria/mariadbQuerierPool.d.ts +11 -0
- package/dist/maria/mariadbQuerierPool.d.ts.map +1 -0
- package/dist/maria/mariadbQuerierPool.js +17 -0
- package/dist/maria/mariadbQuerierPool.js.map +1 -0
- package/dist/migrate/bin.d.ts +3 -0
- package/dist/migrate/bin.d.ts.map +1 -0
- package/dist/migrate/bin.js +7 -0
- package/dist/migrate/bin.js.map +1 -0
- package/dist/migrate/builder/columnBuilder.d.ts +79 -0
- package/dist/migrate/builder/columnBuilder.d.ts.map +1 -0
- package/dist/migrate/builder/columnBuilder.js +159 -0
- package/dist/migrate/builder/columnBuilder.js.map +1 -0
- package/dist/migrate/builder/expressions.d.ts +87 -0
- package/dist/migrate/builder/expressions.d.ts.map +1 -0
- package/dist/migrate/builder/expressions.js +150 -0
- package/dist/migrate/builder/expressions.js.map +1 -0
- package/dist/migrate/builder/index.d.ts +6 -0
- package/dist/migrate/builder/index.d.ts.map +1 -0
- package/dist/migrate/builder/index.js +6 -0
- package/dist/migrate/builder/index.js.map +1 -0
- package/dist/migrate/builder/migrationBuilder.d.ts +109 -0
- package/dist/migrate/builder/migrationBuilder.d.ts.map +1 -0
- package/dist/migrate/builder/migrationBuilder.js +463 -0
- package/dist/migrate/builder/migrationBuilder.js.map +1 -0
- package/dist/migrate/builder/tableBuilder.d.ts +51 -0
- package/dist/migrate/builder/tableBuilder.d.ts.map +1 -0
- package/dist/migrate/builder/tableBuilder.js +291 -0
- package/dist/migrate/builder/tableBuilder.js.map +1 -0
- package/dist/migrate/builder/types.d.ts +466 -0
- package/dist/migrate/builder/types.d.ts.map +1 -0
- package/dist/migrate/builder/types.js +8 -0
- package/dist/migrate/builder/types.js.map +1 -0
- package/dist/migrate/cli-config.d.ts +3 -0
- package/dist/migrate/cli-config.d.ts.map +1 -0
- package/dist/migrate/cli-config.js +35 -0
- package/dist/migrate/cli-config.js.map +1 -0
- package/dist/migrate/cli.d.ts +16 -0
- package/dist/migrate/cli.d.ts.map +1 -0
- package/dist/migrate/cli.js +394 -0
- package/dist/migrate/cli.js.map +1 -0
- package/dist/migrate/codegen/entityCodeGenerator.d.ts +137 -0
- package/dist/migrate/codegen/entityCodeGenerator.d.ts.map +1 -0
- package/dist/migrate/codegen/entityCodeGenerator.js +405 -0
- package/dist/migrate/codegen/entityCodeGenerator.js.map +1 -0
- package/dist/migrate/codegen/entityMerger.d.ts +115 -0
- package/dist/migrate/codegen/entityMerger.d.ts.map +1 -0
- package/dist/migrate/codegen/entityMerger.js +294 -0
- package/dist/migrate/codegen/entityMerger.js.map +1 -0
- package/dist/migrate/codegen/index.d.ts +10 -0
- package/dist/migrate/codegen/index.d.ts.map +1 -0
- package/dist/migrate/codegen/index.js +14 -0
- package/dist/migrate/codegen/index.js.map +1 -0
- package/dist/migrate/codegen/migrationCodeGenerator.d.ts +62 -0
- package/dist/migrate/codegen/migrationCodeGenerator.d.ts.map +1 -0
- package/dist/migrate/codegen/migrationCodeGenerator.js +356 -0
- package/dist/migrate/codegen/migrationCodeGenerator.js.map +1 -0
- package/dist/migrate/codegen/smartRelationDetector.d.ts +48 -0
- package/dist/migrate/codegen/smartRelationDetector.d.ts.map +1 -0
- package/dist/migrate/codegen/smartRelationDetector.js +135 -0
- package/dist/migrate/codegen/smartRelationDetector.js.map +1 -0
- package/dist/migrate/drift/driftDetector.d.ts +81 -0
- package/dist/migrate/drift/driftDetector.d.ts.map +1 -0
- package/dist/migrate/drift/driftDetector.js +248 -0
- package/dist/migrate/drift/driftDetector.js.map +1 -0
- package/dist/migrate/drift/index.d.ts +7 -0
- package/dist/migrate/drift/index.d.ts.map +1 -0
- package/dist/migrate/drift/index.js +7 -0
- package/dist/migrate/drift/index.js.map +1 -0
- package/dist/migrate/generator/index.d.ts +3 -0
- package/dist/migrate/generator/index.d.ts.map +1 -0
- package/dist/migrate/generator/index.js +3 -0
- package/dist/migrate/generator/index.js.map +1 -0
- package/dist/migrate/generator/mongoSchemaGenerator.d.ts +39 -0
- package/dist/migrate/generator/mongoSchemaGenerator.d.ts.map +1 -0
- package/dist/migrate/generator/mongoSchemaGenerator.js +183 -0
- package/dist/migrate/generator/mongoSchemaGenerator.js.map +1 -0
- package/dist/migrate/index.d.ts +13 -0
- package/dist/migrate/index.d.ts.map +1 -0
- package/dist/migrate/index.js +20 -0
- package/dist/migrate/index.js.map +1 -0
- package/dist/migrate/introspection/abstractSqlSchemaIntrospector.d.ts +77 -0
- package/dist/migrate/introspection/abstractSqlSchemaIntrospector.d.ts.map +1 -0
- package/dist/migrate/introspection/abstractSqlSchemaIntrospector.js +156 -0
- package/dist/migrate/introspection/abstractSqlSchemaIntrospector.js.map +1 -0
- package/dist/migrate/introspection/baseSqlIntrospector.d.ts +28 -0
- package/dist/migrate/introspection/baseSqlIntrospector.d.ts.map +1 -0
- package/dist/migrate/introspection/baseSqlIntrospector.js +135 -0
- package/dist/migrate/introspection/baseSqlIntrospector.js.map +1 -0
- package/dist/migrate/introspection/index.d.ts +6 -0
- package/dist/migrate/introspection/index.d.ts.map +1 -0
- package/dist/migrate/introspection/index.js +6 -0
- package/dist/migrate/introspection/index.js.map +1 -0
- package/dist/migrate/introspection/mongoIntrospector.d.ts +15 -0
- package/dist/migrate/introspection/mongoIntrospector.d.ts.map +1 -0
- package/dist/migrate/introspection/mongoIntrospector.js +100 -0
- package/dist/migrate/introspection/mongoIntrospector.js.map +1 -0
- package/dist/migrate/introspection/mysqlIntrospector.d.ts +59 -0
- package/dist/migrate/introspection/mysqlIntrospector.d.ts.map +1 -0
- package/dist/migrate/introspection/mysqlIntrospector.js +175 -0
- package/dist/migrate/introspection/mysqlIntrospector.js.map +1 -0
- package/dist/migrate/introspection/postgresIntrospector.d.ts +55 -0
- package/dist/migrate/introspection/postgresIntrospector.d.ts.map +1 -0
- package/dist/migrate/introspection/postgresIntrospector.js +226 -0
- package/dist/migrate/introspection/postgresIntrospector.js.map +1 -0
- package/dist/migrate/introspection/sqliteIntrospector.d.ts +60 -0
- package/dist/migrate/introspection/sqliteIntrospector.d.ts.map +1 -0
- package/dist/migrate/introspection/sqliteIntrospector.js +180 -0
- package/dist/migrate/introspection/sqliteIntrospector.js.map +1 -0
- package/dist/migrate/migrator.d.ts +176 -0
- package/dist/migrate/migrator.d.ts.map +1 -0
- package/dist/migrate/migrator.js +624 -0
- package/dist/migrate/migrator.js.map +1 -0
- package/dist/migrate/schemaGenerator.d.ts +132 -0
- package/dist/migrate/schemaGenerator.d.ts.map +1 -0
- package/dist/migrate/schemaGenerator.js +628 -0
- package/dist/migrate/schemaGenerator.js.map +1 -0
- package/dist/migrate/storage/databaseStorage.d.ts +25 -0
- package/dist/migrate/storage/databaseStorage.d.ts.map +1 -0
- package/dist/migrate/storage/databaseStorage.js +77 -0
- package/dist/migrate/storage/databaseStorage.js.map +1 -0
- package/dist/migrate/storage/index.d.ts +3 -0
- package/dist/migrate/storage/index.d.ts.map +1 -0
- package/dist/migrate/storage/index.js +3 -0
- package/dist/migrate/storage/index.js.map +1 -0
- package/dist/migrate/storage/jsonStorage.d.ts +16 -0
- package/dist/migrate/storage/jsonStorage.d.ts.map +1 -0
- package/dist/migrate/storage/jsonStorage.js +43 -0
- package/dist/migrate/storage/jsonStorage.js.map +1 -0
- package/dist/migrate/sync/index.d.ts +7 -0
- package/dist/migrate/sync/index.d.ts.map +1 -0
- package/dist/migrate/sync/index.js +7 -0
- package/dist/migrate/sync/index.js.map +1 -0
- package/dist/migrate/sync/schemaSync.d.ts +132 -0
- package/dist/migrate/sync/schemaSync.d.ts.map +1 -0
- package/dist/migrate/sync/schemaSync.js +260 -0
- package/dist/migrate/sync/schemaSync.js.map +1 -0
- package/dist/mongo/index.d.ts +4 -0
- package/dist/mongo/index.d.ts.map +1 -0
- package/dist/mongo/index.js +4 -0
- package/dist/mongo/index.js.map +1 -0
- package/dist/mongo/mongoDialect.d.ts +47 -0
- package/dist/mongo/mongoDialect.d.ts.map +1 -0
- package/dist/mongo/mongoDialect.js +299 -0
- package/dist/mongo/mongoDialect.js.map +1 -0
- package/dist/mongo/mongodbQuerier.d.ts +32 -0
- package/dist/mongo/mongodbQuerier.d.ts.map +1 -0
- package/dist/mongo/mongodbQuerier.js +267 -0
- package/dist/mongo/mongodbQuerier.js.map +1 -0
- package/dist/mongo/mongodbQuerierPool.d.ts +11 -0
- package/dist/mongo/mongodbQuerierPool.d.ts.map +1 -0
- package/dist/mongo/mongodbQuerierPool.js +20 -0
- package/dist/mongo/mongodbQuerierPool.js.map +1 -0
- package/dist/mysql/index.d.ts +4 -0
- package/dist/mysql/index.d.ts.map +1 -0
- package/dist/mysql/index.js +4 -0
- package/dist/mysql/index.js.map +1 -0
- package/dist/mysql/mysql2Querier.d.ts +14 -0
- package/dist/mysql/mysql2Querier.d.ts.map +1 -0
- package/dist/mysql/mysql2Querier.js +25 -0
- package/dist/mysql/mysql2Querier.js.map +1 -0
- package/dist/mysql/mysql2QuerierPool.d.ts +11 -0
- package/dist/mysql/mysql2QuerierPool.d.ts.map +1 -0
- package/dist/mysql/mysql2QuerierPool.js +17 -0
- package/dist/mysql/mysql2QuerierPool.js.map +1 -0
- package/dist/mysql/mysqlDialect.d.ts +19 -0
- package/dist/mysql/mysqlDialect.d.ts.map +1 -0
- package/dist/mysql/mysqlDialect.js +97 -0
- package/dist/mysql/mysqlDialect.js.map +1 -0
- package/dist/namingStrategy/defaultNamingStrategy.d.ts +10 -0
- package/dist/namingStrategy/defaultNamingStrategy.d.ts.map +1 -0
- package/dist/namingStrategy/defaultNamingStrategy.js +15 -0
- package/dist/namingStrategy/defaultNamingStrategy.js.map +1 -0
- package/dist/namingStrategy/index.d.ts +3 -0
- package/dist/namingStrategy/index.d.ts.map +1 -0
- package/dist/namingStrategy/index.js +3 -0
- package/dist/namingStrategy/index.js.map +1 -0
- package/dist/namingStrategy/snakeCaseNamingStrategy.d.ts +9 -0
- package/dist/namingStrategy/snakeCaseNamingStrategy.d.ts.map +1 -0
- package/dist/namingStrategy/snakeCaseNamingStrategy.js +14 -0
- package/dist/namingStrategy/snakeCaseNamingStrategy.js.map +1 -0
- package/dist/neon/index.d.ts +3 -0
- package/dist/neon/index.d.ts.map +1 -0
- package/dist/neon/index.js +3 -0
- package/dist/neon/index.js.map +1 -0
- package/dist/neon/neonQuerier.d.ts +10 -0
- package/dist/neon/neonQuerier.d.ts.map +1 -0
- package/dist/neon/neonQuerier.js +20 -0
- package/dist/neon/neonQuerier.js.map +1 -0
- package/dist/neon/neonQuerierPool.d.ts +11 -0
- package/dist/neon/neonQuerierPool.d.ts.map +1 -0
- package/dist/neon/neonQuerierPool.js +17 -0
- package/dist/neon/neonQuerierPool.js.map +1 -0
- package/dist/options.d.ts +5 -0
- package/dist/options.d.ts.map +1 -0
- package/dist/options.js +14 -0
- package/dist/options.js.map +1 -0
- package/dist/postgres/index.d.ts +4 -0
- package/dist/postgres/index.d.ts.map +1 -0
- package/dist/postgres/index.js +4 -0
- package/dist/postgres/index.js.map +1 -0
- package/dist/postgres/pgQuerier.d.ts +10 -0
- package/dist/postgres/pgQuerier.d.ts.map +1 -0
- package/dist/postgres/pgQuerier.js +20 -0
- package/dist/postgres/pgQuerier.js.map +1 -0
- package/dist/postgres/pgQuerierPool.d.ts +11 -0
- package/dist/postgres/pgQuerierPool.d.ts.map +1 -0
- package/dist/postgres/pgQuerierPool.js +17 -0
- package/dist/postgres/pgQuerierPool.js.map +1 -0
- package/dist/postgres/postgresDialect.d.ts +36 -0
- package/dist/postgres/postgresDialect.d.ts.map +1 -0
- package/dist/postgres/postgresDialect.js +201 -0
- package/dist/postgres/postgresDialect.js.map +1 -0
- package/dist/querier/abstractPoolQuerier.d.ts +13 -0
- package/dist/querier/abstractPoolQuerier.d.ts.map +1 -0
- package/dist/querier/abstractPoolQuerier.js +25 -0
- package/dist/querier/abstractPoolQuerier.js.map +1 -0
- package/dist/querier/abstractQuerier.d.ts +109 -0
- package/dist/querier/abstractQuerier.d.ts.map +1 -0
- package/dist/querier/abstractQuerier.js +378 -0
- package/dist/querier/abstractQuerier.js.map +1 -0
- package/dist/querier/abstractQuerierPool.d.ts +23 -0
- package/dist/querier/abstractQuerierPool.d.ts.map +1 -0
- package/dist/querier/abstractQuerierPool.js +28 -0
- package/dist/querier/abstractQuerierPool.js.map +1 -0
- package/dist/querier/abstractSqlQuerier.d.ts +38 -0
- package/dist/querier/abstractSqlQuerier.d.ts.map +1 -0
- package/dist/querier/abstractSqlQuerier.js +169 -0
- package/dist/querier/abstractSqlQuerier.js.map +1 -0
- package/dist/querier/decorator/index.d.ts +5 -0
- package/dist/querier/decorator/index.d.ts.map +1 -0
- package/dist/querier/decorator/index.js +5 -0
- package/dist/querier/decorator/index.js.map +1 -0
- package/dist/querier/decorator/injectQuerier.d.ts +4 -0
- package/dist/querier/decorator/injectQuerier.d.ts.map +1 -0
- package/dist/querier/decorator/injectQuerier.js +33 -0
- package/dist/querier/decorator/injectQuerier.js.map +1 -0
- package/dist/querier/decorator/log.d.ts +7 -0
- package/dist/querier/decorator/log.d.ts.map +1 -0
- package/dist/querier/decorator/log.js +27 -0
- package/dist/querier/decorator/log.js.map +1 -0
- package/dist/querier/decorator/serialized.d.ts +7 -0
- package/dist/querier/decorator/serialized.d.ts.map +1 -0
- package/dist/querier/decorator/serialized.js +14 -0
- package/dist/querier/decorator/serialized.js.map +1 -0
- package/dist/querier/decorator/transactional.d.ts +6 -0
- package/dist/querier/decorator/transactional.d.ts.map +1 -0
- package/dist/querier/decorator/transactional.js +48 -0
- package/dist/querier/decorator/transactional.js.map +1 -0
- package/dist/querier/index.d.ts +5 -0
- package/dist/querier/index.d.ts.map +1 -0
- package/dist/querier/index.js +5 -0
- package/dist/querier/index.js.map +1 -0
- package/dist/schema/canonicalType.d.ts +42 -0
- package/dist/schema/canonicalType.d.ts.map +1 -0
- package/dist/schema/canonicalType.js +524 -0
- package/dist/schema/canonicalType.js.map +1 -0
- package/dist/schema/index.d.ts +28 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +29 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/schemaAST.d.ts +155 -0
- package/dist/schema/schemaAST.d.ts.map +1 -0
- package/dist/schema/schemaAST.js +496 -0
- package/dist/schema/schemaAST.js.map +1 -0
- package/dist/schema/schemaASTBuilder.d.ts +58 -0
- package/dist/schema/schemaASTBuilder.d.ts.map +1 -0
- package/dist/schema/schemaASTBuilder.js +224 -0
- package/dist/schema/schemaASTBuilder.js.map +1 -0
- package/dist/schema/schemaASTDiffer.d.ts +84 -0
- package/dist/schema/schemaASTDiffer.d.ts.map +1 -0
- package/dist/schema/schemaASTDiffer.js +431 -0
- package/dist/schema/schemaASTDiffer.js.map +1 -0
- package/dist/schema/types.d.ts +347 -0
- package/dist/schema/types.d.ts.map +1 -0
- package/dist/schema/types.js +11 -0
- package/dist/schema/types.js.map +1 -0
- package/dist/sqlite/abstractSqliteQuerier.d.ts +6 -0
- package/dist/sqlite/abstractSqliteQuerier.d.ts.map +1 -0
- package/dist/sqlite/abstractSqliteQuerier.js +13 -0
- package/dist/sqlite/abstractSqliteQuerier.js.map +1 -0
- package/dist/sqlite/index.d.ts +4 -0
- package/dist/sqlite/index.d.ts.map +1 -0
- package/dist/sqlite/index.js +4 -0
- package/dist/sqlite/index.js.map +1 -0
- package/dist/sqlite/sqliteDialect.d.ts +42 -0
- package/dist/sqlite/sqliteDialect.d.ts.map +1 -0
- package/dist/sqlite/sqliteDialect.js +129 -0
- package/dist/sqlite/sqliteDialect.js.map +1 -0
- package/dist/sqlite/sqliteQuerier.d.ts +12 -0
- package/dist/sqlite/sqliteQuerier.d.ts.map +1 -0
- package/dist/sqlite/sqliteQuerier.js +25 -0
- package/dist/sqlite/sqliteQuerier.js.map +1 -0
- package/dist/sqlite/sqliteQuerierPool.d.ts +13 -0
- package/dist/sqlite/sqliteQuerierPool.d.ts.map +1 -0
- package/dist/sqlite/sqliteQuerierPool.js +34 -0
- package/dist/sqlite/sqliteQuerierPool.js.map +1 -0
- package/dist/type/config.d.ts +46 -0
- package/dist/type/config.d.ts.map +1 -0
- package/dist/type/config.js +2 -0
- package/dist/type/config.js.map +1 -0
- package/dist/type/entity.d.ts +289 -0
- package/dist/type/entity.d.ts.map +1 -0
- package/dist/type/entity.js +5 -0
- package/dist/type/entity.js.map +1 -0
- package/dist/type/index.d.ts +11 -0
- package/dist/type/index.d.ts.map +1 -0
- package/dist/type/index.js +11 -0
- package/dist/type/index.js.map +1 -0
- package/dist/type/logger.d.ts +61 -0
- package/dist/type/logger.d.ts.map +1 -0
- package/dist/type/logger.js +2 -0
- package/dist/type/logger.js.map +1 -0
- package/dist/type/migration.d.ts +268 -0
- package/dist/type/migration.d.ts.map +1 -0
- package/dist/type/migration.js +2 -0
- package/dist/type/migration.js.map +1 -0
- package/dist/type/namingStrategy.d.ts +18 -0
- package/dist/type/namingStrategy.d.ts.map +1 -0
- package/dist/type/namingStrategy.js +2 -0
- package/dist/type/namingStrategy.js.map +1 -0
- package/dist/type/querier.d.ts +154 -0
- package/dist/type/querier.d.ts.map +1 -0
- package/dist/type/querier.js +11 -0
- package/dist/type/querier.js.map +1 -0
- package/dist/type/querierPool.d.ts +31 -0
- package/dist/type/querierPool.d.ts.map +1 -0
- package/dist/type/querierPool.js +2 -0
- package/dist/type/querierPool.js.map +1 -0
- package/dist/type/query.d.ts +475 -0
- package/dist/type/query.d.ts.map +1 -0
- package/dist/type/query.js +11 -0
- package/dist/type/query.js.map +1 -0
- package/dist/type/universalQuerier.d.ts +120 -0
- package/dist/type/universalQuerier.d.ts.map +1 -0
- package/dist/type/universalQuerier.js +2 -0
- package/dist/type/universalQuerier.js.map +1 -0
- package/dist/type/utility.d.ts +33 -0
- package/dist/type/utility.d.ts.map +1 -0
- package/dist/type/utility.js +2 -0
- package/dist/type/utility.js.map +1 -0
- package/dist/util/dialect.util.d.ts +13 -0
- package/dist/util/dialect.util.d.ts.map +1 -0
- package/dist/util/dialect.util.js +82 -0
- package/dist/util/dialect.util.js.map +1 -0
- package/dist/util/field.util.d.ts +14 -0
- package/dist/util/field.util.d.ts.map +1 -0
- package/dist/util/field.util.js +57 -0
- package/dist/util/field.util.js.map +1 -0
- package/dist/util/hook.util.d.ts +15 -0
- package/dist/util/hook.util.d.ts.map +1 -0
- package/dist/util/hook.util.js +20 -0
- package/dist/util/hook.util.js.map +1 -0
- package/dist/util/index.d.ts +9 -0
- package/dist/util/index.d.ts.map +1 -0
- package/dist/util/index.js +9 -0
- package/dist/util/index.js.map +1 -0
- package/dist/util/logger.d.ts +34 -0
- package/dist/util/logger.d.ts.map +1 -0
- package/dist/util/logger.js +129 -0
- package/dist/util/logger.js.map +1 -0
- package/dist/util/object.util.d.ts +8 -0
- package/dist/util/object.util.d.ts.map +1 -0
- package/dist/util/object.util.js +19 -0
- package/dist/util/object.util.js.map +1 -0
- package/dist/util/raw.d.ts +9 -0
- package/dist/util/raw.d.ts.map +1 -0
- package/dist/util/raw.js +11 -0
- package/dist/util/raw.js.map +1 -0
- package/dist/util/sql.util.d.ts +22 -0
- package/dist/util/sql.util.d.ts.map +1 -0
- package/dist/util/sql.util.js +88 -0
- package/dist/util/sql.util.js.map +1 -0
- package/dist/util/string.util.d.ts +29 -0
- package/dist/util/string.util.d.ts.map +1 -0
- package/dist/util/string.util.js +91 -0
- package/dist/util/string.util.js.map +1 -0
- package/package.json +146 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { ColumnSchema, ForeignKeySchema, IndexSchema, QuerierPool, RawRow, SchemaIntrospector, SqlQuerier, TableSchema } from '../../type/index.js';
|
|
2
|
+
import { BaseSqlIntrospector } from './baseSqlIntrospector.js';
|
|
3
|
+
/**
|
|
4
|
+
* Referential action type for foreign key constraints.
|
|
5
|
+
*/
|
|
6
|
+
export type ReferentialAction = 'CASCADE' | 'SET NULL' | 'RESTRICT' | 'NO ACTION';
|
|
7
|
+
/**
|
|
8
|
+
* Abstract base class for SQL schema introspectors.
|
|
9
|
+
*
|
|
10
|
+
* Uses the template-method pattern to consolidate shared logic while allowing
|
|
11
|
+
* dialect-specific implementations for SQL queries and type normalization.
|
|
12
|
+
*
|
|
13
|
+
* Subclasses must implement:
|
|
14
|
+
* - `getTableNamesQuery()` - SQL to list all table names
|
|
15
|
+
* - `tableExistsQuery()` - SQL to check if a table exists
|
|
16
|
+
* - `getColumnsQuery()` - SQL to get column metadata
|
|
17
|
+
* - `getIndexesQuery()` - SQL to get index metadata
|
|
18
|
+
* - `getForeignKeysQuery()` - SQL to get foreign key metadata
|
|
19
|
+
* - `getPrimaryKeyQuery()` - SQL to get primary key columns
|
|
20
|
+
* - `mapColumnRow()` - Map a column query result row to ColumnSchema
|
|
21
|
+
* - `mapIndexRow()` - Map an index query result row to IndexSchema
|
|
22
|
+
* - `mapForeignKeyRow()` - Map a foreign key query result row to ForeignKeySchema
|
|
23
|
+
* - `mapTableNameRow()` - Extract table name from a row
|
|
24
|
+
* - `mapPrimaryKeyRow()` - Extract column name from a PK row
|
|
25
|
+
*/
|
|
26
|
+
export declare abstract class AbstractSqlSchemaIntrospector extends BaseSqlIntrospector implements SchemaIntrospector {
|
|
27
|
+
protected abstract readonly pool: QuerierPool;
|
|
28
|
+
getTableSchema(tableName: string): Promise<TableSchema | undefined>;
|
|
29
|
+
getTableNames(): Promise<string[]>;
|
|
30
|
+
tableExists(tableName: string): Promise<boolean>;
|
|
31
|
+
protected getQuerier(): Promise<SqlQuerier>;
|
|
32
|
+
protected tableExistsInternal(querier: SqlQuerier, tableName: string): Promise<boolean>;
|
|
33
|
+
protected getColumns(querier: SqlQuerier, tableName: string): Promise<ColumnSchema[]>;
|
|
34
|
+
protected getIndexes(querier: SqlQuerier, tableName: string): Promise<IndexSchema[]>;
|
|
35
|
+
protected getForeignKeys(querier: SqlQuerier, tableName: string): Promise<ForeignKeySchema[]>;
|
|
36
|
+
protected getPrimaryKey(querier: SqlQuerier, tableName: string): Promise<string[] | undefined>;
|
|
37
|
+
protected tableExistsParams(tableName: string): unknown[];
|
|
38
|
+
protected getColumnsParams(tableName: string): unknown[];
|
|
39
|
+
protected getIndexesParams(tableName: string): unknown[];
|
|
40
|
+
protected getForeignKeysParams(tableName: string): unknown[];
|
|
41
|
+
protected getPrimaryKeyParams(tableName: string): unknown[];
|
|
42
|
+
/**
|
|
43
|
+
* Normalize referential action string to standard type.
|
|
44
|
+
*/
|
|
45
|
+
protected normalizeReferentialAction(action: string): ReferentialAction | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* Convert bigint/null values to number safely.
|
|
48
|
+
*/
|
|
49
|
+
protected toNumber(value: unknown): number | undefined;
|
|
50
|
+
/** SQL query to list all table names. */
|
|
51
|
+
protected abstract getTableNamesQuery(): string;
|
|
52
|
+
/** SQL query to check if a table exists. Parameter: tableName. */
|
|
53
|
+
protected abstract tableExistsQuery(): string;
|
|
54
|
+
/** Parse the result of tableExistsQuery to boolean. */
|
|
55
|
+
protected abstract parseTableExistsResult(results: RawRow[]): boolean;
|
|
56
|
+
/** SQL query to get column metadata. Parameter: tableName (for PRAGMA-style). */
|
|
57
|
+
protected abstract getColumnsQuery(tableName: string): string;
|
|
58
|
+
/** SQL query to get index metadata. Parameter: tableName (for PRAGMA-style). */
|
|
59
|
+
protected abstract getIndexesQuery(tableName: string): string;
|
|
60
|
+
/** SQL query to get foreign key metadata. Parameter: tableName (for PRAGMA-style). */
|
|
61
|
+
protected abstract getForeignKeysQuery(tableName: string): string;
|
|
62
|
+
/** SQL query to get primary key columns. Parameter: tableName (for PRAGMA-style). */
|
|
63
|
+
protected abstract getPrimaryKeyQuery(tableName: string): string;
|
|
64
|
+
/** Extract table name from a row returned by getTableNamesQuery. */
|
|
65
|
+
protected abstract mapTableNameRow(row: RawRow): string;
|
|
66
|
+
/** Map column query results to ColumnSchema array. Allows async for SQLite's unique column check. */
|
|
67
|
+
protected abstract mapColumnsResult(querier: SqlQuerier, tableName: string, results: RawRow[]): Promise<ColumnSchema[]>;
|
|
68
|
+
/** Map index query results to IndexSchema array. Allows async for SQLite's index_info calls. */
|
|
69
|
+
protected abstract mapIndexesResult(querier: SqlQuerier, tableName: string, results: RawRow[]): Promise<IndexSchema[]>;
|
|
70
|
+
/** Map foreign key query results to ForeignKeySchema array. */
|
|
71
|
+
protected abstract mapForeignKeysResult(querier: SqlQuerier, tableName: string, results: RawRow[]): Promise<ForeignKeySchema[]>;
|
|
72
|
+
/** Map primary key query results to column names array. */
|
|
73
|
+
protected abstract mapPrimaryKeyResult(results: RawRow[]): string[] | undefined;
|
|
74
|
+
/** Parse default value string to appropriate type. */
|
|
75
|
+
protected abstract parseDefaultValue(defaultValue: string | null): unknown;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=abstractSqlSchemaIntrospector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abstractSqlSchemaIntrospector.d.ts","sourceRoot":"","sources":["../../../src/migrate/introspection/abstractSqlSchemaIntrospector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { isSqlQuerier } from '../../type/index.js';
|
|
2
|
+
import { BaseSqlIntrospector } from './baseSqlIntrospector.js';
|
|
3
|
+
/**
|
|
4
|
+
* Abstract base class for SQL schema introspectors.
|
|
5
|
+
*
|
|
6
|
+
* Uses the template-method pattern to consolidate shared logic while allowing
|
|
7
|
+
* dialect-specific implementations for SQL queries and type normalization.
|
|
8
|
+
*
|
|
9
|
+
* Subclasses must implement:
|
|
10
|
+
* - `getTableNamesQuery()` - SQL to list all table names
|
|
11
|
+
* - `tableExistsQuery()` - SQL to check if a table exists
|
|
12
|
+
* - `getColumnsQuery()` - SQL to get column metadata
|
|
13
|
+
* - `getIndexesQuery()` - SQL to get index metadata
|
|
14
|
+
* - `getForeignKeysQuery()` - SQL to get foreign key metadata
|
|
15
|
+
* - `getPrimaryKeyQuery()` - SQL to get primary key columns
|
|
16
|
+
* - `mapColumnRow()` - Map a column query result row to ColumnSchema
|
|
17
|
+
* - `mapIndexRow()` - Map an index query result row to IndexSchema
|
|
18
|
+
* - `mapForeignKeyRow()` - Map a foreign key query result row to ForeignKeySchema
|
|
19
|
+
* - `mapTableNameRow()` - Extract table name from a row
|
|
20
|
+
* - `mapPrimaryKeyRow()` - Extract column name from a PK row
|
|
21
|
+
*/
|
|
22
|
+
export class AbstractSqlSchemaIntrospector extends BaseSqlIntrospector {
|
|
23
|
+
// ============================================================================
|
|
24
|
+
// Template Methods (shared control flow)
|
|
25
|
+
// ============================================================================
|
|
26
|
+
async getTableSchema(tableName) {
|
|
27
|
+
const querier = await this.getQuerier();
|
|
28
|
+
try {
|
|
29
|
+
const exists = await this.tableExistsInternal(querier, tableName);
|
|
30
|
+
if (!exists) {
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
const [columns, indexes, foreignKeys, primaryKey] = await Promise.all([
|
|
34
|
+
this.getColumns(querier, tableName),
|
|
35
|
+
this.getIndexes(querier, tableName),
|
|
36
|
+
this.getForeignKeys(querier, tableName),
|
|
37
|
+
this.getPrimaryKey(querier, tableName),
|
|
38
|
+
]);
|
|
39
|
+
return {
|
|
40
|
+
name: tableName,
|
|
41
|
+
columns,
|
|
42
|
+
primaryKey,
|
|
43
|
+
indexes,
|
|
44
|
+
foreignKeys,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
finally {
|
|
48
|
+
await querier.release();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
async getTableNames() {
|
|
52
|
+
const querier = await this.getQuerier();
|
|
53
|
+
try {
|
|
54
|
+
const results = await querier.all(this.getTableNamesQuery());
|
|
55
|
+
return results.map((row) => this.mapTableNameRow(row));
|
|
56
|
+
}
|
|
57
|
+
finally {
|
|
58
|
+
await querier.release();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
async tableExists(tableName) {
|
|
62
|
+
const querier = await this.getQuerier();
|
|
63
|
+
try {
|
|
64
|
+
return this.tableExistsInternal(querier, tableName);
|
|
65
|
+
}
|
|
66
|
+
finally {
|
|
67
|
+
await querier.release();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
async getQuerier() {
|
|
71
|
+
const querier = await this.pool.getQuerier();
|
|
72
|
+
if (!isSqlQuerier(querier)) {
|
|
73
|
+
await querier.release();
|
|
74
|
+
throw new Error(`${this.constructor.name} requires a SQL-based querier`);
|
|
75
|
+
}
|
|
76
|
+
return querier;
|
|
77
|
+
}
|
|
78
|
+
async tableExistsInternal(querier, tableName) {
|
|
79
|
+
const sql = this.tableExistsQuery();
|
|
80
|
+
const params = this.tableExistsParams(tableName);
|
|
81
|
+
const results = await querier.all(sql, params);
|
|
82
|
+
return this.parseTableExistsResult(results);
|
|
83
|
+
}
|
|
84
|
+
async getColumns(querier, tableName) {
|
|
85
|
+
const sql = this.getColumnsQuery(tableName);
|
|
86
|
+
const params = this.getColumnsParams(tableName);
|
|
87
|
+
const results = await querier.all(sql, params);
|
|
88
|
+
return this.mapColumnsResult(querier, tableName, results);
|
|
89
|
+
}
|
|
90
|
+
async getIndexes(querier, tableName) {
|
|
91
|
+
const sql = this.getIndexesQuery(tableName);
|
|
92
|
+
const params = this.getIndexesParams(tableName);
|
|
93
|
+
const results = await querier.all(sql, params);
|
|
94
|
+
return this.mapIndexesResult(querier, tableName, results);
|
|
95
|
+
}
|
|
96
|
+
async getForeignKeys(querier, tableName) {
|
|
97
|
+
const sql = this.getForeignKeysQuery(tableName);
|
|
98
|
+
const params = this.getForeignKeysParams(tableName);
|
|
99
|
+
const results = await querier.all(sql, params);
|
|
100
|
+
return this.mapForeignKeysResult(querier, tableName, results);
|
|
101
|
+
}
|
|
102
|
+
async getPrimaryKey(querier, tableName) {
|
|
103
|
+
const sql = this.getPrimaryKeyQuery(tableName);
|
|
104
|
+
const params = this.getPrimaryKeyParams(tableName);
|
|
105
|
+
const results = await querier.all(sql, params);
|
|
106
|
+
return this.mapPrimaryKeyResult(results);
|
|
107
|
+
}
|
|
108
|
+
// ============================================================================
|
|
109
|
+
// Parameter Methods (can be overridden by dialects)
|
|
110
|
+
// ============================================================================
|
|
111
|
+
tableExistsParams(tableName) {
|
|
112
|
+
return [tableName];
|
|
113
|
+
}
|
|
114
|
+
getColumnsParams(tableName) {
|
|
115
|
+
return [tableName];
|
|
116
|
+
}
|
|
117
|
+
getIndexesParams(tableName) {
|
|
118
|
+
return [tableName];
|
|
119
|
+
}
|
|
120
|
+
getForeignKeysParams(tableName) {
|
|
121
|
+
return [tableName];
|
|
122
|
+
}
|
|
123
|
+
getPrimaryKeyParams(tableName) {
|
|
124
|
+
return [tableName];
|
|
125
|
+
}
|
|
126
|
+
// ============================================================================
|
|
127
|
+
// Shared Utilities
|
|
128
|
+
// ============================================================================
|
|
129
|
+
/**
|
|
130
|
+
* Normalize referential action string to standard type.
|
|
131
|
+
*/
|
|
132
|
+
normalizeReferentialAction(action) {
|
|
133
|
+
switch (action.toUpperCase()) {
|
|
134
|
+
case 'CASCADE':
|
|
135
|
+
return 'CASCADE';
|
|
136
|
+
case 'SET NULL':
|
|
137
|
+
return 'SET NULL';
|
|
138
|
+
case 'RESTRICT':
|
|
139
|
+
return 'RESTRICT';
|
|
140
|
+
case 'NO ACTION':
|
|
141
|
+
return 'NO ACTION';
|
|
142
|
+
default:
|
|
143
|
+
return undefined;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Convert bigint/null values to number safely.
|
|
148
|
+
*/
|
|
149
|
+
toNumber(value) {
|
|
150
|
+
if (value == null || value === '') {
|
|
151
|
+
return undefined;
|
|
152
|
+
}
|
|
153
|
+
return Number(value);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=abstractSqlSchemaIntrospector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abstractSqlSchemaIntrospector.js","sourceRoot":"","sources":["../../../src/migrate/introspection/abstractSqlSchemaIntrospector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type DialectConfig } from '../../dialect/index.js';
|
|
2
|
+
import { SchemaAST } from '../../schema/schemaAST.js';
|
|
3
|
+
import type { Dialect } from '../../type/index.js';
|
|
4
|
+
import type { TableSchema } from '../../type/migration.js';
|
|
5
|
+
/**
|
|
6
|
+
* Base class for SQL introspectors with shared AST building logic.
|
|
7
|
+
*/
|
|
8
|
+
export declare abstract class BaseSqlIntrospector {
|
|
9
|
+
protected readonly dialect: Dialect;
|
|
10
|
+
protected readonly config: DialectConfig;
|
|
11
|
+
constructor(dialect: Dialect);
|
|
12
|
+
protected escapeId(identifier: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* Introspect entire database schema and return SchemaAST.
|
|
15
|
+
*/
|
|
16
|
+
introspect(): Promise<SchemaAST>;
|
|
17
|
+
abstract getTableNames(): Promise<string[]>;
|
|
18
|
+
abstract getTableSchema(tableName: string): Promise<TableSchema | undefined>;
|
|
19
|
+
/**
|
|
20
|
+
* Build SchemaAST from table schemas.
|
|
21
|
+
*/
|
|
22
|
+
protected buildAST(tableSchemas: TableSchema[]): SchemaAST;
|
|
23
|
+
private buildTables;
|
|
24
|
+
private buildRelationships;
|
|
25
|
+
private buildIndexes;
|
|
26
|
+
private columnSchemaToCanonical;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=baseSqlIntrospector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"baseSqlIntrospector.d.ts","sourceRoot":"","sources":["../../../src/migrate/introspection/baseSqlIntrospector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAoB,MAAM,wBAAwB,CAAC;AAE9E,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGzE;;GAEG;AACH,8BAAsB,mBAAmB;IAG3B,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO;IAF/C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;gBAEV,OAAO,EAAE,OAAO;IAI/C,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAG9C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC;IActC,QAAQ,CAAC,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAE5E;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,SAAS;IAW1D,OAAO,CAAC,WAAW;IAoCnB,OAAO,CAAC,kBAAkB;IA4B1B,OAAO,CAAC,YAAY;IAqBpB,OAAO,CAAC,uBAAuB;CAShC"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { getDialectConfig } from '../../dialect/index.js';
|
|
2
|
+
import { sqlToCanonical } from '../../schema/canonicalType.js';
|
|
3
|
+
import { SchemaAST } from '../../schema/schemaAST.js';
|
|
4
|
+
import { escapeSqlId } from '../../util/index.js';
|
|
5
|
+
/**
|
|
6
|
+
* Base class for SQL introspectors with shared AST building logic.
|
|
7
|
+
*/
|
|
8
|
+
export class BaseSqlIntrospector {
|
|
9
|
+
dialect;
|
|
10
|
+
config;
|
|
11
|
+
constructor(dialect) {
|
|
12
|
+
this.dialect = dialect;
|
|
13
|
+
this.config = getDialectConfig(dialect);
|
|
14
|
+
}
|
|
15
|
+
escapeId(identifier) {
|
|
16
|
+
return escapeSqlId(identifier, this.config.quoteChar);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Introspect entire database schema and return SchemaAST.
|
|
20
|
+
*/
|
|
21
|
+
async introspect() {
|
|
22
|
+
const tableNames = await this.getTableNames();
|
|
23
|
+
const tableSchemas = [];
|
|
24
|
+
for (const tableName of tableNames) {
|
|
25
|
+
const schema = await this.getTableSchema(tableName);
|
|
26
|
+
if (schema) {
|
|
27
|
+
tableSchemas.push(schema);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return this.buildAST(tableSchemas);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Build SchemaAST from table schemas.
|
|
34
|
+
*/
|
|
35
|
+
buildAST(tableSchemas) {
|
|
36
|
+
const ast = new SchemaAST();
|
|
37
|
+
const tableNodes = new Map();
|
|
38
|
+
this.buildTables(ast, tableNodes, tableSchemas);
|
|
39
|
+
this.buildRelationships(ast, tableNodes, tableSchemas);
|
|
40
|
+
this.buildIndexes(ast, tableNodes, tableSchemas);
|
|
41
|
+
return ast;
|
|
42
|
+
}
|
|
43
|
+
buildTables(ast, tableNodes, tableSchemas) {
|
|
44
|
+
for (const schema of tableSchemas) {
|
|
45
|
+
const columns = new Map();
|
|
46
|
+
const table = {
|
|
47
|
+
name: schema.name,
|
|
48
|
+
columns,
|
|
49
|
+
primaryKey: [],
|
|
50
|
+
indexes: [],
|
|
51
|
+
schema: ast,
|
|
52
|
+
incomingRelations: [],
|
|
53
|
+
outgoingRelations: [],
|
|
54
|
+
};
|
|
55
|
+
for (const col of schema.columns) {
|
|
56
|
+
const column = {
|
|
57
|
+
name: col.name,
|
|
58
|
+
type: this.columnSchemaToCanonical(col),
|
|
59
|
+
nullable: col.nullable,
|
|
60
|
+
defaultValue: col.defaultValue,
|
|
61
|
+
isPrimaryKey: col.isPrimaryKey,
|
|
62
|
+
isAutoIncrement: col.isAutoIncrement,
|
|
63
|
+
isUnique: col.isUnique,
|
|
64
|
+
comment: col.comment,
|
|
65
|
+
table,
|
|
66
|
+
referencedBy: [],
|
|
67
|
+
};
|
|
68
|
+
columns.set(col.name, column);
|
|
69
|
+
if (col.isPrimaryKey) {
|
|
70
|
+
table.primaryKey.push(column);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
tableNodes.set(schema.name, table);
|
|
74
|
+
ast.addTable(table);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
buildRelationships(ast, tableNodes, tableSchemas) {
|
|
78
|
+
for (const schema of tableSchemas) {
|
|
79
|
+
if (!schema.foreignKeys)
|
|
80
|
+
continue;
|
|
81
|
+
const fromTable = tableNodes.get(schema.name);
|
|
82
|
+
if (!fromTable)
|
|
83
|
+
continue;
|
|
84
|
+
for (const fk of schema.foreignKeys) {
|
|
85
|
+
const toTable = tableNodes.get(fk.referencedTable);
|
|
86
|
+
if (!toTable)
|
|
87
|
+
continue;
|
|
88
|
+
const fromColumns = fk.columns.map((c) => fromTable.columns.get(c)).filter((c) => !!c);
|
|
89
|
+
const toColumns = fk.referencedColumns.map((c) => toTable.columns.get(c)).filter((c) => !!c);
|
|
90
|
+
if (fromColumns.length > 0 && toColumns.length > 0) {
|
|
91
|
+
const rel = {
|
|
92
|
+
name: fk.name,
|
|
93
|
+
type: fromColumns[0].isUnique ? 'OneToOne' : 'ManyToOne',
|
|
94
|
+
from: { table: fromTable, columns: fromColumns },
|
|
95
|
+
to: { table: toTable, columns: toColumns },
|
|
96
|
+
onDelete: fk.onDelete || 'NO ACTION',
|
|
97
|
+
onUpdate: fk.onUpdate || 'NO ACTION',
|
|
98
|
+
};
|
|
99
|
+
ast.addRelationship(rel);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
buildIndexes(ast, tableNodes, tableSchemas) {
|
|
105
|
+
for (const schema of tableSchemas) {
|
|
106
|
+
if (!schema.indexes)
|
|
107
|
+
continue;
|
|
108
|
+
const table = tableNodes.get(schema.name);
|
|
109
|
+
if (!table)
|
|
110
|
+
continue;
|
|
111
|
+
for (const idx of schema.indexes) {
|
|
112
|
+
const columns = idx.columns.map((c) => table.columns.get(c)).filter((c) => !!c);
|
|
113
|
+
if (columns.length > 0) {
|
|
114
|
+
const index = {
|
|
115
|
+
name: idx.name,
|
|
116
|
+
table,
|
|
117
|
+
columns,
|
|
118
|
+
unique: idx.unique,
|
|
119
|
+
};
|
|
120
|
+
ast.addIndex(index);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
columnSchemaToCanonical(col) {
|
|
126
|
+
const base = sqlToCanonical(col.type);
|
|
127
|
+
return {
|
|
128
|
+
...base,
|
|
129
|
+
length: col.length ?? base.length,
|
|
130
|
+
precision: col.precision ?? base.precision,
|
|
131
|
+
scale: col.scale ?? base.scale,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=baseSqlIntrospector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"baseSqlIntrospector.js","sourceRoot":"","sources":["../../../src/migrate/introspection/baseSqlIntrospector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from './abstractSqlSchemaIntrospector.js';
|
|
2
|
+
export * from './mongoIntrospector.js';
|
|
3
|
+
export { MariadbSchemaIntrospector, MysqlSchemaIntrospector } from './mysqlIntrospector.js';
|
|
4
|
+
export * from './postgresIntrospector.js';
|
|
5
|
+
export * from './sqliteIntrospector.js';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/migrate/introspection/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAC5F,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from './abstractSqlSchemaIntrospector.js';
|
|
2
|
+
export * from './mongoIntrospector.js';
|
|
3
|
+
export { MariadbSchemaIntrospector, MysqlSchemaIntrospector } from './mysqlIntrospector.js';
|
|
4
|
+
export * from './postgresIntrospector.js';
|
|
5
|
+
export * from './sqliteIntrospector.js';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/migrate/introspection/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAC5F,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { SchemaAST } from '../../schema/schemaAST.js';
|
|
2
|
+
import type { QuerierPool, SchemaIntrospector, TableSchema } from '../../type/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* MongoDB schema introspector.
|
|
5
|
+
* MongoDB doesn't have a fixed schema, so this primarily focuses on collections and indexes.
|
|
6
|
+
*/
|
|
7
|
+
export declare class MongoSchemaIntrospector implements SchemaIntrospector {
|
|
8
|
+
private readonly pool;
|
|
9
|
+
constructor(pool: QuerierPool);
|
|
10
|
+
introspect(): Promise<SchemaAST>;
|
|
11
|
+
getTableSchema(tableName: string): Promise<TableSchema | undefined>;
|
|
12
|
+
getTableNames(): Promise<string[]>;
|
|
13
|
+
tableExists(tableName: string): Promise<boolean>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=mongoIntrospector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mongoIntrospector.d.ts","sourceRoot":"","sources":["../../../src/migrate/introspection/mongoIntrospector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,OAAO,KAAK,EAAgB,WAAW,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEtG;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,kBAAkB;IACpD,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,WAAW;IAExC,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC;IAsDhC,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IA0BnE,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAWlC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAIvD"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { SchemaAST } from '../../schema/schemaAST.js';
|
|
2
|
+
/**
|
|
3
|
+
* MongoDB schema introspector.
|
|
4
|
+
* MongoDB doesn't have a fixed schema, so this primarily focuses on collections and indexes.
|
|
5
|
+
*/
|
|
6
|
+
export class MongoSchemaIntrospector {
|
|
7
|
+
pool;
|
|
8
|
+
constructor(pool) {
|
|
9
|
+
this.pool = pool;
|
|
10
|
+
}
|
|
11
|
+
async introspect() {
|
|
12
|
+
const tableNames = await this.getTableNames();
|
|
13
|
+
const ast = new SchemaAST();
|
|
14
|
+
for (const name of tableNames) {
|
|
15
|
+
const schema = await this.getTableSchema(name);
|
|
16
|
+
if (schema) {
|
|
17
|
+
const columns = new Map();
|
|
18
|
+
const table = {
|
|
19
|
+
name,
|
|
20
|
+
columns,
|
|
21
|
+
primaryKey: [],
|
|
22
|
+
indexes: [],
|
|
23
|
+
schema: ast,
|
|
24
|
+
incomingRelations: [],
|
|
25
|
+
outgoingRelations: [],
|
|
26
|
+
};
|
|
27
|
+
if (schema.indexes) {
|
|
28
|
+
for (const idx of schema.indexes) {
|
|
29
|
+
const indexColumns = [];
|
|
30
|
+
for (const colName of idx.columns) {
|
|
31
|
+
let column = columns.get(colName);
|
|
32
|
+
if (!column) {
|
|
33
|
+
column = {
|
|
34
|
+
name: colName,
|
|
35
|
+
type: { category: 'string' }, // MongoDB fields are flexible, but indexes usually target strings/numbers
|
|
36
|
+
nullable: true,
|
|
37
|
+
isPrimaryKey: false,
|
|
38
|
+
isAutoIncrement: false,
|
|
39
|
+
isUnique: false,
|
|
40
|
+
table,
|
|
41
|
+
referencedBy: [],
|
|
42
|
+
};
|
|
43
|
+
columns.set(colName, column);
|
|
44
|
+
}
|
|
45
|
+
indexColumns.push(column);
|
|
46
|
+
}
|
|
47
|
+
table.indexes.push({
|
|
48
|
+
name: idx.name,
|
|
49
|
+
table,
|
|
50
|
+
columns: indexColumns,
|
|
51
|
+
unique: idx.unique,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
ast.addTable(table);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return ast;
|
|
59
|
+
}
|
|
60
|
+
async getTableSchema(tableName) {
|
|
61
|
+
const querier = await this.pool.getQuerier();
|
|
62
|
+
try {
|
|
63
|
+
const { db } = querier;
|
|
64
|
+
const collections = await db.listCollections({ name: tableName }).toArray();
|
|
65
|
+
if (collections.length === 0) {
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
// MongoDB doesn't have a fixed schema, but we can look at the indexes
|
|
69
|
+
const indexes = await db.collection(tableName).indexes();
|
|
70
|
+
return {
|
|
71
|
+
name: tableName,
|
|
72
|
+
columns: [], // We don't have columns in Mongo
|
|
73
|
+
indexes: indexes.map((idx) => ({
|
|
74
|
+
name: idx.name ?? Object.keys(idx.key).join('_'),
|
|
75
|
+
columns: Object.keys(idx.key),
|
|
76
|
+
unique: !!idx.unique,
|
|
77
|
+
})),
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
finally {
|
|
81
|
+
await querier.release();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
async getTableNames() {
|
|
85
|
+
const querier = await this.pool.getQuerier();
|
|
86
|
+
try {
|
|
87
|
+
const { db } = querier;
|
|
88
|
+
const collections = await db.listCollections().toArray();
|
|
89
|
+
return collections.map((c) => c.name);
|
|
90
|
+
}
|
|
91
|
+
finally {
|
|
92
|
+
await querier.release();
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
async tableExists(tableName) {
|
|
96
|
+
const names = await this.getTableNames();
|
|
97
|
+
return names.includes(tableName);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=mongoIntrospector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mongoIntrospector.js","sourceRoot":"","sources":["../../../src/migrate/introspection/mongoIntrospector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAItD;;;GAGG;AACH,MAAM,OAAO,uBAAuB;IACL;IAA7B,YAA6B,IAAiB;QAAjB,SAAI,GAAJ,IAAI,CAAa;IAAG,CAAC;IAElD,KAAK,CAAC,UAAU;QACd,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9C,MAAM,GAAG,GAAG,IAAI,SAAS,EAAE,CAAC;QAE5B,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,OAAO,GAAG,IAAI,GAAG,EAAsB,CAAC;gBAC9C,MAAM,KAAK,GAAc;oBACvB,IAAI;oBACJ,OAAO;oBACP,UAAU,EAAE,EAAE;oBACd,OAAO,EAAE,EAAE;oBACX,MAAM,EAAE,GAAG;oBACX,iBAAiB,EAAE,EAAE;oBACrB,iBAAiB,EAAE,EAAE;iBACtB,CAAC;gBAEF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;wBACjC,MAAM,YAAY,GAAiB,EAAE,CAAC;wBACtC,KAAK,MAAM,OAAO,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;4BAClC,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;4BAClC,IAAI,CAAC,MAAM,EAAE,CAAC;gCACZ,MAAM,GAAG;oCACP,IAAI,EAAE,OAAO;oCACb,IAAI,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,0EAA0E;oCACxG,QAAQ,EAAE,IAAI;oCACd,YAAY,EAAE,KAAK;oCACnB,eAAe,EAAE,KAAK;oCACtB,QAAQ,EAAE,KAAK;oCACf,KAAK;oCACL,YAAY,EAAE,EAAE;iCACjB,CAAC;gCACF,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;4BAC/B,CAAC;4BACD,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBAC5B,CAAC;wBACD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;4BACjB,IAAI,EAAE,GAAG,CAAC,IAAI;4BACd,KAAK;4BACL,OAAO,EAAE,YAAY;4BACrB,MAAM,EAAE,GAAG,CAAC,MAAM;yBACnB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBAED,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,SAAiB;QACpC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAC7C,IAAI,CAAC;YACH,MAAM,EAAE,EAAE,EAAE,GAAG,OAAuB,CAAC;YACvC,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;YAC5E,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,sEAAsE;YACtE,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;YAEzD,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,EAAE,EAAE,iCAAiC;gBAC9C,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBAC7B,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;oBAChD,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;oBAC7B,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM;iBACrB,CAAC,CAAC;aACJ,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAC7C,IAAI,CAAC;YACH,MAAM,EAAE,EAAE,EAAE,GAAG,OAAuB,CAAC;YACvC,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,CAAC;YACzD,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1D,CAAC;gBAAS,CAAC;YACT,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,SAAiB;QACjC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;CACF"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { ColumnSchema, ForeignKeySchema, IndexSchema, QuerierPool, SqlQuerier } from '../../type/index.js';
|
|
2
|
+
import { AbstractSqlSchemaIntrospector } from './abstractSqlSchemaIntrospector.js';
|
|
3
|
+
/**
|
|
4
|
+
* MySQL/MariaDB schema introspector.
|
|
5
|
+
* Works with both MySQL and MariaDB as they share the same information_schema structure.
|
|
6
|
+
*/
|
|
7
|
+
export declare class MysqlSchemaIntrospector extends AbstractSqlSchemaIntrospector {
|
|
8
|
+
protected readonly pool: QuerierPool;
|
|
9
|
+
constructor(pool: QuerierPool);
|
|
10
|
+
protected getTableNamesQuery(): string;
|
|
11
|
+
protected tableExistsQuery(): string;
|
|
12
|
+
protected parseTableExistsResult(results: {
|
|
13
|
+
count?: number | bigint;
|
|
14
|
+
}[]): boolean;
|
|
15
|
+
protected getColumnsQuery(_tableName: string): string;
|
|
16
|
+
protected getIndexesQuery(_tableName: string): string;
|
|
17
|
+
protected getForeignKeysQuery(_tableName: string): string;
|
|
18
|
+
protected getPrimaryKeyQuery(_tableName: string): string;
|
|
19
|
+
protected mapTableNameRow(row: {
|
|
20
|
+
table_name: string;
|
|
21
|
+
}): string;
|
|
22
|
+
protected mapColumnsResult(_querier: SqlQuerier, _tableName: string, results: MysqlColumnRow[]): Promise<ColumnSchema[]>;
|
|
23
|
+
protected mapIndexesResult(_querier: SqlQuerier, _tableName: string, results: {
|
|
24
|
+
index_name: string;
|
|
25
|
+
columns: string;
|
|
26
|
+
is_unique: number;
|
|
27
|
+
}[]): Promise<IndexSchema[]>;
|
|
28
|
+
protected mapForeignKeysResult(_querier: SqlQuerier, _tableName: string, results: {
|
|
29
|
+
constraint_name: string;
|
|
30
|
+
columns: string;
|
|
31
|
+
referenced_table: string;
|
|
32
|
+
referenced_columns: string;
|
|
33
|
+
delete_rule: string;
|
|
34
|
+
update_rule: string;
|
|
35
|
+
}[]): Promise<ForeignKeySchema[]>;
|
|
36
|
+
protected mapPrimaryKeyResult(results: {
|
|
37
|
+
column_name: string;
|
|
38
|
+
}[]): string[] | undefined;
|
|
39
|
+
protected parseDefaultValue(defaultValue: string | null): unknown;
|
|
40
|
+
}
|
|
41
|
+
type MysqlColumnRow = {
|
|
42
|
+
column_name: string;
|
|
43
|
+
column_type: string;
|
|
44
|
+
is_nullable: string;
|
|
45
|
+
column_default: string | null;
|
|
46
|
+
column_key: string;
|
|
47
|
+
extra: string;
|
|
48
|
+
character_maximum_length: number | bigint | null;
|
|
49
|
+
numeric_precision: number | bigint | null;
|
|
50
|
+
numeric_scale: number | null;
|
|
51
|
+
column_comment: string | null;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Alias for MysqlSchemaIntrospector.
|
|
55
|
+
* MariaDB uses the same information_schema structure as MySQL.
|
|
56
|
+
*/
|
|
57
|
+
export declare const MariadbSchemaIntrospector: typeof MysqlSchemaIntrospector;
|
|
58
|
+
export {};
|
|
59
|
+
//# sourceMappingURL=mysqlIntrospector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysqlIntrospector.d.ts","sourceRoot":"","sources":["../../../src/migrate/introspection/mysqlIntrospector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAChH,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAEnF;;;GAGG;AACH,qBAAa,uBAAwB,SAAQ,6BAA6B;IACxE,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;gBAEzB,IAAI,EAAE,WAAW;IAS7B,SAAS,CAAC,kBAAkB,IAAI,MAAM;IAUtC,SAAS,CAAC,gBAAgB,IAAI,MAAM;IASpC,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,EAAE,GAAG,OAAO;IAQjF,SAAS,CAAC,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAqBrD,SAAS,CAAC,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAerD,SAAS,CAAC,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAqBzD,SAAS,CAAC,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAexD,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;cAI9C,gBAAgB,CAC9B,QAAQ,EAAE,UAAU,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,cAAc,EAAE,GACxB,OAAO,CAAC,YAAY,EAAE,CAAC;cAgBV,gBAAgB,CAC9B,QAAQ,EAAE,UAAU,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAAE,GACpE,OAAO,CAAC,WAAW,EAAE,CAAC;cAQT,oBAAoB,CAClC,QAAQ,EAAE,UAAU,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;QACP,eAAe,EAAE,MAAM,CAAC;QACxB,OAAO,EAAE,MAAM,CAAC;QAChB,gBAAgB,EAAE,MAAM,CAAC;QACzB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;KACrB,EAAE,GACF,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAW9B,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,MAAM,EAAE,GAAG,SAAS;IAOvF,SAAS,CAAC,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO;CAwBlE;AAED,KAAK,cAAc,GAAG;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,wBAAwB,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACjD,iBAAiB,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC1C,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,gCAA0B,CAAC"}
|