Improved feature flag loading in frontend #446
This commit is contained in:
@@ -52,4 +52,5 @@ type Query {
|
||||
discord: Discord
|
||||
|
||||
hasFeatureFlag(flag: String): FeatureFlag
|
||||
featureFlags: [FeatureFlag]
|
||||
}
|
@@ -40,6 +40,7 @@ type Server implements TableWithHistoryQuery {
|
||||
|
||||
config: ServerConfig
|
||||
hasFeatureFlag(flag: String): FeatureFlag
|
||||
featureFlags: [FeatureFlag]
|
||||
|
||||
statistic(date: String): ServerStatistic
|
||||
|
||||
|
@@ -116,6 +116,10 @@ class ServerQuery(DataQueryWithHistoryABC):
|
||||
"hasFeatureFlag",
|
||||
lambda server, *_, **kwargs: self._resolve_has_feature_flag(server, *_, **kwargs),
|
||||
)
|
||||
self.set_field(
|
||||
"featureFlags",
|
||||
lambda server, *_, **kwargs: self._resolve_feature_flags(server, *_),
|
||||
)
|
||||
self.set_field("statistic", lambda server, *_, **kwargs: ServerStatistics(server, kwargs))
|
||||
|
||||
@staticmethod
|
||||
@@ -142,3 +146,13 @@ class ServerQuery(DataQueryWithHistoryABC):
|
||||
"key": kwargs["flag"],
|
||||
"value": FeatureFlagsSettings.get_flag_from_dict(settings.feature_flags, FeatureFlagsEnum(kwargs["flag"])),
|
||||
}
|
||||
|
||||
def _resolve_feature_flags(self, server: Server, *_) -> list[dict]:
|
||||
settings: ServerConfig = self._config.get_configuration(f"ServerConfig_{server.discord_id}")
|
||||
return [
|
||||
{
|
||||
"key": flag,
|
||||
"value": FeatureFlagsSettings.get_flag_from_dict(settings.feature_flags, FeatureFlagsEnum(flag)),
|
||||
}
|
||||
for flag in [e.value for e in FeatureFlagsEnum]
|
||||
]
|
||||
|
@@ -131,6 +131,10 @@ class Query(QueryABC):
|
||||
"hasFeatureFlag",
|
||||
lambda *_, **kwargs: self._resolve_has_feature_flag(*_, **kwargs),
|
||||
)
|
||||
self.set_field(
|
||||
"featureFlags",
|
||||
lambda *_, **kwargs: self._resolve_feature_flags(*_),
|
||||
)
|
||||
|
||||
def _resolve_has_feature_flag(self, *_, **kwargs):
|
||||
settings: TechnicianConfig = self._config.get_configuration(TechnicianConfig)
|
||||
@@ -140,3 +144,13 @@ class Query(QueryABC):
|
||||
"key": kwargs["flag"],
|
||||
"value": FeatureFlagsSettings.get_flag_from_dict(settings.feature_flags, FeatureFlagsEnum(kwargs["flag"])),
|
||||
}
|
||||
|
||||
def _resolve_feature_flags(self, *_) -> list[dict]:
|
||||
settings: TechnicianConfig = self._config.get_configuration(TechnicianConfig)
|
||||
return [
|
||||
{
|
||||
"key": flag,
|
||||
"value": FeatureFlagsSettings.get_flag_from_dict(settings.feature_flags, FeatureFlagsEnum(flag)),
|
||||
}
|
||||
for flag in [e.value for e in FeatureFlagsEnum]
|
||||
]
|
||||
|
Reference in New Issue
Block a user