upsert('impressum', [ 'de' => 'Impressum', ], [ 'de' => $impressumDe, ], $now); // Datenschutz (DE) — baseline for Fotospiel platform $datenschutzDe = <<format('Y-m-d')} MD; $this->upsert('datenschutz', [ 'de' => 'Datenschutzerklärung', ], [ 'de' => $datenschutzDe, ], $now); // AGB (DE) — baseline Terms for Fotospiel $agbDe = <<format('Y-m-d')} MD; $this->upsert('agb', [ 'de' => 'Allgemeine Geschäftsbedingungen', ], [ 'de' => $agbDe, ], $now); } private function upsert(string $slug, array $titleByLocale, array $bodyByLocale, \DateTimeInterface $effectiveFrom): void { $existing = LegalPage::where('slug', $slug)->orderByDesc('version')->first(); $version = $existing ? ($existing->version + 1) : 1; LegalPage::updateOrCreate( ['slug' => $slug, 'version' => $version], [ 'title' => $titleByLocale, 'body_markdown' => $bodyByLocale, 'locale_fallback' => 'de', 'version' => $version, 'effective_from' => $effectiveFrom, 'is_published' => true, ] ); } }