@alpha.consultings/eloquent-orm.js 1.0.1
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 +73 -0
- package/README.md +215 -0
- package/dist/Model.d.ts +2 -0
- package/dist/Model.d.ts.map +1 -0
- package/dist/Model.js +7 -0
- package/dist/Model.js.map +1 -0
- package/dist/cli/commands/cacheClear.d.ts +2 -0
- package/dist/cli/commands/cacheClear.d.ts.map +1 -0
- package/dist/cli/commands/cacheClear.js +69 -0
- package/dist/cli/commands/cacheClear.js.map +1 -0
- package/dist/cli/commands/cacheStats.d.ts +2 -0
- package/dist/cli/commands/cacheStats.d.ts.map +1 -0
- package/dist/cli/commands/cacheStats.js +55 -0
- package/dist/cli/commands/cacheStats.js.map +1 -0
- package/dist/cli/commands/dbSeed.d.ts +16 -0
- package/dist/cli/commands/dbSeed.d.ts.map +1 -0
- package/dist/cli/commands/dbSeed.js +201 -0
- package/dist/cli/commands/dbSeed.js.map +1 -0
- package/dist/cli/commands/dbSeedBootstrapPrecheck.d.ts +3 -0
- package/dist/cli/commands/dbSeedBootstrapPrecheck.d.ts.map +1 -0
- package/dist/cli/commands/dbSeedBootstrapPrecheck.js +8 -0
- package/dist/cli/commands/dbSeedBootstrapPrecheck.js.map +1 -0
- package/dist/cli/commands/dbSeedFresh.d.ts +14 -0
- package/dist/cli/commands/dbSeedFresh.d.ts.map +1 -0
- package/dist/cli/commands/dbSeedFresh.js +81 -0
- package/dist/cli/commands/dbSeedFresh.js.map +1 -0
- package/dist/cli/commands/demoScenario.d.ts +9 -0
- package/dist/cli/commands/demoScenario.d.ts.map +1 -0
- package/dist/cli/commands/demoScenario.js +185 -0
- package/dist/cli/commands/demoScenario.js.map +1 -0
- package/dist/cli/commands/factoryStatus.d.ts +9 -0
- package/dist/cli/commands/factoryStatus.d.ts.map +1 -0
- package/dist/cli/commands/factoryStatus.js +103 -0
- package/dist/cli/commands/factoryStatus.js.map +1 -0
- package/dist/cli/commands/makeController.d.ts +11 -0
- package/dist/cli/commands/makeController.d.ts.map +1 -0
- package/dist/cli/commands/makeController.js +61 -0
- package/dist/cli/commands/makeController.js.map +1 -0
- package/dist/cli/commands/makeFactory.d.ts +14 -0
- package/dist/cli/commands/makeFactory.d.ts.map +1 -0
- package/dist/cli/commands/makeFactory.js +183 -0
- package/dist/cli/commands/makeFactory.js.map +1 -0
- package/dist/cli/commands/makeMigration.d.ts +18 -0
- package/dist/cli/commands/makeMigration.d.ts.map +1 -0
- package/dist/cli/commands/makeMigration.js +496 -0
- package/dist/cli/commands/makeMigration.js.map +1 -0
- package/dist/cli/commands/makeModel.d.ts +20 -0
- package/dist/cli/commands/makeModel.d.ts.map +1 -0
- package/dist/cli/commands/makeModel.js +360 -0
- package/dist/cli/commands/makeModel.js.map +1 -0
- package/dist/cli/commands/makeRegistry.d.ts +7 -0
- package/dist/cli/commands/makeRegistry.d.ts.map +1 -0
- package/dist/cli/commands/makeRegistry.js +88 -0
- package/dist/cli/commands/makeRegistry.js.map +1 -0
- package/dist/cli/commands/makeScenario.d.ts +12 -0
- package/dist/cli/commands/makeScenario.d.ts.map +1 -0
- package/dist/cli/commands/makeScenario.js +639 -0
- package/dist/cli/commands/makeScenario.js.map +1 -0
- package/dist/cli/commands/makeSeed.d.ts +11 -0
- package/dist/cli/commands/makeSeed.d.ts.map +1 -0
- package/dist/cli/commands/makeSeed.js +47 -0
- package/dist/cli/commands/makeSeed.js.map +1 -0
- package/dist/cli/commands/makeService.d.ts +5 -0
- package/dist/cli/commands/makeService.d.ts.map +1 -0
- package/dist/cli/commands/makeService.js +31 -0
- package/dist/cli/commands/makeService.js.map +1 -0
- package/dist/cli/commands/migrateFresh.d.ts +14 -0
- package/dist/cli/commands/migrateFresh.d.ts.map +1 -0
- package/dist/cli/commands/migrateFresh.js +150 -0
- package/dist/cli/commands/migrateFresh.js.map +1 -0
- package/dist/cli/commands/migrateReset.d.ts +12 -0
- package/dist/cli/commands/migrateReset.d.ts.map +1 -0
- package/dist/cli/commands/migrateReset.js +28 -0
- package/dist/cli/commands/migrateReset.js.map +1 -0
- package/dist/cli/commands/migrateRollback.d.ts +10 -0
- package/dist/cli/commands/migrateRollback.d.ts.map +1 -0
- package/dist/cli/commands/migrateRollback.js +303 -0
- package/dist/cli/commands/migrateRollback.js.map +1 -0
- package/dist/cli/commands/migrateRun.d.ts +10 -0
- package/dist/cli/commands/migrateRun.d.ts.map +1 -0
- package/dist/cli/commands/migrateRun.js +301 -0
- package/dist/cli/commands/migrateRun.js.map +1 -0
- package/dist/cli/commands/migrateStatus.d.ts +8 -0
- package/dist/cli/commands/migrateStatus.d.ts.map +1 -0
- package/dist/cli/commands/migrateStatus.js +118 -0
- package/dist/cli/commands/migrateStatus.js.map +1 -0
- package/dist/cli/eloquent.d.ts +18 -0
- package/dist/cli/eloquent.d.ts.map +1 -0
- package/dist/cli/eloquent.js +187 -0
- package/dist/cli/eloquent.js.map +1 -0
- package/dist/cli/utils/ArtifactCompatibility.d.ts +10 -0
- package/dist/cli/utils/ArtifactCompatibility.d.ts.map +1 -0
- package/dist/cli/utils/ArtifactCompatibility.js +60 -0
- package/dist/cli/utils/ArtifactCompatibility.js.map +1 -0
- package/dist/cli/utils/ArtifactRoutingReport.d.ts +10 -0
- package/dist/cli/utils/ArtifactRoutingReport.d.ts.map +1 -0
- package/dist/cli/utils/ArtifactRoutingReport.js +25 -0
- package/dist/cli/utils/ArtifactRoutingReport.js.map +1 -0
- package/dist/cli/utils/ArtifactStorage.d.ts +10 -0
- package/dist/cli/utils/ArtifactStorage.d.ts.map +1 -0
- package/dist/cli/utils/ArtifactStorage.js +193 -0
- package/dist/cli/utils/ArtifactStorage.js.map +1 -0
- package/dist/cli/utils/AuditTrail.d.ts +25 -0
- package/dist/cli/utils/AuditTrail.d.ts.map +1 -0
- package/dist/cli/utils/AuditTrail.js +74 -0
- package/dist/cli/utils/AuditTrail.js.map +1 -0
- package/dist/cli/utils/CliActionRuntime.d.ts +5 -0
- package/dist/cli/utils/CliActionRuntime.d.ts.map +1 -0
- package/dist/cli/utils/CliActionRuntime.js +22 -0
- package/dist/cli/utils/CliActionRuntime.js.map +1 -0
- package/dist/cli/utils/CliBootstrapSupport.d.ts +13 -0
- package/dist/cli/utils/CliBootstrapSupport.d.ts.map +1 -0
- package/dist/cli/utils/CliBootstrapSupport.js +55 -0
- package/dist/cli/utils/CliBootstrapSupport.js.map +1 -0
- package/dist/cli/utils/CliCommandCatalog.d.ts +6 -0
- package/dist/cli/utils/CliCommandCatalog.d.ts.map +1 -0
- package/dist/cli/utils/CliCommandCatalog.js +78 -0
- package/dist/cli/utils/CliCommandCatalog.js.map +1 -0
- package/dist/cli/utils/CliCommandTargets.d.ts +8 -0
- package/dist/cli/utils/CliCommandTargets.d.ts.map +1 -0
- package/dist/cli/utils/CliCommandTargets.js +19 -0
- package/dist/cli/utils/CliCommandTargets.js.map +1 -0
- package/dist/cli/utils/CliMakeArtifactCommandRegistration.d.ts +3 -0
- package/dist/cli/utils/CliMakeArtifactCommandRegistration.d.ts.map +1 -0
- package/dist/cli/utils/CliMakeArtifactCommandRegistration.js +94 -0
- package/dist/cli/utils/CliMakeArtifactCommandRegistration.js.map +1 -0
- package/dist/cli/utils/CliMigrationCommandRegistration.d.ts +3 -0
- package/dist/cli/utils/CliMigrationCommandRegistration.d.ts.map +1 -0
- package/dist/cli/utils/CliMigrationCommandRegistration.js +195 -0
- package/dist/cli/utils/CliMigrationCommandRegistration.js.map +1 -0
- package/dist/cli/utils/CliPresentation.d.ts +2 -0
- package/dist/cli/utils/CliPresentation.d.ts.map +1 -0
- package/dist/cli/utils/CliPresentation.js +13 -0
- package/dist/cli/utils/CliPresentation.js.map +1 -0
- package/dist/cli/utils/CliProductionGuards.d.ts +11 -0
- package/dist/cli/utils/CliProductionGuards.d.ts.map +1 -0
- package/dist/cli/utils/CliProductionGuards.js +34 -0
- package/dist/cli/utils/CliProductionGuards.js.map +1 -0
- package/dist/cli/utils/CliScaffoldCommandRegistration.d.ts +3 -0
- package/dist/cli/utils/CliScaffoldCommandRegistration.d.ts.map +1 -0
- package/dist/cli/utils/CliScaffoldCommandRegistration.js +89 -0
- package/dist/cli/utils/CliScaffoldCommandRegistration.js.map +1 -0
- package/dist/cli/utils/CliSeedScenarioCommandRegistration.d.ts +3 -0
- package/dist/cli/utils/CliSeedScenarioCommandRegistration.d.ts.map +1 -0
- package/dist/cli/utils/CliSeedScenarioCommandRegistration.js +123 -0
- package/dist/cli/utils/CliSeedScenarioCommandRegistration.js.map +1 -0
- package/dist/cli/utils/CliSupportCommandRegistration.d.ts +3 -0
- package/dist/cli/utils/CliSupportCommandRegistration.d.ts.map +1 -0
- package/dist/cli/utils/CliSupportCommandRegistration.js +44 -0
- package/dist/cli/utils/CliSupportCommandRegistration.js.map +1 -0
- package/dist/cli/utils/ConsoleSilencer.d.ts +6 -0
- package/dist/cli/utils/ConsoleSilencer.d.ts.map +1 -0
- package/dist/cli/utils/ConsoleSilencer.js +25 -0
- package/dist/cli/utils/ConsoleSilencer.js.map +1 -0
- package/dist/cli/utils/ImportResolver.d.ts +16 -0
- package/dist/cli/utils/ImportResolver.d.ts.map +1 -0
- package/dist/cli/utils/ImportResolver.js +57 -0
- package/dist/cli/utils/ImportResolver.js.map +1 -0
- package/dist/cli/utils/ModelIntrospector.d.ts +33 -0
- package/dist/cli/utils/ModelIntrospector.d.ts.map +1 -0
- package/dist/cli/utils/ModelIntrospector.js +76 -0
- package/dist/cli/utils/ModelIntrospector.js.map +1 -0
- package/dist/cli/utils/PathMap.d.ts +58 -0
- package/dist/cli/utils/PathMap.d.ts.map +1 -0
- package/dist/cli/utils/PathMap.js +132 -0
- package/dist/cli/utils/PathMap.js.map +1 -0
- package/dist/cli/utils/ProductionSafety.d.ts +25 -0
- package/dist/cli/utils/ProductionSafety.d.ts.map +1 -0
- package/dist/cli/utils/ProductionSafety.js +61 -0
- package/dist/cli/utils/ProductionSafety.js.map +1 -0
- package/dist/cli/utils/ScaffoldGeneratorSupport.d.ts +16 -0
- package/dist/cli/utils/ScaffoldGeneratorSupport.d.ts.map +1 -0
- package/dist/cli/utils/ScaffoldGeneratorSupport.js +66 -0
- package/dist/cli/utils/ScaffoldGeneratorSupport.js.map +1 -0
- package/dist/cli/utils/ScenarioMorphAliasRouting.d.ts +14 -0
- package/dist/cli/utils/ScenarioMorphAliasRouting.d.ts.map +1 -0
- package/dist/cli/utils/ScenarioMorphAliasRouting.js +62 -0
- package/dist/cli/utils/ScenarioMorphAliasRouting.js.map +1 -0
- package/dist/cli/utils/SeedBootstrapPrecheck.d.ts +20 -0
- package/dist/cli/utils/SeedBootstrapPrecheck.d.ts.map +1 -0
- package/dist/cli/utils/SeedBootstrapPrecheck.js +133 -0
- package/dist/cli/utils/SeedBootstrapPrecheck.js.map +1 -0
- package/dist/cli/utils/StructuredLogger.d.ts +11 -0
- package/dist/cli/utils/StructuredLogger.d.ts.map +1 -0
- package/dist/cli/utils/StructuredLogger.js +53 -0
- package/dist/cli/utils/StructuredLogger.js.map +1 -0
- package/dist/cli/utils/TemplateEngine.d.ts +30 -0
- package/dist/cli/utils/TemplateEngine.d.ts.map +1 -0
- package/dist/cli/utils/TemplateEngine.js +165 -0
- package/dist/cli/utils/TemplateEngine.js.map +1 -0
- package/dist/cli/utils/factories/Factory.d.ts +61 -0
- package/dist/cli/utils/factories/Factory.d.ts.map +1 -0
- package/dist/cli/utils/factories/Factory.js +140 -0
- package/dist/cli/utils/factories/Factory.js.map +1 -0
- package/dist/cli/utils/factories/FactoryDisplay.d.ts +6 -0
- package/dist/cli/utils/factories/FactoryDisplay.d.ts.map +1 -0
- package/dist/cli/utils/factories/FactoryDisplay.js +26 -0
- package/dist/cli/utils/factories/FactoryDisplay.js.map +1 -0
- package/dist/cli/utils/factories/FactoryGraph.d.ts +6 -0
- package/dist/cli/utils/factories/FactoryGraph.d.ts.map +1 -0
- package/dist/cli/utils/factories/FactoryGraph.js +72 -0
- package/dist/cli/utils/factories/FactoryGraph.js.map +1 -0
- package/dist/cli/utils/factories/FactoryLoader.d.ts +16 -0
- package/dist/cli/utils/factories/FactoryLoader.d.ts.map +1 -0
- package/dist/cli/utils/factories/FactoryLoader.js +35 -0
- package/dist/cli/utils/factories/FactoryLoader.js.map +1 -0
- package/dist/cli/utils/factories/FactoryRegistry.d.ts +16 -0
- package/dist/cli/utils/factories/FactoryRegistry.d.ts.map +1 -0
- package/dist/cli/utils/factories/FactoryRegistry.js +87 -0
- package/dist/cli/utils/factories/FactoryRegistry.js.map +1 -0
- package/dist/cli/utils/fileWriter.d.ts +7 -0
- package/dist/cli/utils/fileWriter.d.ts.map +1 -0
- package/dist/cli/utils/fileWriter.js +61 -0
- package/dist/cli/utils/fileWriter.js.map +1 -0
- package/dist/cli/utils/migrations/MigrationLockStrategy.d.ts +21 -0
- package/dist/cli/utils/migrations/MigrationLockStrategy.d.ts.map +1 -0
- package/dist/cli/utils/migrations/MigrationLockStrategy.js +129 -0
- package/dist/cli/utils/migrations/MigrationLockStrategy.js.map +1 -0
- package/dist/cli/utils/migrations/MigrationTracker.d.ts +25 -0
- package/dist/cli/utils/migrations/MigrationTracker.d.ts.map +1 -0
- package/dist/cli/utils/migrations/MigrationTracker.js +279 -0
- package/dist/cli/utils/migrations/MigrationTracker.js.map +1 -0
- package/dist/cli/utils/migrations/MongoMigrationTracker.d.ts +18 -0
- package/dist/cli/utils/migrations/MongoMigrationTracker.d.ts.map +1 -0
- package/dist/cli/utils/migrations/MongoMigrationTracker.js +276 -0
- package/dist/cli/utils/migrations/MongoMigrationTracker.js.map +1 -0
- package/dist/cli/utils/resolveConnectionFlags.d.ts +14 -0
- package/dist/cli/utils/resolveConnectionFlags.d.ts.map +1 -0
- package/dist/cli/utils/resolveConnectionFlags.js +42 -0
- package/dist/cli/utils/resolveConnectionFlags.js.map +1 -0
- package/dist/cli/utils/resolveSqlConnectionFlags.d.ts +9 -0
- package/dist/cli/utils/resolveSqlConnectionFlags.d.ts.map +1 -0
- package/dist/cli/utils/resolveSqlConnectionFlags.js +23 -0
- package/dist/cli/utils/resolveSqlConnectionFlags.js.map +1 -0
- package/dist/cli/utils/typescript/BaseCommand.d.ts +15 -0
- package/dist/cli/utils/typescript/BaseCommand.d.ts.map +1 -0
- package/dist/cli/utils/typescript/BaseCommand.js +36 -0
- package/dist/cli/utils/typescript/BaseCommand.js.map +1 -0
- package/dist/cli/utils/typescript/RuntimeDetector.d.ts +16 -0
- package/dist/cli/utils/typescript/RuntimeDetector.d.ts.map +1 -0
- package/dist/cli/utils/typescript/RuntimeDetector.js +45 -0
- package/dist/cli/utils/typescript/RuntimeDetector.js.map +1 -0
- package/dist/cli/utils/typescript/TypeScriptCompiler.d.ts +25 -0
- package/dist/cli/utils/typescript/TypeScriptCompiler.d.ts.map +1 -0
- package/dist/cli/utils/typescript/TypeScriptCompiler.js +109 -0
- package/dist/cli/utils/typescript/TypeScriptCompiler.js.map +1 -0
- package/dist/cli/utils/typescript/tsRuntime.d.ts +12 -0
- package/dist/cli/utils/typescript/tsRuntime.d.ts.map +1 -0
- package/dist/cli/utils/typescript/tsRuntime.js +189 -0
- package/dist/cli/utils/typescript/tsRuntime.js.map +1 -0
- package/dist/config/database.d.ts +58 -0
- package/dist/config/database.d.ts.map +1 -0
- package/dist/config/database.js +106 -0
- package/dist/config/database.js.map +1 -0
- package/dist/config/dbRoleEnv.d.ts +31 -0
- package/dist/config/dbRoleEnv.d.ts.map +1 -0
- package/dist/config/dbRoleEnv.js +171 -0
- package/dist/config/dbRoleEnv.js.map +1 -0
- package/dist/core/cache/CacheAnalytics.d.ts +47 -0
- package/dist/core/cache/CacheAnalytics.d.ts.map +1 -0
- package/dist/core/cache/CacheAnalytics.js +113 -0
- package/dist/core/cache/CacheAnalytics.js.map +1 -0
- package/dist/core/cache/CacheDriver.d.ts +19 -0
- package/dist/core/cache/CacheDriver.d.ts.map +1 -0
- package/dist/core/cache/CacheDriver.js +8 -0
- package/dist/core/cache/CacheDriver.js.map +1 -0
- package/dist/core/cache/CacheFallbackManager.d.ts +35 -0
- package/dist/core/cache/CacheFallbackManager.d.ts.map +1 -0
- package/dist/core/cache/CacheFallbackManager.js +118 -0
- package/dist/core/cache/CacheFallbackManager.js.map +1 -0
- package/dist/core/cache/CacheManager.d.ts +11 -0
- package/dist/core/cache/CacheManager.d.ts.map +1 -0
- package/dist/core/cache/CacheManager.js +27 -0
- package/dist/core/cache/CacheManager.js.map +1 -0
- package/dist/core/cache/CacheRegistry.d.ts +49 -0
- package/dist/core/cache/CacheRegistry.d.ts.map +1 -0
- package/dist/core/cache/CacheRegistry.js +117 -0
- package/dist/core/cache/CacheRegistry.js.map +1 -0
- package/dist/core/cache/drivers/FileCacheDriver.d.ts +11 -0
- package/dist/core/cache/drivers/FileCacheDriver.d.ts.map +1 -0
- package/dist/core/cache/drivers/FileCacheDriver.js +54 -0
- package/dist/core/cache/drivers/FileCacheDriver.js.map +1 -0
- package/dist/core/cache/drivers/MemcachedCacheDriver.d.ts +15 -0
- package/dist/core/cache/drivers/MemcachedCacheDriver.d.ts.map +1 -0
- package/dist/core/cache/drivers/MemcachedCacheDriver.js +60 -0
- package/dist/core/cache/drivers/MemcachedCacheDriver.js.map +1 -0
- package/dist/core/cache/drivers/MemoryCacheDriver.d.ts +9 -0
- package/dist/core/cache/drivers/MemoryCacheDriver.d.ts.map +1 -0
- package/dist/core/cache/drivers/MemoryCacheDriver.js +33 -0
- package/dist/core/cache/drivers/MemoryCacheDriver.js.map +1 -0
- package/dist/core/cache/setupCache.d.ts +2 -0
- package/dist/core/cache/setupCache.d.ts.map +1 -0
- package/dist/core/cache/setupCache.js +38 -0
- package/dist/core/cache/setupCache.js.map +1 -0
- package/dist/core/connection/BetterSqliteConnection.d.ts +23 -0
- package/dist/core/connection/BetterSqliteConnection.d.ts.map +1 -0
- package/dist/core/connection/BetterSqliteConnection.js +33 -0
- package/dist/core/connection/BetterSqliteConnection.js.map +1 -0
- package/dist/core/connection/ConnectionFactory.d.ts +18 -0
- package/dist/core/connection/ConnectionFactory.d.ts.map +1 -0
- package/dist/core/connection/ConnectionFactory.js +111 -0
- package/dist/core/connection/ConnectionFactory.js.map +1 -0
- package/dist/core/connection/DatabaseConnection.d.ts +49 -0
- package/dist/core/connection/DatabaseConnection.d.ts.map +1 -0
- package/dist/core/connection/DatabaseConnection.js +120 -0
- package/dist/core/connection/DatabaseConnection.js.map +1 -0
- package/dist/core/connection/DriverAdapter.d.ts +23 -0
- package/dist/core/connection/DriverAdapter.d.ts.map +1 -0
- package/dist/core/connection/DriverAdapter.js +145 -0
- package/dist/core/connection/DriverAdapter.js.map +1 -0
- package/dist/core/connection/resolveConnectionName.d.ts +17 -0
- package/dist/core/connection/resolveConnectionName.d.ts.map +1 -0
- package/dist/core/connection/resolveConnectionName.js +47 -0
- package/dist/core/connection/resolveConnectionName.js.map +1 -0
- package/dist/core/model/BaseModel.d.ts +247 -0
- package/dist/core/model/BaseModel.d.ts.map +1 -0
- package/dist/core/model/BaseModel.js +165 -0
- package/dist/core/model/BaseModel.js.map +1 -0
- package/dist/core/model/BaseModelSafeFinderStatics.d.ts +33 -0
- package/dist/core/model/BaseModelSafeFinderStatics.d.ts.map +1 -0
- package/dist/core/model/BaseModelSafeFinderStatics.js +87 -0
- package/dist/core/model/BaseModelSafeFinderStatics.js.map +1 -0
- package/dist/core/model/CoreModel.d.ts +134 -0
- package/dist/core/model/CoreModel.d.ts.map +1 -0
- package/dist/core/model/CoreModel.js +541 -0
- package/dist/core/model/CoreModel.js.map +1 -0
- package/dist/core/model/CoreModelPersistenceState.d.ts +36 -0
- package/dist/core/model/CoreModelPersistenceState.d.ts.map +1 -0
- package/dist/core/model/CoreModelPersistenceState.js +141 -0
- package/dist/core/model/CoreModelPersistenceState.js.map +1 -0
- package/dist/core/model/CoreModelSafeFinderSupport.d.ts +5 -0
- package/dist/core/model/CoreModelSafeFinderSupport.d.ts.map +1 -0
- package/dist/core/model/CoreModelSafeFinderSupport.js +15 -0
- package/dist/core/model/CoreModelSafeFinderSupport.js.map +1 -0
- package/dist/core/model/CoreModelValidationEvents.d.ts +24 -0
- package/dist/core/model/CoreModelValidationEvents.d.ts.map +1 -0
- package/dist/core/model/CoreModelValidationEvents.js +45 -0
- package/dist/core/model/CoreModelValidationEvents.js.map +1 -0
- package/dist/core/model/SafeFinder.d.ts +46 -0
- package/dist/core/model/SafeFinder.d.ts.map +1 -0
- package/dist/core/model/SafeFinder.js +223 -0
- package/dist/core/model/SafeFinder.js.map +1 -0
- package/dist/core/orm/Relation.d.ts +47 -0
- package/dist/core/orm/Relation.d.ts.map +1 -0
- package/dist/core/orm/Relation.js +62 -0
- package/dist/core/orm/Relation.js.map +1 -0
- package/dist/core/orm/mixins/CastsMixin.d.ts +18 -0
- package/dist/core/orm/mixins/CastsMixin.d.ts.map +1 -0
- package/dist/core/orm/mixins/CastsMixin.js +125 -0
- package/dist/core/orm/mixins/CastsMixin.js.map +1 -0
- package/dist/core/orm/mixins/EagerLoadingMixin.d.ts +19 -0
- package/dist/core/orm/mixins/EagerLoadingMixin.d.ts.map +1 -0
- package/dist/core/orm/mixins/EagerLoadingMixin.js +137 -0
- package/dist/core/orm/mixins/EagerLoadingMixin.js.map +1 -0
- package/dist/core/orm/mixins/HooksMixin.d.ts +16 -0
- package/dist/core/orm/mixins/HooksMixin.d.ts.map +1 -0
- package/dist/core/orm/mixins/HooksMixin.js +95 -0
- package/dist/core/orm/mixins/HooksMixin.js.map +1 -0
- package/dist/core/orm/mixins/MorphRegistry.d.ts +47 -0
- package/dist/core/orm/mixins/MorphRegistry.d.ts.map +1 -0
- package/dist/core/orm/mixins/MorphRegistry.js +67 -0
- package/dist/core/orm/mixins/MorphRegistry.js.map +1 -0
- package/dist/core/orm/mixins/MorphableMixin.d.ts +29 -0
- package/dist/core/orm/mixins/MorphableMixin.d.ts.map +1 -0
- package/dist/core/orm/mixins/MorphableMixin.js +93 -0
- package/dist/core/orm/mixins/MorphableMixin.js.map +1 -0
- package/dist/core/orm/mixins/PivotHelperMixin.d.ts +26 -0
- package/dist/core/orm/mixins/PivotHelperMixin.d.ts.map +1 -0
- package/dist/core/orm/mixins/PivotHelperMixin.js +102 -0
- package/dist/core/orm/mixins/PivotHelperMixin.js.map +1 -0
- package/dist/core/orm/mixins/QueryCacheMixin.d.ts +23 -0
- package/dist/core/orm/mixins/QueryCacheMixin.d.ts.map +1 -0
- package/dist/core/orm/mixins/QueryCacheMixin.js +172 -0
- package/dist/core/orm/mixins/QueryCacheMixin.js.map +1 -0
- package/dist/core/orm/mixins/ScopeMixin.d.ts +20 -0
- package/dist/core/orm/mixins/ScopeMixin.d.ts.map +1 -0
- package/dist/core/orm/mixins/ScopeMixin.js +72 -0
- package/dist/core/orm/mixins/ScopeMixin.js.map +1 -0
- package/dist/core/orm/mixins/SerializeMixin.d.ts +44 -0
- package/dist/core/orm/mixins/SerializeMixin.d.ts.map +1 -0
- package/dist/core/orm/mixins/SerializeMixin.js +80 -0
- package/dist/core/orm/mixins/SerializeMixin.js.map +1 -0
- package/dist/core/orm/mixins/SoftDeletesMixin.d.ts +22 -0
- package/dist/core/orm/mixins/SoftDeletesMixin.d.ts.map +1 -0
- package/dist/core/orm/mixins/SoftDeletesMixin.js +146 -0
- package/dist/core/orm/mixins/SoftDeletesMixin.js.map +1 -0
- package/dist/core/orm/mixins/utils/BaseMethodResolver.d.ts +8 -0
- package/dist/core/orm/mixins/utils/BaseMethodResolver.d.ts.map +1 -0
- package/dist/core/orm/mixins/utils/BaseMethodResolver.js +26 -0
- package/dist/core/orm/mixins/utils/BaseMethodResolver.js.map +1 -0
- package/dist/core/orm/mixins/utils/HookStore.d.ts +26 -0
- package/dist/core/orm/mixins/utils/HookStore.d.ts.map +1 -0
- package/dist/core/orm/mixins/utils/HookStore.js +78 -0
- package/dist/core/orm/mixins/utils/HookStore.js.map +1 -0
- package/dist/core/orm/mixins/utils/ModelRegistry.d.ts +33 -0
- package/dist/core/orm/mixins/utils/ModelRegistry.d.ts.map +1 -0
- package/dist/core/orm/mixins/utils/ModelRegistry.js +87 -0
- package/dist/core/orm/mixins/utils/ModelRegistry.js.map +1 -0
- package/dist/core/orm/mixins/utils/modelRegistration.d.ts +9 -0
- package/dist/core/orm/mixins/utils/modelRegistration.d.ts.map +1 -0
- package/dist/core/orm/mixins/utils/modelRegistration.js +26 -0
- package/dist/core/orm/mixins/utils/modelRegistration.js.map +1 -0
- package/dist/core/orm/relations/BelongsTo.d.ts +6 -0
- package/dist/core/orm/relations/BelongsTo.d.ts.map +1 -0
- package/dist/core/orm/relations/BelongsTo.js +70 -0
- package/dist/core/orm/relations/BelongsTo.js.map +1 -0
- package/dist/core/orm/relations/BelongsToMany.d.ts +14 -0
- package/dist/core/orm/relations/BelongsToMany.d.ts.map +1 -0
- package/dist/core/orm/relations/BelongsToMany.js +245 -0
- package/dist/core/orm/relations/BelongsToMany.js.map +1 -0
- package/dist/core/orm/relations/HasMany.d.ts +6 -0
- package/dist/core/orm/relations/HasMany.d.ts.map +1 -0
- package/dist/core/orm/relations/HasMany.js +75 -0
- package/dist/core/orm/relations/HasMany.js.map +1 -0
- package/dist/core/orm/relations/HasOne.d.ts +6 -0
- package/dist/core/orm/relations/HasOne.d.ts.map +1 -0
- package/dist/core/orm/relations/HasOne.js +71 -0
- package/dist/core/orm/relations/HasOne.js.map +1 -0
- package/dist/core/orm/relations/MorphMany.d.ts +9 -0
- package/dist/core/orm/relations/MorphMany.d.ts.map +1 -0
- package/dist/core/orm/relations/MorphMany.js +107 -0
- package/dist/core/orm/relations/MorphMany.js.map +1 -0
- package/dist/core/orm/relations/MorphOne.d.ts +9 -0
- package/dist/core/orm/relations/MorphOne.d.ts.map +1 -0
- package/dist/core/orm/relations/MorphOne.js +101 -0
- package/dist/core/orm/relations/MorphOne.js.map +1 -0
- package/dist/core/orm/relations/MorphTo.d.ts +9 -0
- package/dist/core/orm/relations/MorphTo.d.ts.map +1 -0
- package/dist/core/orm/relations/MorphTo.js +85 -0
- package/dist/core/orm/relations/MorphTo.js.map +1 -0
- package/dist/core/schema/SQLDialect.d.ts +22 -0
- package/dist/core/schema/SQLDialect.d.ts.map +1 -0
- package/dist/core/schema/SQLDialect.js +38 -0
- package/dist/core/schema/SQLDialect.js.map +1 -0
- package/dist/core/schema/SchemaBlueprint.d.ts +61 -0
- package/dist/core/schema/SchemaBlueprint.d.ts.map +1 -0
- package/dist/core/schema/SchemaBlueprint.js +62 -0
- package/dist/core/schema/SchemaBlueprint.js.map +1 -0
- package/dist/core/schema/SchemaBuilder.d.ts +29 -0
- package/dist/core/schema/SchemaBuilder.d.ts.map +1 -0
- package/dist/core/schema/SchemaBuilder.js +661 -0
- package/dist/core/schema/SchemaBuilder.js.map +1 -0
- package/dist/core/schema/SchemaValidator.d.ts +23 -0
- package/dist/core/schema/SchemaValidator.d.ts.map +1 -0
- package/dist/core/schema/SchemaValidator.js +75 -0
- package/dist/core/schema/SchemaValidator.js.map +1 -0
- package/dist/core/security/AbstractSecurity.d.ts +24 -0
- package/dist/core/security/AbstractSecurity.d.ts.map +1 -0
- package/dist/core/security/AbstractSecurity.js +58 -0
- package/dist/core/security/AbstractSecurity.js.map +1 -0
- package/dist/core/security/EnvKeySecurity.d.ts +11 -0
- package/dist/core/security/EnvKeySecurity.d.ts.map +1 -0
- package/dist/core/security/EnvKeySecurity.js +46 -0
- package/dist/core/security/EnvKeySecurity.js.map +1 -0
- package/dist/core/security/NoSecurity.d.ts +10 -0
- package/dist/core/security/NoSecurity.d.ts.map +1 -0
- package/dist/core/security/NoSecurity.js +18 -0
- package/dist/core/security/NoSecurity.js.map +1 -0
- package/dist/core/security/SecretRedactor.d.ts +4 -0
- package/dist/core/security/SecretRedactor.d.ts.map +1 -0
- package/dist/core/security/SecretRedactor.js +60 -0
- package/dist/core/security/SecretRedactor.js.map +1 -0
- package/dist/core/security/SecurityContract.d.ts +13 -0
- package/dist/core/security/SecurityContract.d.ts.map +1 -0
- package/dist/core/security/SecurityContract.js +3 -0
- package/dist/core/security/SecurityContract.js.map +1 -0
- package/dist/core/security/SecurityFactory.d.ts +9 -0
- package/dist/core/security/SecurityFactory.d.ts.map +1 -0
- package/dist/core/security/SecurityFactory.js +29 -0
- package/dist/core/security/SecurityFactory.js.map +1 -0
- package/dist/core/security/index.d.ts +6 -0
- package/dist/core/security/index.d.ts.map +1 -0
- package/dist/core/security/index.js +22 -0
- package/dist/core/security/index.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -0
- package/package.json +104 -0
- package/src/cli/templates/controller.tpl +80 -0
- package/src/cli/templates/factory.tpl +14 -0
- package/src/cli/templates/migration.tpl +36 -0
- package/src/cli/templates/model-registry.tpl +16 -0
- package/src/cli/templates/model.tpl +95 -0
- package/src/cli/templates/pivot-factory.tpl +85 -0
- package/src/cli/templates/seed.tpl +20 -0
- package/src/cli/templates/service.tpl +40 -0
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MorphMany = void 0;
|
|
4
|
+
const Relation_1 = require("../Relation");
|
|
5
|
+
class MorphMany extends Relation_1.Relation {
|
|
6
|
+
constructor(relatedModel, morphType, morphId) {
|
|
7
|
+
super(relatedModel, morphId, "id");
|
|
8
|
+
this.morphType = morphType;
|
|
9
|
+
this.morphId = morphId;
|
|
10
|
+
}
|
|
11
|
+
async getResults(parent) {
|
|
12
|
+
const RelatedModel = this.relatedModel;
|
|
13
|
+
if (!RelatedModel)
|
|
14
|
+
throw new Error("Related model is not defined.");
|
|
15
|
+
const relatedInstance = new RelatedModel();
|
|
16
|
+
const db = await relatedInstance.getDB();
|
|
17
|
+
const morphTypeValue = typeof parent.getMorphClass === "function"
|
|
18
|
+
? parent.getMorphClass()
|
|
19
|
+
: parent.constructor.name;
|
|
20
|
+
const parentValues = this.getMongoComparableValues(parent, this.localKey);
|
|
21
|
+
let rows;
|
|
22
|
+
if (this.isMongoDatabase(db)) {
|
|
23
|
+
rows = await db
|
|
24
|
+
.collection(relatedInstance.tableName)
|
|
25
|
+
.find({
|
|
26
|
+
...this.buildMongoEqualityFilter(this.morphId, parentValues[0]),
|
|
27
|
+
[this.morphType]: morphTypeValue,
|
|
28
|
+
})
|
|
29
|
+
.toArray();
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
const adapter = db;
|
|
33
|
+
const table = adapter.wrapId(relatedInstance.tableName);
|
|
34
|
+
const morphId = adapter.wrapId(this.morphId);
|
|
35
|
+
const morphTypeColumn = adapter.wrapId(this.morphType);
|
|
36
|
+
const sql = `
|
|
37
|
+
SELECT * FROM ${table}
|
|
38
|
+
WHERE ${morphId} = ${adapter.placeholder(1)} AND ${morphTypeColumn} = ${adapter.placeholder(2)}
|
|
39
|
+
`;
|
|
40
|
+
rows = await adapter.query(sql, [
|
|
41
|
+
parent[this.localKey],
|
|
42
|
+
morphTypeValue,
|
|
43
|
+
]);
|
|
44
|
+
}
|
|
45
|
+
return RelatedModel.hydrateMany(rows);
|
|
46
|
+
}
|
|
47
|
+
async match(parents) {
|
|
48
|
+
if (!parents.length)
|
|
49
|
+
return;
|
|
50
|
+
const parentIds = parents.flatMap((p) => this.getMongoComparableValues(p, this.localKey));
|
|
51
|
+
const RelatedModel = this.relatedModel;
|
|
52
|
+
if (!RelatedModel)
|
|
53
|
+
throw new Error("Related model is not defined.");
|
|
54
|
+
const relatedInstance = new RelatedModel();
|
|
55
|
+
const db = await relatedInstance.getDB();
|
|
56
|
+
const morphTypeValue = typeof parents[0]?.getMorphClass === "function"
|
|
57
|
+
? parents[0].getMorphClass()
|
|
58
|
+
: parents[0].constructor.name;
|
|
59
|
+
let rows;
|
|
60
|
+
if (this.isMongoDatabase(db)) {
|
|
61
|
+
rows = await db
|
|
62
|
+
.collection(relatedInstance.tableName)
|
|
63
|
+
.find({
|
|
64
|
+
...this.buildMongoInFilter(this.morphId, parentIds),
|
|
65
|
+
[this.morphType]: morphTypeValue,
|
|
66
|
+
})
|
|
67
|
+
.toArray();
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
const adapter = db;
|
|
71
|
+
const table = adapter.wrapId(relatedInstance.tableName);
|
|
72
|
+
const morphId = adapter.wrapId(this.morphId);
|
|
73
|
+
const morphTypeColumn = adapter.wrapId(this.morphType);
|
|
74
|
+
const inResult = adapter.inClause(morphId, parentIds, 1);
|
|
75
|
+
const typePlaceholder = adapter.placeholder(inResult.nextIndex);
|
|
76
|
+
const sql = `
|
|
77
|
+
SELECT * FROM ${table}
|
|
78
|
+
WHERE ${inResult.sql} AND ${morphTypeColumn} = ${typePlaceholder}
|
|
79
|
+
`;
|
|
80
|
+
rows = await adapter.query(sql, [
|
|
81
|
+
...inResult.params,
|
|
82
|
+
morphTypeValue,
|
|
83
|
+
]);
|
|
84
|
+
}
|
|
85
|
+
const grouped = {};
|
|
86
|
+
for (const row of rows) {
|
|
87
|
+
const instance = RelatedModel.hydrateRow(row);
|
|
88
|
+
if (!instance)
|
|
89
|
+
continue;
|
|
90
|
+
const record = instance;
|
|
91
|
+
for (const value of this.getMongoComparableValues(record, this.morphId)) {
|
|
92
|
+
const key = String(value);
|
|
93
|
+
if (!grouped[key])
|
|
94
|
+
grouped[key] = [];
|
|
95
|
+
grouped[key].push(record);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const relName = this.name ?? "relation";
|
|
99
|
+
for (const parent of parents) {
|
|
100
|
+
const keys = this.getMongoComparableValues(parent, this.localKey).map((value) => String(value));
|
|
101
|
+
const matched = keys.flatMap((key) => grouped[key] ?? []);
|
|
102
|
+
parent[relName] = matched;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
exports.MorphMany = MorphMany;
|
|
107
|
+
//# sourceMappingURL=MorphMany.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MorphMany.js","sourceRoot":"","sources":["../../../../src/core/orm/relations/MorphMany.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Relation, type CoreModelClass } from "../Relation";
|
|
2
|
+
export declare class MorphOne extends Relation {
|
|
3
|
+
protected morphType: string;
|
|
4
|
+
protected morphId: string;
|
|
5
|
+
constructor(relatedModel: CoreModelClass, morphType: string, morphId: string);
|
|
6
|
+
getResults(parent: Record<string, unknown>): Promise<unknown>;
|
|
7
|
+
match(parents: Record<string, unknown>[]): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=MorphOne.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MorphOne.d.ts","sourceRoot":"","sources":["../../../../src/core/orm/relations/MorphOne.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAG5D,qBAAa,QAAS,SAAQ,QAAQ;IACpC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEd,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAMtE,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAqC7D,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAuD/D"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MorphOne = void 0;
|
|
4
|
+
const Relation_1 = require("../Relation");
|
|
5
|
+
class MorphOne extends Relation_1.Relation {
|
|
6
|
+
constructor(relatedModel, morphType, morphId) {
|
|
7
|
+
super(relatedModel, morphId, "id");
|
|
8
|
+
this.morphType = morphType;
|
|
9
|
+
this.morphId = morphId;
|
|
10
|
+
}
|
|
11
|
+
async getResults(parent) {
|
|
12
|
+
const RelatedModel = this.relatedModel;
|
|
13
|
+
if (!RelatedModel)
|
|
14
|
+
throw new Error("Related model is not defined.");
|
|
15
|
+
const relatedInstance = new RelatedModel();
|
|
16
|
+
const db = await relatedInstance.getDB();
|
|
17
|
+
const morphTypeValue = typeof parent.getMorphClass === "function"
|
|
18
|
+
? parent.getMorphClass()
|
|
19
|
+
: parent.constructor.name;
|
|
20
|
+
const parentValues = this.getMongoComparableValues(parent, this.localKey);
|
|
21
|
+
let row;
|
|
22
|
+
if (this.isMongoDatabase(db)) {
|
|
23
|
+
row = await db.collection(relatedInstance.tableName).findOne({
|
|
24
|
+
...this.buildMongoEqualityFilter(this.morphId, parentValues[0]),
|
|
25
|
+
[this.morphType]: morphTypeValue,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
const adapter = db;
|
|
30
|
+
const table = adapter.wrapId(relatedInstance.tableName);
|
|
31
|
+
const morphId = adapter.wrapId(this.morphId);
|
|
32
|
+
const morphTypeColumn = adapter.wrapId(this.morphType);
|
|
33
|
+
const sql = `
|
|
34
|
+
SELECT * FROM ${table}
|
|
35
|
+
WHERE ${morphId} = ${adapter.placeholder(1)} AND ${morphTypeColumn} = ${adapter.placeholder(2)} LIMIT 1
|
|
36
|
+
`;
|
|
37
|
+
row = await adapter.queryOne(sql, [
|
|
38
|
+
parent[this.localKey],
|
|
39
|
+
morphTypeValue,
|
|
40
|
+
]);
|
|
41
|
+
}
|
|
42
|
+
return RelatedModel.hydrateRow(row);
|
|
43
|
+
}
|
|
44
|
+
async match(parents) {
|
|
45
|
+
if (!parents.length)
|
|
46
|
+
return;
|
|
47
|
+
const parentIds = parents.flatMap((p) => this.getMongoComparableValues(p, this.localKey));
|
|
48
|
+
const RelatedModel = this.relatedModel;
|
|
49
|
+
if (!RelatedModel)
|
|
50
|
+
throw new Error("Related model is not defined.");
|
|
51
|
+
const relatedInstance = new RelatedModel();
|
|
52
|
+
const db = await relatedInstance.getDB();
|
|
53
|
+
const morphTypeValue = typeof parents[0]?.getMorphClass === "function"
|
|
54
|
+
? parents[0].getMorphClass()
|
|
55
|
+
: parents[0].constructor.name;
|
|
56
|
+
let rows;
|
|
57
|
+
if (this.isMongoDatabase(db)) {
|
|
58
|
+
rows = await db
|
|
59
|
+
.collection(relatedInstance.tableName)
|
|
60
|
+
.find({
|
|
61
|
+
...this.buildMongoInFilter(this.morphId, parentIds),
|
|
62
|
+
[this.morphType]: morphTypeValue,
|
|
63
|
+
})
|
|
64
|
+
.toArray();
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
const adapter = db;
|
|
68
|
+
const table = adapter.wrapId(relatedInstance.tableName);
|
|
69
|
+
const morphId = adapter.wrapId(this.morphId);
|
|
70
|
+
const morphTypeColumn = adapter.wrapId(this.morphType);
|
|
71
|
+
const inResult = adapter.inClause(morphId, parentIds, 1);
|
|
72
|
+
const typePlaceholder = adapter.placeholder(inResult.nextIndex);
|
|
73
|
+
const sql = `
|
|
74
|
+
SELECT * FROM ${table}
|
|
75
|
+
WHERE ${inResult.sql} AND ${morphTypeColumn} = ${typePlaceholder}
|
|
76
|
+
`;
|
|
77
|
+
rows = await adapter.query(sql, [
|
|
78
|
+
...inResult.params,
|
|
79
|
+
morphTypeValue,
|
|
80
|
+
]);
|
|
81
|
+
}
|
|
82
|
+
const grouped = {};
|
|
83
|
+
for (const row of rows) {
|
|
84
|
+
const instance = RelatedModel.hydrateRow(row);
|
|
85
|
+
if (!instance)
|
|
86
|
+
continue;
|
|
87
|
+
const record = instance;
|
|
88
|
+
for (const value of this.getMongoComparableValues(record, this.morphId)) {
|
|
89
|
+
grouped[String(value)] = record;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
const relName = this.name ?? "relation";
|
|
93
|
+
for (const parent of parents) {
|
|
94
|
+
const keys = this.getMongoComparableValues(parent, this.localKey).map((value) => String(value));
|
|
95
|
+
const matched = keys.find((key) => grouped[key]);
|
|
96
|
+
parent[relName] = matched ? grouped[matched] : null;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
exports.MorphOne = MorphOne;
|
|
101
|
+
//# sourceMappingURL=MorphOne.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MorphOne.js","sourceRoot":"","sources":["../../../../src/core/orm/relations/MorphOne.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Relation } from "../Relation";
|
|
2
|
+
export declare class MorphTo extends Relation {
|
|
3
|
+
protected morphType: string;
|
|
4
|
+
protected morphId: string;
|
|
5
|
+
constructor(morphType: string, morphId: string);
|
|
6
|
+
getResults(parent: Record<string, unknown>): Promise<unknown>;
|
|
7
|
+
match(parents: Record<string, unknown>[]): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=MorphTo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MorphTo.d.ts","sourceRoot":"","sources":["../../../../src/core/orm/relations/MorphTo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAA2C,MAAM,aAAa,CAAC;AAIhF,qBAAa,OAAQ,SAAQ,QAAQ;IACnC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEd,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAOxC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAuB7D,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAiD/D"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MorphTo = void 0;
|
|
4
|
+
const Relation_1 = require("../Relation");
|
|
5
|
+
const MorphRegistry_1 = require("../mixins/MorphRegistry");
|
|
6
|
+
class MorphTo extends Relation_1.Relation {
|
|
7
|
+
constructor(morphType, morphId) {
|
|
8
|
+
// The related model is determined dynamically at runtime
|
|
9
|
+
super(null, morphId, "id");
|
|
10
|
+
this.morphType = morphType;
|
|
11
|
+
this.morphId = morphId;
|
|
12
|
+
}
|
|
13
|
+
async getResults(parent) {
|
|
14
|
+
const modelClassName = parent[this.morphType];
|
|
15
|
+
if (!modelClassName)
|
|
16
|
+
return null;
|
|
17
|
+
const Model = MorphRegistry_1.MorphRegistry.resolve(modelClassName);
|
|
18
|
+
const relatedInstance = new Model();
|
|
19
|
+
const db = await relatedInstance.getDB();
|
|
20
|
+
let row;
|
|
21
|
+
if (this.isMongoDatabase(db)) {
|
|
22
|
+
row = await db
|
|
23
|
+
.collection(relatedInstance.tableName)
|
|
24
|
+
.findOne(this.buildMongoEqualityFilter(this.localKey, parent[this.morphId]));
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
const adapter = db;
|
|
28
|
+
const table = adapter.wrapId(relatedInstance.tableName);
|
|
29
|
+
const localKey = adapter.wrapId(this.localKey);
|
|
30
|
+
const sql = `SELECT * FROM ${table} WHERE ${localKey} = ${adapter.placeholder(1)} LIMIT 1`;
|
|
31
|
+
row = await adapter.queryOne(sql, [parent[this.morphId]]);
|
|
32
|
+
}
|
|
33
|
+
return Model.hydrateRow(row);
|
|
34
|
+
}
|
|
35
|
+
async match(parents) {
|
|
36
|
+
if (!parents.length)
|
|
37
|
+
return;
|
|
38
|
+
// Group by morph type (so we can fetch each model type once)
|
|
39
|
+
const groups = {};
|
|
40
|
+
for (const parent of parents) {
|
|
41
|
+
const type = parent[this.morphType];
|
|
42
|
+
if (!groups[type])
|
|
43
|
+
groups[type] = [];
|
|
44
|
+
groups[type].push(parent);
|
|
45
|
+
}
|
|
46
|
+
for (const [type, models] of Object.entries(groups)) {
|
|
47
|
+
const Model = MorphRegistry_1.MorphRegistry.resolve(type);
|
|
48
|
+
const relatedInstance = new Model();
|
|
49
|
+
const db = await relatedInstance.getDB();
|
|
50
|
+
const ids = models.map((m) => m[this.morphId]);
|
|
51
|
+
let rows;
|
|
52
|
+
if (this.isMongoDatabase(db)) {
|
|
53
|
+
rows = await db
|
|
54
|
+
.collection(relatedInstance.tableName)
|
|
55
|
+
.find(this.buildMongoInFilter(this.localKey, ids))
|
|
56
|
+
.toArray();
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
const adapter = db;
|
|
60
|
+
const table = adapter.wrapId(relatedInstance.tableName);
|
|
61
|
+
const localKey = adapter.wrapId(this.localKey);
|
|
62
|
+
const inResult = adapter.inClause(localKey, ids, 1);
|
|
63
|
+
const sql = `SELECT * FROM ${table} WHERE ${inResult.sql}`;
|
|
64
|
+
rows = await adapter.query(sql, inResult.params);
|
|
65
|
+
}
|
|
66
|
+
const relatedMap = {};
|
|
67
|
+
for (const row of rows) {
|
|
68
|
+
const instance = Model.hydrateRow(row);
|
|
69
|
+
if (!instance)
|
|
70
|
+
continue;
|
|
71
|
+
const record = instance;
|
|
72
|
+
for (const value of this.getMongoComparableValues(record, this.localKey)) {
|
|
73
|
+
relatedMap[String(value)] = record;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
const relName = this.name ?? "relation";
|
|
77
|
+
for (const parent of models) {
|
|
78
|
+
parent[relName] =
|
|
79
|
+
relatedMap[parent[this.morphId]] || null;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
exports.MorphTo = MorphTo;
|
|
85
|
+
//# sourceMappingURL=MorphTo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MorphTo.js","sourceRoot":"","sources":["../../../../src/core/orm/relations/MorphTo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 🧠SQLDialect
|
|
3
|
+
* Handles identifier quoting for multiple SQL dialects.
|
|
4
|
+
*/
|
|
5
|
+
export type Dialect = "mysql" | "pg" | "sqlite";
|
|
6
|
+
export declare class SQLDialect {
|
|
7
|
+
private readonly dialect;
|
|
8
|
+
constructor(dialect?: Dialect);
|
|
9
|
+
/**
|
|
10
|
+
* Wraps an identifier (table or column) safely for the current dialect.
|
|
11
|
+
*/
|
|
12
|
+
wrap(identifier: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* Quotes a full CREATE TABLE statement appropriately.
|
|
15
|
+
*/
|
|
16
|
+
formatCreateSQL(table: string, columnsSQL: string[]): string;
|
|
17
|
+
/**
|
|
18
|
+
* Quotes a DROP TABLE statement appropriately.
|
|
19
|
+
*/
|
|
20
|
+
formatDropSQL(table: string): string;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=SQLDialect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SQLDialect.d.ts","sourceRoot":"","sources":["../../../src/core/schema/SQLDialect.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,IAAI,GAAG,QAAQ,CAAC;AAEhD,qBAAa,UAAU;IACT,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,GAAE,OAAiB;IAEvD;;OAEG;IACH,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAWhC;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM;IAK5D;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;CAIrC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// src/core/schema/SQLDialect.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.SQLDialect = void 0;
|
|
5
|
+
class SQLDialect {
|
|
6
|
+
constructor(dialect = "mysql") {
|
|
7
|
+
this.dialect = dialect;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Wraps an identifier (table or column) safely for the current dialect.
|
|
11
|
+
*/
|
|
12
|
+
wrap(identifier) {
|
|
13
|
+
switch (this.dialect) {
|
|
14
|
+
case "pg":
|
|
15
|
+
return `"${identifier.replace(/"/g, '""')}"`; // double quotes escaped
|
|
16
|
+
case "sqlite":
|
|
17
|
+
return `"${identifier.replace(/"/g, '""')}"`;
|
|
18
|
+
default:
|
|
19
|
+
return `\`${identifier.replace(/`/g, "``")}\``; // MySQL default
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Quotes a full CREATE TABLE statement appropriately.
|
|
24
|
+
*/
|
|
25
|
+
formatCreateSQL(table, columnsSQL) {
|
|
26
|
+
const t = this.wrap(table);
|
|
27
|
+
return `CREATE TABLE IF NOT EXISTS ${t} (\n ${columnsSQL.join(",\n ")}\n);`;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Quotes a DROP TABLE statement appropriately.
|
|
31
|
+
*/
|
|
32
|
+
formatDropSQL(table) {
|
|
33
|
+
const t = this.wrap(table);
|
|
34
|
+
return `DROP TABLE IF EXISTS ${t};`;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
exports.SQLDialect = SQLDialect;
|
|
38
|
+
//# sourceMappingURL=SQLDialect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SQLDialect.js","sourceRoot":"","sources":["../../../src/core/schema/SQLDialect.ts"],"names":[],"mappings":";AAAA,gCAAgC;;;AAQhC,MAAa,UAAU;IACrB,YAA6B,UAAmB,OAAO;QAA1B,YAAO,GAAP,OAAO,CAAmB;IAAG,CAAC;IAE3D;;OAEG;IACH,IAAI,CAAC,UAAkB;QACrB,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;YACrB,KAAK,IAAI;gBACP,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,wBAAwB;YACxE,KAAK,QAAQ;gBACX,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;YAC/C;gBACE,OAAO,KAAK,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,gBAAgB;QACpE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,KAAa,EAAE,UAAoB;QACjD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,OAAO,8BAA8B,CAAC,SAAS,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAChF,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,KAAa;QACzB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,OAAO,wBAAwB,CAAC,GAAG,CAAC;IACtC,CAAC;CACF;AAhCD,gCAgCC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 🧩 SchemaBlueprint
|
|
3
|
+
* Defines model schema, validation, relations, and mixins.
|
|
4
|
+
* Supports advanced relation metadata for automatic migration generation.
|
|
5
|
+
*/
|
|
6
|
+
export type ColumnType = "increments" | "bigint" | "uuid" | "int" | "string" | "text" | "boolean" | "decimal" | "float" | "json" | "timestamp" | "timestamps" | "softDeletes";
|
|
7
|
+
export interface ColumnOptions {
|
|
8
|
+
length?: number;
|
|
9
|
+
notNull?: boolean;
|
|
10
|
+
unique?: boolean;
|
|
11
|
+
unsigned?: boolean;
|
|
12
|
+
default?: string | number | boolean | null;
|
|
13
|
+
primary?: boolean;
|
|
14
|
+
index?: boolean;
|
|
15
|
+
comment?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface ValidationRule {
|
|
18
|
+
required?: boolean;
|
|
19
|
+
min?: number;
|
|
20
|
+
max?: number;
|
|
21
|
+
pattern?: RegExp;
|
|
22
|
+
email?: boolean;
|
|
23
|
+
numeric?: boolean;
|
|
24
|
+
in?: Array<string | number>;
|
|
25
|
+
}
|
|
26
|
+
export type RelationType = "hasOne" | "hasMany" | "belongsTo" | "belongsToMany" | "morphOne" | "morphMany" | "morphTo";
|
|
27
|
+
export interface RelationOptions {
|
|
28
|
+
localKey?: string;
|
|
29
|
+
foreignKey?: string;
|
|
30
|
+
pivotTable?: string;
|
|
31
|
+
pivotLocalKey?: string;
|
|
32
|
+
pivotForeignKey?: string;
|
|
33
|
+
morphName?: string;
|
|
34
|
+
typeColumn?: string;
|
|
35
|
+
idColumn?: string;
|
|
36
|
+
cascade?: boolean;
|
|
37
|
+
}
|
|
38
|
+
export type MixinName = "SoftDeletes" | "Casts" | "EagerLoading" | "Hooks" | "Scope" | "QueryCache" | "Serialize" | "PivotHelper";
|
|
39
|
+
export interface MixinDefinition {
|
|
40
|
+
kind: "mixin";
|
|
41
|
+
name: MixinName;
|
|
42
|
+
}
|
|
43
|
+
export interface ColumnDefinition {
|
|
44
|
+
kind: "column";
|
|
45
|
+
type: ColumnType;
|
|
46
|
+
options: ColumnOptions;
|
|
47
|
+
validate?: ValidationRule;
|
|
48
|
+
}
|
|
49
|
+
export interface RelationDefinition {
|
|
50
|
+
kind: "relation";
|
|
51
|
+
relation: RelationType;
|
|
52
|
+
model: string;
|
|
53
|
+
options: RelationOptions;
|
|
54
|
+
}
|
|
55
|
+
export type SchemaField = ColumnDefinition | RelationDefinition | MixinDefinition;
|
|
56
|
+
export declare function column(type: ColumnType, length?: number, options?: Partial<ColumnOptions>): ColumnDefinition;
|
|
57
|
+
export declare function validate(columnDef: ColumnDefinition, rules: ValidationRule): ColumnDefinition;
|
|
58
|
+
export declare function relation(rel: RelationType, model: string, options?: RelationOptions): RelationDefinition;
|
|
59
|
+
export declare function mixin(name: MixinName): MixinDefinition;
|
|
60
|
+
export declare function validateSchema(schema: Record<string, SchemaField>): string[];
|
|
61
|
+
//# sourceMappingURL=SchemaBlueprint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SchemaBlueprint.d.ts","sourceRoot":"","sources":["../../../src/core/schema/SchemaBlueprint.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 🧩 SchemaBlueprint
|
|
4
|
+
* Defines model schema, validation, relations, and mixins.
|
|
5
|
+
* Supports advanced relation metadata for automatic migration generation.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.column = column;
|
|
9
|
+
exports.validate = validate;
|
|
10
|
+
exports.relation = relation;
|
|
11
|
+
exports.mixin = mixin;
|
|
12
|
+
exports.validateSchema = validateSchema;
|
|
13
|
+
/* --------------------------------- Builders --------------------------------- */
|
|
14
|
+
function column(type, length, options) {
|
|
15
|
+
const finalOptions = {
|
|
16
|
+
...(length ? { length } : {}),
|
|
17
|
+
...(options || {}),
|
|
18
|
+
};
|
|
19
|
+
return { kind: "column", type, options: finalOptions };
|
|
20
|
+
}
|
|
21
|
+
function validate(columnDef, rules) {
|
|
22
|
+
columnDef.validate = rules;
|
|
23
|
+
return columnDef;
|
|
24
|
+
}
|
|
25
|
+
function relation(rel, model, options = {}) {
|
|
26
|
+
return { kind: "relation", relation: rel, model, options };
|
|
27
|
+
}
|
|
28
|
+
function mixin(name) {
|
|
29
|
+
return { kind: "mixin", name };
|
|
30
|
+
}
|
|
31
|
+
/* --------------------------------- Validators --------------------------------- */
|
|
32
|
+
function validateSchema(schema) {
|
|
33
|
+
const errors = [];
|
|
34
|
+
for (const [key, field] of Object.entries(schema)) {
|
|
35
|
+
if (field.kind === "column" && field.validate) {
|
|
36
|
+
const rules = field.validate;
|
|
37
|
+
if (rules.min && rules.max && rules.min > rules.max) {
|
|
38
|
+
errors.push(`Column '${key}' has invalid range: min > max.`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (field.kind === "relation") {
|
|
42
|
+
if (!field.model) {
|
|
43
|
+
errors.push(`Relation '${key}' must reference a model name.`);
|
|
44
|
+
}
|
|
45
|
+
if (field.relation === "belongsTo" && !field.options.foreignKey) {
|
|
46
|
+
errors.push(`Relation '${key}' (belongsTo) requires a foreignKey.`);
|
|
47
|
+
}
|
|
48
|
+
if (field.relation === "morphOne" ||
|
|
49
|
+
field.relation === "morphMany" ||
|
|
50
|
+
field.relation === "morphTo") {
|
|
51
|
+
if (!field.options.morphName) {
|
|
52
|
+
errors.push(`Morph relation '${key}' should define a morphName.`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (field.kind === "mixin" && !field.name) {
|
|
57
|
+
errors.push(`Mixin '${key}' is missing a valid name.`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return errors;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=SchemaBlueprint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SchemaBlueprint.js","sourceRoot":"","sources":["../../../src/core/schema/SchemaBlueprint.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AA0GH,wBAUC;AAED,4BAMC;AAED,4BAMC;AAED,sBAEC;AAGD,wCAuCC;AAzED,kFAAkF;AAClF,SAAgB,MAAM,CACpB,IAAgB,EAChB,MAAe,EACf,OAAgC;IAEhC,MAAM,YAAY,GAAkB;QAClC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7B,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;KACnB,CAAC;IACF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AACzD,CAAC;AAED,SAAgB,QAAQ,CACtB,SAA2B,EAC3B,KAAqB;IAErB,SAAS,CAAC,QAAQ,GAAG,KAAK,CAAC;IAC3B,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAgB,QAAQ,CACtB,GAAiB,EACjB,KAAa,EACb,UAA2B,EAAE;IAE7B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC7D,CAAC;AAED,SAAgB,KAAK,CAAC,IAAe;IACnC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACjC,CAAC;AAED,oFAAoF;AACpF,SAAgB,cAAc,CAC5B,MAAmC;IAEnC,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC;YAC7B,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;gBACpD,MAAM,CAAC,IAAI,CAAC,WAAW,GAAG,iCAAiC,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACjB,MAAM,CAAC,IAAI,CAAC,aAAa,GAAG,gCAAgC,CAAC,CAAC;YAChE,CAAC;YAED,IAAI,KAAK,CAAC,QAAQ,KAAK,WAAW,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;gBAChE,MAAM,CAAC,IAAI,CAAC,aAAa,GAAG,sCAAsC,CAAC,CAAC;YACtE,CAAC;YAED,IACE,KAAK,CAAC,QAAQ,KAAK,UAAU;gBAC7B,KAAK,CAAC,QAAQ,KAAK,WAAW;gBAC9B,KAAK,CAAC,QAAQ,KAAK,SAAS,EAC5B,CAAC;gBACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;oBAC7B,MAAM,CAAC,IAAI,CAAC,mBAAmB,GAAG,8BAA8B,CAAC,CAAC;gBACpE,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,4BAA4B,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { SchemaField } from "./SchemaBlueprint";
|
|
2
|
+
import { Dialect } from "./SQLDialect";
|
|
3
|
+
export interface SchemaBuildResult {
|
|
4
|
+
mainSQL: string;
|
|
5
|
+
extraTables: string[];
|
|
6
|
+
rollbackMainSQL: string;
|
|
7
|
+
rollbackExtraTables: string[];
|
|
8
|
+
}
|
|
9
|
+
export declare class SchemaBuilder {
|
|
10
|
+
static toCreateSQL(tableName: string, schema: Record<string, SchemaField>, explicitDialect?: Dialect | string, smartUpdate?: boolean, connectionNameOverride?: string, forceCreate?: boolean): Promise<SchemaBuildResult>;
|
|
11
|
+
static toDropSQL(tableName: string, schema: Record<string, SchemaField>, dialectName?: Dialect): string[];
|
|
12
|
+
private static columnSQL;
|
|
13
|
+
private static relationSQL;
|
|
14
|
+
private static formatDefaultLiteral;
|
|
15
|
+
private static mysqlColumnSQL;
|
|
16
|
+
private static pgTypeSQL;
|
|
17
|
+
private static pgColumnSQL;
|
|
18
|
+
private static sqliteColumnSQL;
|
|
19
|
+
private static referencedTableName;
|
|
20
|
+
private static foreignKeyConstraintName;
|
|
21
|
+
private static foreignKeyConstraintKey;
|
|
22
|
+
private static foreignKeyConstraintDefinition;
|
|
23
|
+
private static mysqlForeignKeys;
|
|
24
|
+
private static pgForeignKeys;
|
|
25
|
+
private static sqliteForeignKeys;
|
|
26
|
+
private static pivotTableExists;
|
|
27
|
+
private static mixinSQL;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=SchemaBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SchemaBuilder.d.ts","sourceRoot":"","sources":["../../../src/core/schema/SchemaBuilder.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,WAAW,EAKZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAc,OAAO,EAAE,MAAM,cAAc,CAAC;AAGnD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B;AAeD,qBAAa,aAAa;WACX,WAAW,CACtB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACnC,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,EAClC,WAAW,GAAE,OAAe,EAC5B,sBAAsB,CAAC,EAAE,MAAM,EAC/B,WAAW,GAAE,OAAe,GAC3B,OAAO,CAAC,iBAAiB,CAAC;IAuW7B,MAAM,CAAC,SAAS,CACd,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACnC,WAAW,GAAE,OAAiB,GAC7B,MAAM,EAAE;IAwBX,OAAO,CAAC,MAAM,CAAC,SAAS;IA6DxB,OAAO,CAAC,MAAM,CAAC,WAAW;IAoG1B,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAsBnC,OAAO,CAAC,MAAM,CAAC,cAAc;IAuB7B,OAAO,CAAC,MAAM,CAAC,SAAS;IAiCxB,OAAO,CAAC,MAAM,CAAC,WAAW;IAqB1B,OAAO,CAAC,MAAM,CAAC,eAAe;IAoB9B,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAIlC,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAIvC,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAQtC,OAAO,CAAC,MAAM,CAAC,8BAA8B;mBAkCxB,gBAAgB;mBA4ChB,aAAa;mBAkDb,iBAAiB;mBA8BjB,gBAAgB;IAsCrC,OAAO,CAAC,MAAM,CAAC,QAAQ;CAYxB"}
|