Added short role names components #378

This commit is contained in:
2023-09-28 13:17:42 +02:00
parent 94e003312d
commit 8e8da46a54
22 changed files with 225 additions and 46 deletions

View File

@@ -35,6 +35,7 @@ type Server implements TableWithHistoryQuery {
shortRoleNames(filter: ShortRoleNameFilter, page: Page, sort: Sort): [ShortRoleName]
config: ServerConfig
hasFeatureFlag(flag: String): Boolean
createdAt: String
modifiedAt: String

View File

@@ -1,6 +1,9 @@
from cpl_core.configuration import ConfigurationABC
from cpl_core.database.context import DatabaseContextABC
from cpl_discord.service import DiscordBotServiceABC
from bot_core.configuration.feature_flags_enum import FeatureFlagsEnum
from bot_core.configuration.feature_flags_settings import FeatureFlagsSettings
from bot_data.abc.achievement_repository_abc import AchievementRepositoryABC
from bot_data.abc.auto_role_repository_abc import AutoRoleRepositoryABC
from bot_data.abc.client_repository_abc import ClientRepositoryABC
@@ -12,6 +15,7 @@ from bot_data.abc.user_joined_server_repository_abc import UserJoinedServerRepos
from bot_data.abc.user_joined_voice_channel_repository_abc import UserJoinedVoiceChannelRepositoryABC
from bot_data.abc.user_repository_abc import UserRepositoryABC
from bot_data.model.server import Server
from bot_data.model.server_config import ServerConfig
from bot_data.model.server_history import ServerHistory
from bot_graphql.abc.data_query_with_history_abc import DataQueryWithHistoryABC
from bot_graphql.filter.achievement_filter import AchievementFilter
@@ -25,6 +29,7 @@ from bot_graphql.filter.user_filter import UserFilter
class ServerQuery(DataQueryWithHistoryABC):
def __init__(
self,
config: ConfigurationABC,
bot: DiscordBotServiceABC,
db: DatabaseContextABC,
auto_roles: AutoRoleRepositoryABC,
@@ -40,6 +45,7 @@ class ServerQuery(DataQueryWithHistoryABC):
):
DataQueryWithHistoryABC.__init__(self, "Server", "ServersHistory", ServerHistory, db)
self._config = config
self._bot = bot
self._auto_roles = auto_roles
self._clients = clients
@@ -73,6 +79,9 @@ class ServerQuery(DataQueryWithHistoryABC):
ShortRoleNameFilter,
)
self.set_field("config", lambda server, *_: server_configs.get_server_config_by_server(server.id))
self.set_field(
"hasFeatureFlag", lambda server, *_, **kwargs: self._resolve_has_feature_flag(server, *_, **kwargs)
)
@staticmethod
def resolve_id(server: Server, *_):
@@ -89,3 +98,9 @@ class ServerQuery(DataQueryWithHistoryABC):
@staticmethod
def resolve_icon_url(server: Server, *_):
return server.icon_url
def _resolve_has_feature_flag(self, server: Server, *_, **kwargs):
settings: ServerConfig = self._config.get_configuration(f"ServerConfig_{server.discord_id}")
if "flag" not in kwargs:
return False
return FeatureFlagsSettings.get_flag_from_dict(settings.feature_flags, FeatureFlagsEnum(kwargs["flag"]))