-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcheck.php.backup
More file actions
131 lines (118 loc) · 5.13 KB
/
check.php.backup
File metadata and controls
131 lines (118 loc) · 5.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<?php
/**
* Laravel Model-Database Schema Checker
* Modular Version
*
* Usage:
* php check.php # Compare models with database
* php check.php --fix # Fix model fillable properties
* php check.php --dry-run # Show what would be changed
* php check.php --generate-migrations # Generate Laravel migrations
* php check.php --backup # Create database backup recommendations
*/
require_once __DIR__ . '/../vendor/autoload.php';
// Bootstrap Laravel
$app = require_once __DIR__ . '/../bootstrap/app.php';
$app->make('Illuminate\Contracts\Console\Kernel')->bootstrap();
// Load classes directly
require_once __DIR__ . '/config/CheckConfig.php';
require_once __DIR__ . '/utils/Logger.php';
require_once __DIR__ . '/utils/FileHelper.php';
require_once __DIR__ . '/utils/PatternMatcher.php';
require_once __DIR__ . '/services/ModelAnalyzer.php';
require_once __DIR__ . '/services/DatabaseAnalyzer.php';
require_once __DIR__ . '/services/RelationshipAnalyzer.php';
require_once __DIR__ . '/services/MigrationGenerator.php';
require_once __DIR__ . '/services/CommandRunner.php';
require_once __DIR__ . '/commands/CompareCommand.php';
require_once __DIR__ . '/commands/FixCommand.php';
require_once __DIR__ . '/commands/GenerateMigrationsCommand.php';
use Check\Config\CheckConfig;
use Check\Services\ModelAnalyzer;
use Check\Services\DatabaseAnalyzer;
use Check\Services\RelationshipAnalyzer;
use Check\Commands\CompareCommand;
use Check\Commands\FixCommand;
use Check\Utils\Logger;
try {
// Initialize configuration
$config = new CheckConfig();
$logger = new Logger($config->getLogFile());
// Parse command line arguments
$flags = [
'fix' => in_array('--fix', $argv),
'dry_run' => in_array('--dry-run', $argv),
'generate_migrations' => in_array('--generate-migrations', $argv),
'run_migrations' => in_array('--run-migrations', $argv),
'backup_db' => in_array('--backup-db', $argv),
'backup' => in_array('--backup', $argv),
'json' => in_array('--json', $argv),
'help' => in_array('--help', $argv) || in_array('-h', $argv),
];
// Show help if requested
if ($flags['help']) {
showHelp();
exit(0);
}
// Initialize services
$modelAnalyzer = new ModelAnalyzer($config, $logger);
$dbAnalyzer = new DatabaseAnalyzer($config, $logger);
$relationshipAnalyzer = new RelationshipAnalyzer($logger);
$commandRunner = new \Check\Services\CommandRunner($logger);
// Show backup recommendations if requested or if fixing
if ($flags['backup'] || $flags['fix']) {
$dbAnalyzer->generateBackupCommands();
}
// Execute appropriate command
if ($flags['generate_migrations']) {
$command = new \Check\Commands\GenerateMigrationsCommand(
$config,
$logger,
$modelAnalyzer,
$dbAnalyzer,
new \Check\Services\MigrationGenerator($config, $logger, $dbAnalyzer),
new \Check\Services\RelationshipAnalyzer($logger),
$commandRunner
);
$command->execute($flags);
} elseif ($flags['fix'] || $flags['dry_run']) {
$command = new \Check\Commands\FixCommand($config, $logger, $modelAnalyzer, $dbAnalyzer);
$command->execute($flags);
} else {
$command = new \Check\Commands\CompareCommand($config, $logger, $modelAnalyzer, $dbAnalyzer);
$command->execute($flags);
}
} catch (Exception $e) {
echo "Error: " . $e->getMessage() . "\n";
if (isset($logger)) {
$logger->error("Fatal error: " . $e->getMessage());
}
exit(1);
}
function showHelp(): void
{
echo "Laravel Model-Database Schema Checker (Modular Version)\n\n";
echo "USAGE:\n";
echo " php check.php [options]\n";
echo " ./run-checker.sh [options] # Auto-detects environment\n\n";
echo "OPTIONS:\n";
echo " --fix Fix model \$fillable properties automatically\n";
echo " --dry-run Show what would be changed without applying\n";
echo " --generate-migrations Generate Laravel migrations\n";
echo " --run-migrations Run migrations after generating them\n";
echo " --backup-db Create database backup before running migrations\n";
echo " --backup Show database backup recommendations\n";
echo " --json Output results in JSON format\n";
echo " --help, -h Show this help message\n\n";
echo "ENVIRONMENTS:\n";
echo " Works automatically in:\n";
echo " - DDEV projects (uses 'ddev exec php')\n";
echo " - Docker containers\n";
echo " - Local PHP installations\n\n";
echo "EXAMPLES:\n";
echo " php check.php # Compare models with database\n";
echo " php check.php --fix # Fix all model fillable properties\n";
echo " php check.php --dry-run # Preview changes without applying\n";
echo " php check.php --json # Output results in JSON format\n";
echo " ./run-checker.sh --backup --fix # Auto-detect environment and fix models\n\n";
}