inti project
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace App\Support\Release;
|
||||
|
||||
final class FeatureFlagRegistry
|
||||
{
|
||||
/** @return FeatureFlagDefinition[] */
|
||||
public function all(): array
|
||||
{
|
||||
$flags = config('modular_release.flags', []);
|
||||
|
||||
return array_map(
|
||||
fn (string $key, array $flag): FeatureFlagDefinition => new FeatureFlagDefinition(
|
||||
key: $key,
|
||||
owner: (string) ($flag['owner'] ?? 'unowned'),
|
||||
default: (bool) ($flag['default'] ?? false),
|
||||
removalTarget: $flag['removal_target'] ?? null,
|
||||
dimensions: $flag['dimensions'] ?? ['global', 'environment', 'school_id', 'domain_profile']
|
||||
),
|
||||
array_keys($flags),
|
||||
array_values($flags)
|
||||
);
|
||||
}
|
||||
|
||||
public function find(string $key): ?FeatureFlagDefinition
|
||||
{
|
||||
foreach ($this->all() as $flag) {
|
||||
if ($flag->key === $key) {
|
||||
return $flag;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public function export(): array
|
||||
{
|
||||
return array_map(fn (FeatureFlagDefinition $flag): array => $flag->toArray(), $this->all());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user