Files
michaelschiemer/tests/debug/test-migration-direct.php
Michael Schiemer 5050c7d73a docs: consolidate documentation into organized structure
- Move 12 markdown files from root to docs/ subdirectories
- Organize documentation by category:
  • docs/troubleshooting/ (1 file)  - Technical troubleshooting guides
  • docs/deployment/      (4 files) - Deployment and security documentation
  • docs/guides/          (3 files) - Feature-specific guides
  • docs/planning/        (4 files) - Planning and improvement proposals

Root directory cleanup:
- Reduced from 16 to 4 markdown files in root
- Only essential project files remain:
  • CLAUDE.md (AI instructions)
  • README.md (Main project readme)
  • CLEANUP_PLAN.md (Current cleanup plan)
  • SRC_STRUCTURE_IMPROVEMENTS.md (Structure improvements)

This improves:
 Documentation discoverability
 Logical organization by purpose
 Clean root directory
 Better maintainability
2025-10-05 11:05:04 +02:00

93 lines
3.4 KiB
PHP

<?php
declare(strict_types=1);
require_once __DIR__ . '/../../vendor/autoload.php';
use App\Framework\Config\Environment;
use App\Framework\Database\Config\DatabaseConfigInitializer;
use App\Framework\Database\DatabaseManager;
use App\Framework\Database\Migration\MigrationRunner;
use App\Framework\Database\Platform\DatabasePlatformInitializer;
use App\Framework\DateTime\Clock;
use App\Framework\DateTime\SystemClock;
use App\Framework\DateTime\SystemTimer;
use App\Framework\DI\DefaultContainer;
echo "=== Direct Migration Test ===\n\n";
try {
// Setup environment with .env file
$env = Environment::fromFile(__DIR__ . '/../../.env');
echo "1. Environment loaded from .env\n";
// Initialize database platform
$platformInitializer = new DatabasePlatformInitializer($env);
$platform = $platformInitializer->__invoke();
echo "2. Database platform initialized: " . $platform->getName() . "\n";
// Initialize database config
$dbConfigInitializer = new DatabaseConfigInitializer($env);
$dbConfig = $dbConfigInitializer->__invoke();
echo "3. Database config initialized\n";
// Setup container manually
$container = new DefaultContainer();
$container->singleton(Environment::class, $env);
$container->singleton(\App\Framework\Database\Platform\DatabasePlatform::class, $platform);
$container->singleton(\App\Framework\Database\Config\DatabaseConfig::class, $dbConfig);
echo "4. Container setup with platform and config\n";
// Create timer and clock
$timer = new SystemTimer();
$clock = new SystemClock();
$container->singleton(Clock::class, $clock);
// Initialize database manager directly
$databaseManager = new DatabaseManager($dbConfig, $timer, 'database/migrations', $clock);
$connection = $databaseManager->getConnection();
$container->singleton(\App\Framework\Database\ConnectionInterface::class, $connection);
echo "5. Database connection established\n";
// Test connection
$pdo = $connection->getPdo();
echo "6. Testing database connection...\n";
$result = $pdo->query("SELECT 1 as test")->fetch();
echo " Connection test result: " . $result['test'] . "\n";
// Create migration runner manually
$migrationRunner = new MigrationRunner(
connection: $connection,
platform: $platform,
clock: $clock
);
echo "7. Migration runner created successfully\n";
// Test migrations table creation
echo "8. Testing migrations table creation...\n";
// Check if migrations table exists by running a simple query
try {
$sql = $platform->getTableExistsSQL('framework_migrations');
$result = $connection->queryColumn($sql);
$exists = ! empty($result) && (int) $result[0] > 0;
echo " Migrations table exists: " . ($exists ? 'Yes' : 'No') . "\n";
if (! $exists) {
echo " Creating migrations table...\n";
// This will trigger the table creation in the constructor
// The constructor was already called above, so table should be created
}
} catch (\Throwable $e) {
echo " Error checking migrations table: " . $e->getMessage() . "\n";
}
echo "\n=== Migration Test Successful ===\n";
} catch (\Throwable $e) {
echo "\n❌ Error: " . $e->getMessage() . "\n";
echo "File: " . $e->getFile() . ":" . $e->getLine() . "\n";
echo "Stack trace:\n" . $e->getTraceAsString() . "\n";
}