51 lines
2.0 KiB
PHP
51 lines
2.0 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
// SettingSeeder — Popola la tabella settings con i valori di default
|
|
//
|
|
// Questo seeder legge i default da config/settings.php e li inserisce
|
|
// nel database al primo avvio.
|
|
//
|
|
// È idempotente: puoi eseguirlo più volte senza duplicati (usa updateOrCreate)
|
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
|
|
use App\Models\Setting;
|
|
use Illuminate\Database\Seeder;
|
|
|
|
class SettingSeeder extends Seeder
|
|
{
|
|
public function run(): void
|
|
{
|
|
$defaults = config('settings.defaults', []);
|
|
$descriptions = config('settings.descriptions', []);
|
|
$types = config('settings.types', []);
|
|
$groups = config('settings.groups', []);
|
|
|
|
// Costruisce una mappa chiave → gruppo
|
|
$keyToGroup = [];
|
|
foreach ($groups as $groupName => $keys) {
|
|
foreach ($keys as $key) {
|
|
$keyToGroup[$key] = $groupName;
|
|
}
|
|
}
|
|
|
|
foreach ($defaults as $key => $value) {
|
|
// updateOrCreate: se esiste già una riga con quell'key, la aggiorna;
|
|
// altrimenti la crea. Perfetto per rieseguire il seeder in sicurezza.
|
|
Setting::updateOrCreate(
|
|
['key' => $key],
|
|
[
|
|
'value' => is_bool($value) ? ($value ? '1' : '0') : (string) $value,
|
|
'label' => $descriptions[$key] ?? $key,
|
|
'group' => $keyToGroup[$key] ?? 'Generale',
|
|
'type' => $types[$key] ?? 'string',
|
|
]
|
|
);
|
|
}
|
|
|
|
$this->command->info('✓ Impostazioni di default inserite nella tabella settings.');
|
|
}
|
|
}
|