Added query #378
This commit is contained in:
		@@ -11,7 +11,7 @@ from bot_data.model.short_role_name_position_enum import ShortRoleNamePositionEn
 | 
			
		||||
class ShortRoleName(TableABC):
 | 
			
		||||
    def __init__(
 | 
			
		||||
        self,
 | 
			
		||||
        name: str,
 | 
			
		||||
        short_name: str,
 | 
			
		||||
        discord_role_id: int,
 | 
			
		||||
        position: ShortRoleNamePositionEnum,
 | 
			
		||||
        server: Server,
 | 
			
		||||
@@ -20,7 +20,7 @@ class ShortRoleName(TableABC):
 | 
			
		||||
        id=0,
 | 
			
		||||
    ):
 | 
			
		||||
        self._id = id
 | 
			
		||||
        self._name = name
 | 
			
		||||
        self._short_name = short_name
 | 
			
		||||
        self._discord_role_id = discord_role_id
 | 
			
		||||
        self._position = position
 | 
			
		||||
        self._server = server
 | 
			
		||||
@@ -34,12 +34,12 @@ class ShortRoleName(TableABC):
 | 
			
		||||
        return self._id
 | 
			
		||||
 | 
			
		||||
    @property
 | 
			
		||||
    def name(self) -> str:
 | 
			
		||||
        return self._name
 | 
			
		||||
    def short_name(self) -> str:
 | 
			
		||||
        return self._short_name
 | 
			
		||||
 | 
			
		||||
    @name.setter
 | 
			
		||||
    def name(self, value: str):
 | 
			
		||||
        self._name = value
 | 
			
		||||
    @short_name.setter
 | 
			
		||||
    def short_name(self, value: str):
 | 
			
		||||
        self._short_name = value
 | 
			
		||||
 | 
			
		||||
    @property
 | 
			
		||||
    def role_id(self) -> int:
 | 
			
		||||
@@ -109,7 +109,7 @@ class ShortRoleName(TableABC):
 | 
			
		||||
            INSERT INTO `ShortRoleNames` (
 | 
			
		||||
                `Name`, `DiscordRoleId`, `Position`, `ServerId`
 | 
			
		||||
            ) VALUES (
 | 
			
		||||
                '{self._name}',
 | 
			
		||||
                '{self._short_name}',
 | 
			
		||||
                {self._discord_role_id}
 | 
			
		||||
                '{self._position}',
 | 
			
		||||
                {self._server.id},
 | 
			
		||||
@@ -122,7 +122,7 @@ class ShortRoleName(TableABC):
 | 
			
		||||
        return str(
 | 
			
		||||
            f"""
 | 
			
		||||
            UPDATE `ShortRoleNames`
 | 
			
		||||
            SET `Name` = '{self._name}',
 | 
			
		||||
            SET `Name` = '{self._short_name}',
 | 
			
		||||
            `DiscordRoleId` = {self._discord_role_id},
 | 
			
		||||
            `Position` = '{self._position}',
 | 
			
		||||
            `ServerId` = {self._server.id}
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@ from cpl_discord.service import DiscordBotServiceABC
 | 
			
		||||
from bot_data.abc.history_table_abc import HistoryTableABC
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class AutoRoleRuleHistory(HistoryTableABC):
 | 
			
		||||
class ShortRoleNameHistory(HistoryTableABC):
 | 
			
		||||
    def __init__(
 | 
			
		||||
        self,
 | 
			
		||||
        name: str,
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										70
									
								
								kdb-bot/src/bot_graphql/filter/short_role_name_filter.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								kdb-bot/src/bot_graphql/filter/short_role_name_filter.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,70 @@
 | 
			
		||||
from cpl_discord.service import DiscordBotServiceABC
 | 
			
		||||
from cpl_query.extension import List
 | 
			
		||||
 | 
			
		||||
from bot_data.model.short_role_name import ShortRoleName
 | 
			
		||||
from bot_data.model.short_role_name_position_enum import ShortRoleNamePositionEnum
 | 
			
		||||
from bot_data.model.user import User
 | 
			
		||||
from bot_graphql.abc.filter_abc import FilterABC
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ShortRoleNameFilter(FilterABC):
 | 
			
		||||
    def __init__(self, bot: DiscordBotServiceABC):
 | 
			
		||||
        FilterABC.__init__(self)
 | 
			
		||||
        self._bot = bot
 | 
			
		||||
 | 
			
		||||
        self._id = None
 | 
			
		||||
        self._short_name = None
 | 
			
		||||
        self._role_id = None
 | 
			
		||||
        self._role_name = None
 | 
			
		||||
        self._position = None
 | 
			
		||||
        self._server = None
 | 
			
		||||
 | 
			
		||||
    def from_dict(self, values: dict):
 | 
			
		||||
        if "id" in values:
 | 
			
		||||
            self._id = int(values["id"])
 | 
			
		||||
 | 
			
		||||
        if "shortName" in values:
 | 
			
		||||
            self._short_name = values["shortName"]
 | 
			
		||||
 | 
			
		||||
        if "roleId" in values:
 | 
			
		||||
            self._role_id = int(values["roleId"])
 | 
			
		||||
 | 
			
		||||
        if "roleName" in values:
 | 
			
		||||
            self._role_name = values["roleName"]
 | 
			
		||||
 | 
			
		||||
        if "position" in values:
 | 
			
		||||
            self._position = ShortRoleNamePositionEnum(values["position"])
 | 
			
		||||
 | 
			
		||||
        if "server" in values:
 | 
			
		||||
            from bot_graphql.filter.server_filter import ServerFilter
 | 
			
		||||
 | 
			
		||||
            self._server: ServerFilter = self._services.get_service(ServerFilter)
 | 
			
		||||
            self._server.from_dict(values["server"])
 | 
			
		||||
 | 
			
		||||
    def filter(self, query: List[User]) -> List[User]:
 | 
			
		||||
        if self._id is not None:
 | 
			
		||||
            query = query.where(lambda x: x.id == self._id)
 | 
			
		||||
 | 
			
		||||
        if self._short_name is not None:
 | 
			
		||||
            query = query.where(lambda x: x.short_name == self._short_name or self._short_name in x.short_name)
 | 
			
		||||
 | 
			
		||||
        if self._role_id is not None:
 | 
			
		||||
            query = query.where(lambda x: x.role_id == self._role_id)
 | 
			
		||||
 | 
			
		||||
        if self._role_name is not None and self._role_id is not None:
 | 
			
		||||
 | 
			
		||||
            def get_role_name(x: ShortRoleName):
 | 
			
		||||
                guild = self._bot.get_guild(x.server.discord_id)
 | 
			
		||||
                name = guild.get_role(x.role_id).name
 | 
			
		||||
                return name == self._role_name or self._role_name in name
 | 
			
		||||
 | 
			
		||||
            query = query.where(get_role_name)
 | 
			
		||||
 | 
			
		||||
        if self._position is not None:
 | 
			
		||||
            query = query.where(lambda x: x.position == self._position or self._position in x.position)
 | 
			
		||||
 | 
			
		||||
        if self._server is not None:
 | 
			
		||||
            servers = self._server.filter(query.select(lambda x: x.server)).select(lambda x: x.id)
 | 
			
		||||
            query = query.where(lambda x: x.server.id in servers)
 | 
			
		||||
 | 
			
		||||
        return query
 | 
			
		||||
@@ -37,6 +37,9 @@ type Query {
 | 
			
		||||
    achievementAttributes: [AchievementAttribute]
 | 
			
		||||
    achievementOperators: [String]
 | 
			
		||||
 | 
			
		||||
    shortRoleNameCount: Int
 | 
			
		||||
    shortRoleNames(filter: ShortRoleNameFilter, page: Page, sort: Sort): [ShortRoleName]
 | 
			
		||||
 | 
			
		||||
    technicianConfig: TechnicianConfig
 | 
			
		||||
    possibleFeatureFlags: [String]
 | 
			
		||||
    discord: Discord
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										49
									
								
								kdb-bot/src/bot_graphql/graphql/shortRoleName.gql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								kdb-bot/src/bot_graphql/graphql/shortRoleName.gql
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,49 @@
 | 
			
		||||
type ShortRoleName implements TableWithHistoryQuery {
 | 
			
		||||
    id: ID
 | 
			
		||||
    shortName: String
 | 
			
		||||
    roleId: String
 | 
			
		||||
    roleName: String
 | 
			
		||||
    position: String
 | 
			
		||||
 | 
			
		||||
    server: Server
 | 
			
		||||
 | 
			
		||||
    createdAt: String
 | 
			
		||||
    modifiedAt: String
 | 
			
		||||
 | 
			
		||||
    history: [ShortRoleNameHistory]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type ShortRoleNameHistory implements HistoryTableQuery {
 | 
			
		||||
    id: ID
 | 
			
		||||
    shortName: String
 | 
			
		||||
    roleId: String
 | 
			
		||||
    position: String
 | 
			
		||||
 | 
			
		||||
    server: ID
 | 
			
		||||
 | 
			
		||||
    deleted: Boolean
 | 
			
		||||
    dateFrom: String
 | 
			
		||||
    dateTo: String
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
input ShortRoleNameFilter {
 | 
			
		||||
    id: ID
 | 
			
		||||
    shortName: String
 | 
			
		||||
    roleId: String
 | 
			
		||||
    roleName: String
 | 
			
		||||
    position: String
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type ShortRoleNameMutation {
 | 
			
		||||
    createShortRoleName(input: ShortRoleNameInput!): ShortRoleName
 | 
			
		||||
    updateShortRoleName(input: ShortRoleNameInput!): ShortRoleName
 | 
			
		||||
    deleteShortRoleName(id: ID): ShortRoleName
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
input ShortRoleNameInput {
 | 
			
		||||
    id: ID
 | 
			
		||||
    shortName: String
 | 
			
		||||
    roleId: String
 | 
			
		||||
    roleName: String
 | 
			
		||||
    position: String
 | 
			
		||||
}
 | 
			
		||||
@@ -14,6 +14,7 @@ from bot_graphql.filter.auto_role_rule_filter import AutoRoleRuleFilter
 | 
			
		||||
from bot_graphql.filter.client_filter import ClientFilter
 | 
			
		||||
from bot_graphql.filter.level_filter import LevelFilter
 | 
			
		||||
from bot_graphql.filter.server_filter import ServerFilter
 | 
			
		||||
from bot_graphql.filter.short_role_name_filter import ShortRoleNameFilter
 | 
			
		||||
from bot_graphql.filter.user_filter import UserFilter
 | 
			
		||||
from bot_graphql.filter.user_joined_game_server_filter import UserJoinedGameServerFilter
 | 
			
		||||
from bot_graphql.filter.user_joined_server_filter import UserJoinedServerFilter
 | 
			
		||||
@@ -51,6 +52,8 @@ from bot_graphql.queries.level_query import LevelQuery
 | 
			
		||||
from bot_graphql.queries.server_config_query import ServerConfigQuery
 | 
			
		||||
from bot_graphql.queries.server_history_query import ServerHistoryQuery
 | 
			
		||||
from bot_graphql.queries.server_query import ServerQuery
 | 
			
		||||
from bot_graphql.queries.short_role_name_history_query import ShortRoleNameHistoryQuery
 | 
			
		||||
from bot_graphql.queries.short_role_name_query import ShortRoleNameQuery
 | 
			
		||||
from bot_graphql.queries.technician_config_history_query import TechnicianConfigHistoryQuery
 | 
			
		||||
from bot_graphql.queries.technician_config_query import TechnicianConfigQuery
 | 
			
		||||
from bot_graphql.queries.technician_id_config_history_query import TechnicianIdConfigHistoryQuery
 | 
			
		||||
@@ -110,6 +113,8 @@ class GraphQLModule(ModuleABC):
 | 
			
		||||
        services.add_transient(QueryABC, UserJoinedVoiceChannelQuery)
 | 
			
		||||
        services.add_transient(QueryABC, UserJoinedGameServerHistoryQuery)
 | 
			
		||||
        services.add_transient(QueryABC, UserJoinedGameServerQuery)
 | 
			
		||||
        services.add_transient(QueryABC, ShortRoleNameHistoryQuery)
 | 
			
		||||
        services.add_transient(QueryABC, ShortRoleNameQuery)
 | 
			
		||||
 | 
			
		||||
        services.add_transient(QueryABC, DiscordQuery)
 | 
			
		||||
        services.add_transient(QueryABC, GuildQuery)
 | 
			
		||||
@@ -129,6 +134,7 @@ class GraphQLModule(ModuleABC):
 | 
			
		||||
        services.add_transient(FilterABC, UserJoinedServerFilter)
 | 
			
		||||
        services.add_transient(FilterABC, UserJoinedVoiceChannelFilter)
 | 
			
		||||
        services.add_transient(FilterABC, UserJoinedGameServerFilter)
 | 
			
		||||
        services.add_transient(FilterABC, ShortRoleNameFilter)
 | 
			
		||||
 | 
			
		||||
        # mutations
 | 
			
		||||
        services.add_transient(QueryABC, AutoRoleMutation)
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,11 @@
 | 
			
		||||
from bot_graphql.abc.history_query_abc import HistoryQueryABC
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ShortRoleNameHistoryQuery(HistoryQueryABC):
 | 
			
		||||
    def __init__(self):
 | 
			
		||||
        HistoryQueryABC.__init__(self, "ShortRoleName")
 | 
			
		||||
 | 
			
		||||
        self.set_field("id", lambda x, *_: x.id)
 | 
			
		||||
        self.set_field("shortName", lambda x, *_: x.shortName)
 | 
			
		||||
        self.set_field("roleId", lambda x, *_: x.roleId)
 | 
			
		||||
        self.set_field("position", lambda x, *_: x.position)
 | 
			
		||||
							
								
								
									
										18
									
								
								kdb-bot/src/bot_graphql/queries/short_role_name_query.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								kdb-bot/src/bot_graphql/queries/short_role_name_query.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
from cpl_core.database.context import DatabaseContextABC
 | 
			
		||||
 | 
			
		||||
from bot_data.model.short_role_name_history import ShortRoleNameHistory
 | 
			
		||||
from bot_graphql.abc.data_query_with_history_abc import DataQueryWithHistoryABC
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ShortRoleNameQuery(DataQueryWithHistoryABC):
 | 
			
		||||
    def __init__(
 | 
			
		||||
        self,
 | 
			
		||||
        db: DatabaseContextABC,
 | 
			
		||||
    ):
 | 
			
		||||
        DataQueryWithHistoryABC.__init__(self, "ShortRoleName", "ShortRoleNamesHistory", ShortRoleNameHistory, db)
 | 
			
		||||
 | 
			
		||||
        self.set_field("id", lambda x, *_: x.id)
 | 
			
		||||
        self.set_field("shortName", lambda x, *_: x.short_name)
 | 
			
		||||
        self.set_field("roleId", lambda x, *_: x.role_id)
 | 
			
		||||
        self.set_field("roleName", lambda x, *_: x.role_name)
 | 
			
		||||
        self.set_field("position", lambda x, *_: x.position)
 | 
			
		||||
@@ -9,6 +9,7 @@ from bot_data.abc.game_server_repository_abc import GameServerRepositoryABC
 | 
			
		||||
from bot_data.abc.known_user_repository_abc import KnownUserRepositoryABC
 | 
			
		||||
from bot_data.abc.level_repository_abc import LevelRepositoryABC
 | 
			
		||||
from bot_data.abc.server_repository_abc import ServerRepositoryABC
 | 
			
		||||
from bot_data.abc.short_role_name_repository_abc import ShortRoleNameRepositoryABC
 | 
			
		||||
from bot_data.abc.technician_config_repository_abc import TechnicianConfigRepositoryABC
 | 
			
		||||
from bot_data.abc.user_joined_game_server_repository_abc import UserJoinedGameServerRepositoryABC
 | 
			
		||||
from bot_data.abc.user_joined_server_repository_abc import UserJoinedServerRepositoryABC
 | 
			
		||||
@@ -21,6 +22,7 @@ from bot_graphql.filter.auto_role_rule_filter import AutoRoleRuleFilter
 | 
			
		||||
from bot_graphql.filter.client_filter import ClientFilter
 | 
			
		||||
from bot_graphql.filter.level_filter import LevelFilter
 | 
			
		||||
from bot_graphql.filter.server_filter import ServerFilter
 | 
			
		||||
from bot_graphql.filter.short_role_name_filter import ShortRoleNameFilter
 | 
			
		||||
from bot_graphql.filter.user_filter import UserFilter
 | 
			
		||||
from bot_graphql.filter.user_joined_game_server_filter import UserJoinedGameServerFilter
 | 
			
		||||
from bot_graphql.filter.user_joined_server_filter import UserJoinedServerFilter
 | 
			
		||||
@@ -44,6 +46,7 @@ class Query(QueryABC):
 | 
			
		||||
        user_joined_game_server: UserJoinedGameServerRepositoryABC,
 | 
			
		||||
        users: UserRepositoryABC,
 | 
			
		||||
        achievements: AchievementRepositoryABC,
 | 
			
		||||
        short_role_names: ShortRoleNameRepositoryABC,
 | 
			
		||||
        achievement_service: AchievementService,
 | 
			
		||||
        technician_config: TechnicianConfigRepositoryABC,
 | 
			
		||||
    ):
 | 
			
		||||
@@ -71,6 +74,8 @@ class Query(QueryABC):
 | 
			
		||||
        )
 | 
			
		||||
        self.add_collection("user", lambda *_: users.get_users(), UserFilter)
 | 
			
		||||
        self.add_collection("achievement", lambda *_: achievements.get_achievements(), AchievementFilter)
 | 
			
		||||
        self.add_collection("shortRoleName", lambda *_: short_role_names.get_short_role_names(), ShortRoleNameFilter)
 | 
			
		||||
 | 
			
		||||
        self.set_field("technicianConfig", lambda *_: technician_config.get_technician_config())
 | 
			
		||||
 | 
			
		||||
        self.set_field("achievementAttributes", lambda *_: achievement_service.get_attributes())
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user