1.0.0 #253
| @@ -1,3 +1,4 @@ | ||||
| from cpl_core.dependency_injection import ServiceProviderABC | ||||
| from cpl_discord.service import DiscordBotServiceABC | ||||
| from cpl_query.extension import List | ||||
|  | ||||
| @@ -6,8 +7,9 @@ from bot_graphql.abc.filter_abc import FilterABC | ||||
|  | ||||
|  | ||||
| class AutoRoleRuleFilter(FilterABC): | ||||
|     def __init__(self, bot: DiscordBotServiceABC): | ||||
|     def __init__(self, services: ServiceProviderABC, bot: DiscordBotServiceABC): | ||||
|         FilterABC.__init__(self) | ||||
|         self._services = services | ||||
|         self._bot = bot | ||||
|  | ||||
|         self._id = None | ||||
| @@ -32,9 +34,8 @@ class AutoRoleRuleFilter(FilterABC): | ||||
|         if "auto_role" in values: | ||||
|             from bot_graphql.filter.auto_role_filter import AutoRoleFilter | ||||
|  | ||||
|             auto_role = AutoRoleFilter(self._bot) | ||||
|             auto_role.from_dict(values["auto_role"]) | ||||
|             self._auto_role = auto_role | ||||
|             self._auto_role: AutoRoleFilter = self._services.get_service(AutoRoleFilter) | ||||
|             self._auto_role.from_dict(values["auto_role"]) | ||||
|  | ||||
|     def filter(self, query: List[AutoRoleRule]) -> List[AutoRoleRule]: | ||||
|         if self._id is not None: | ||||
|   | ||||
| @@ -1,3 +1,4 @@ | ||||
| from cpl_core.dependency_injection import ServiceProviderABC | ||||
| from cpl_query.extension import List | ||||
|  | ||||
| from bot_data.model.level import Level | ||||
| @@ -5,12 +6,14 @@ from bot_graphql.abc.filter_abc import FilterABC | ||||
|  | ||||
|  | ||||
| class LevelFilter(FilterABC): | ||||
|     def __init__(self): | ||||
|     def __init__(self, services: ServiceProviderABC): | ||||
|         FilterABC.__init__(self) | ||||
|  | ||||
|         self._services = services | ||||
|  | ||||
|         self._id = None | ||||
|         self._name = None | ||||
|         self._server_id = None | ||||
|         self._server = None | ||||
|  | ||||
|     def from_dict(self, values: dict): | ||||
|         if "id" in values: | ||||
| @@ -19,6 +22,12 @@ class LevelFilter(FilterABC): | ||||
|         if "name" in values: | ||||
|             self._name = values["name"] | ||||
|  | ||||
|         if "server" in values: | ||||
|             from bot_graphql.filter.server_filter import ServerFilter | ||||
|  | ||||
|             self._server: ServerFilter = self._services.get_service(LevelFilter) | ||||
|             self._server.from_dict(values["server"]) | ||||
|  | ||||
|     def filter(self, query: List[Level]) -> List[Level]: | ||||
|         if self._id is not None: | ||||
|             query = query.where(lambda x: x.id == self._id) | ||||
| @@ -26,4 +35,8 @@ class LevelFilter(FilterABC): | ||||
|         if self._name is not None: | ||||
|             query = query.where(lambda x: self._name.lower() == x.name.lower() or self._name.lower() in x.name.lower()) | ||||
|  | ||||
|         if self._server is not None: | ||||
|             servers = self._server.filter(query.select(lambda x: x.server)).select(lambda x: x.server_id) | ||||
|             query = query.where(lambda x: x.server.server_id in servers) | ||||
|  | ||||
|         return query | ||||
|   | ||||
| @@ -36,18 +36,29 @@ class UserFilter(FilterABC): | ||||
|     def from_dict(self, values: dict): | ||||
|         if "id" in values: | ||||
|             self._id = int(values["id"]) | ||||
|  | ||||
|         if "discord_id" in values: | ||||
|             self._discord_id = int(values["discord_id"]) | ||||
|  | ||||
|         if "name" in values: | ||||
|             self._name = values["name"] | ||||
|  | ||||
|         if "xp" in values: | ||||
|             self._xp = int(values["xp"]) | ||||
|  | ||||
|         if "ontime" in values: | ||||
|             self._ontime = int(values["ontime"]) | ||||
|  | ||||
|         if "level" in values: | ||||
|             self._level: LevelFilter = self._services.get_service(LevelFilter) | ||||
|             self._level.from_dict(values["level"]) | ||||
|  | ||||
|         if "server" in values: | ||||
|             from bot_graphql.filter.server_filter import ServerFilter | ||||
|  | ||||
|             self._server: ServerFilter = self._services.get_service(LevelFilter) | ||||
|             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) | ||||
|   | ||||
| @@ -10,6 +10,7 @@ from bot_graphql.abc.filter_abc import FilterABC | ||||
| from bot_graphql.abc.query_abc import QueryABC | ||||
| from bot_graphql.filter.auto_role_filter import AutoRoleFilter | ||||
| 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.user_filter import UserFilter | ||||
| @@ -54,8 +55,9 @@ class GraphQLModule(ModuleABC): | ||||
|  | ||||
|         services.add_singleton(FilterABC, AutoRoleFilter) | ||||
|         services.add_singleton(FilterABC, AutoRoleRuleFilter) | ||||
|         services.add_singleton(FilterABC, ClientFilter) | ||||
|         services.add_singleton(FilterABC, LevelFilter) | ||||
|         services.add_singleton(FilterABC, ServerFilter) | ||||
|         services.add_singleton(FilterABC, UserFilter) | ||||
|         services.add_singleton(FilterABC, LevelFilter) | ||||
|  | ||||
|         services.add_transient(SeederService) | ||||
|   | ||||
| @@ -14,6 +14,7 @@ type Level implements TableQuery { | ||||
| input LevelFilter { | ||||
|     id: ID | ||||
|     name: String | ||||
|     server: ServerFilter | ||||
| } | ||||
|  | ||||
| type LevelMutation { | ||||
|   | ||||
| @@ -3,16 +3,16 @@ type Server implements TableQuery { | ||||
|     discord_id: String | ||||
|     name: String | ||||
|  | ||||
|     auto_roles: [AutoRole] | ||||
|     auto_roles(filter: AutoRoleFilter, page: Page, sort: Sort): [AutoRole] | ||||
|     auto_role_count: Int | ||||
|  | ||||
|     clients(filter: ClientFilter, page: Page, sort: Sort): [Client] | ||||
|     client_count: Int | ||||
|  | ||||
|     users(filter: UserFilter): [User] | ||||
|     users(filter: UserFilter, page: Page, sort: Sort): [User] | ||||
|     user_count: Int | ||||
|  | ||||
|     levels: [Level] | ||||
|     levels(filter: LevelFilter, page: Page, sort: Sort): [Level] | ||||
|     level_count: Int | ||||
|  | ||||
|     created_at: String | ||||
|   | ||||
| @@ -25,4 +25,5 @@ input UserFilter { | ||||
|     xp: Int | ||||
|     ontime: Float | ||||
|     level: LevelFilter | ||||
|     server: ServerFilter | ||||
| } | ||||
		Reference in New Issue
	
	Block a user