info('Migrating from Mysql to SQLite...'); if (File::exists(storage_path('database.sqlite'))) { File::delete(storage_path('database.sqlite')); } File::put(storage_path('database.sqlite'), ''); config(['database.default' => 'sqlite']); $this->call('migrate', ['--force' => true]); $this->migrateModel(Backup::class); $this->migrateModel(BackupFile::class); $this->migrateModel(CronJob::class); $this->migrateModel(Database::class); $this->migrateModel(DatabaseUser::class); $this->migrateModel(Deployment::class); $this->migrateModel(DeploymentScript::class); $this->migrateModel(FirewallRule::class); $this->migrateModel(GitHook::class); $this->migrateModel(NotificationChannel::class); $this->migrateModel(Project::class); $this->migrateModel(Worker::class); $this->migrateModel(Server::class); $this->migrateModel(ServerLog::class); $this->migrateModel(ServerProvider::class); $this->migrateModel(Service::class); $this->migrateModel(Site::class); $this->migrateModel(SourceControl::class); $this->migrateModel(SshKey::class); $this->migrateModel(Ssl::class); $this->migrateModel(StorageProvider::class); $this->migrateModel(User::class); $env = File::get(base_path('.env')); $env = str_replace('DB_CONNECTION=mysql', 'DB_CONNECTION=sqlite', $env); $env = str_replace('DB_DATABASE=vito', '', $env); File::put(base_path('.env'), $env); $this->info('Migrated from Mysql to SQLite'); } private function migrateModel(string $model): void { $this->info("Migrating model: {$model}"); config(['database.default' => 'mysql']); $rows = $model::where('id', '>', 0)->get(); foreach ($rows as $row) { DB::connection('sqlite')->table($row->getTable())->insert($row->getAttributes()); } $this->info("Migrated model: {$model}"); } }