Feat: Moving Storefront Labels into a proper seeder
This commit is contained in:
@@ -18,9 +18,6 @@ use Lunar\Models\Product;
|
||||
use Lunar\Models\ProductType;
|
||||
use Lunar\Models\TaxClass;
|
||||
use Lunar\Models\TaxZone;
|
||||
use Modules\Core\Localization\Models\LanguageLine;
|
||||
use Modules\Core\Localization\Services\StorefrontLabels;
|
||||
use Modules\Core\Localization\Services\TranslationService;
|
||||
use Modules\Core\Payment\Models\PaymentMethod;
|
||||
|
||||
/**
|
||||
@@ -35,7 +32,7 @@ class InstallLunarCommand extends Command
|
||||
|
||||
protected $description = 'Seed the default Lunar store data (countries, channel, currency, tax zone, attributes, product type)';
|
||||
|
||||
public function handle(TranslationService $translations): void
|
||||
public function handle(): void
|
||||
{
|
||||
$this->components->info('Seeding default Lunar store data...');
|
||||
|
||||
@@ -255,9 +252,6 @@ class InstallLunarCommand extends Command
|
||||
}
|
||||
});
|
||||
|
||||
$this->components->info('Seeding storefront label translations');
|
||||
$this->seedStorefrontLabels($translations);
|
||||
|
||||
$this->components->info('Seeding payment method settings');
|
||||
$this->seedPaymentMethods();
|
||||
|
||||
@@ -267,32 +261,6 @@ class InstallLunarCommand extends Command
|
||||
$this->components->info('Lunar default data seeded.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Per-key upsert, not an all-or-nothing "only seed if the group is empty" guard —
|
||||
* a key already present in the database (including one an admin has since edited
|
||||
* via the Filament Languages resource) is left untouched; only keys missing
|
||||
* entirely are created. This is what makes it safe to add new keys to
|
||||
* StorefrontLabels later and re-run this on an already-installed store without
|
||||
* either skipping the new keys (the old all-or-nothing guard) or reverting an
|
||||
* admin's edits back to the hardcoded default (a naive updateOrCreate would).
|
||||
*/
|
||||
private function seedStorefrontLabels(TranslationService $translations): void
|
||||
{
|
||||
$labels = StorefrontLabels::all();
|
||||
|
||||
$existingKeys = LanguageLine::where('group', 'storefront')
|
||||
->whereIn('key', array_keys($labels))
|
||||
->pluck('key');
|
||||
|
||||
foreach ($labels as $key => $text) {
|
||||
if ($existingKeys->contains($key)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$translations->create('storefront', $key, $text);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A single, deliberately opinionated starter row on fresh install —
|
||||
* `PaymentMethod` is now fully admin-creatable/deletable (see
|
||||
@@ -304,7 +272,7 @@ class InstallLunarCommand extends Command
|
||||
* order status should be called; that's a merchant decision.
|
||||
*
|
||||
* Skip-if-exists on `type`, same idempotent convention as
|
||||
* seedStorefrontLabels() — an admin who has since edited or deleted
|
||||
* StorefrontTranslationsSeeder — an admin who has since edited or deleted
|
||||
* this row (via the Filament Payment Methods resource) is left alone;
|
||||
* re-running lunar:install never recreates a deleted starter row.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user