*/ public function keys(): array { return SuperAdminProgramSettingsOverlay::RUNTIME_KEYS; } public function sync(): int { $keys = $this->keys(); if ($keys === []) { return 0; } return Setting::query() ->whereIn('key', $keys) ->where(function ($query) { $query->where('can_edit', '!=', 1) ->orWhereNull('can_edit'); }) ->update(['can_edit' => 1]); } /** * @return array key => can_edit for rows still not 1 */ public function violations(): array { $keys = $this->keys(); if ($keys === []) { return []; } return Setting::query() ->whereIn('key', $keys) ->where(function ($query) { $query->where('can_edit', '!=', 1) ->orWhereNull('can_edit'); }) ->orderBy('key') ->pluck('can_edit', 'key') ->all(); } /** * @return array key => can_edit for all runtime keys present in DB */ public function statusMap(): array { return Setting::query() ->whereIn('key', $this->keys()) ->orderBy('key') ->pluck('can_edit', 'key') ->all(); } public function useDatabase(string $database): void { $connection = (string) config('database.default', 'mysql'); config(["database.connections.{$connection}.database" => $database]); DB::purge($connection); } }