* feat(#454): implement DBALDatabase class with DBAL-backed query builders
Adds DBALDatabase implementing DatabaseInterface using Doctrine DBAL,
with matching query builders (DBALSelect, DBALInsert, DBALUpdate,
DBALDelete), schema manager (DBALSchema), and transaction support
(DBALTransaction). Includes 78 unit tests mirroring existing PdoDatabase
test patterns.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat(#455,#456): migrate kernel and foundation to DBALDatabase
Replace PdoDatabase with DBALDatabase across the framework:
- AbstractKernel::bootDatabase() now creates DBALDatabase::createSqlite()
- AbstractKernel::$database property typed as DatabaseInterface
- AbstractKernel::bootMigrations() reuses the DBAL connection instead of
creating a duplicate DriverManager::getConnection() call
- ServiceProvider::commands() signature accepts DatabaseInterface
- HealthChecker accepts DatabaseInterface, adds CLOB->TEXT type compat
- HttpKernel/ConsoleKernel use PDO escape hatch via
getConnection()->getNativeConnection() for cache/embedding consumers
- ControllerDispatcher, BroadcastStorage, DiscoveryApiHandler,
SsrPageHandler, RelationshipSchemaManager, RelationshipTraversalService
all migrated from PdoDatabase to DatabaseInterface
- All test files updated from PdoDatabase::createSqlite() to
DBALDatabase::createSqlite()
PdoDatabase and legacy classes are intentionally preserved for #457.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* chore(#457,#458): remove legacy PdoDatabase and query builders
Remove all PDO-based database classes now superseded by DBALDatabase:
- PdoDatabase, PdoTransaction, PdoSchema
- PdoSelect, PdoInsert, PdoUpdate, PdoDelete
- All corresponding unit tests
- Stale PHPStan baseline entries for deleted files
DatabaseInterface and all DBAL* classes are retained.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>