diff --git a/bot/src/bot_data/model/level.py b/bot/src/bot_data/model/level.py index a20d268b..378d7fc6 100644 --- a/bot/src/bot_data/model/level.py +++ b/bot/src/bot_data/model/level.py @@ -2,6 +2,10 @@ from datetime import datetime from typing import Optional from cpl_core.database import TableABC +from cpl_core.dependency_injection import ServiceProviderABC +from cpl_discord.service import DiscordBotServiceABC +from cpl_query.extension import List +from discord import Role from bot_data.model.server import Server @@ -33,6 +37,13 @@ class Level(TableABC): def id(self) -> int: return self._id + @property + @ServiceProviderABC.inject + def icon_url(self, bot: DiscordBotServiceABC) -> str: + guild = bot.get_guild(self.server.discord_id) + role = List(Role, guild.roles).where(lambda x: x.name == self._name).first_or_default() + return None if role is None else role.icon + @property def name(self) -> str: return self._name diff --git a/bot/src/bot_graphql/graphql/level.gql b/bot/src/bot_graphql/graphql/level.gql index cc937291..15be156a 100644 --- a/bot/src/bot_graphql/graphql/level.gql +++ b/bot/src/bot_graphql/graphql/level.gql @@ -1,5 +1,6 @@ type Level implements TableWithHistoryQuery { id: ID + iconURL: String name: String color: String minXp: Int diff --git a/bot/src/bot_graphql/queries/level_query.py b/bot/src/bot_graphql/queries/level_query.py index 5f726c5b..d0762f95 100644 --- a/bot/src/bot_graphql/queries/level_query.py +++ b/bot/src/bot_graphql/queries/level_query.py @@ -1,6 +1,5 @@ from cpl_core.database.context import DatabaseContextABC -from bot_data.model.level import Level from bot_data.model.level_history import LevelHistory from bot_graphql.abc.data_query_with_history_abc import DataQueryWithHistoryABC @@ -9,33 +8,13 @@ class LevelQuery(DataQueryWithHistoryABC): def __init__(self, db: DatabaseContextABC): DataQueryWithHistoryABC.__init__(self, "Level", "LevelsHistory", LevelHistory, db) - self.set_field("id", self.resolve_id) - self.set_field("name", self.resolve_name) - self.set_field("color", self.resolve_color) - self.set_field("minXp", self.resolve_min_xp) - self.set_field("permissions", self.resolve_permissions) - self.set_field("server", self.resolve_server) - - @staticmethod - def resolve_id(level: Level, *_): - return level.id - - @staticmethod - def resolve_name(level: Level, *_): - return level.name - - @staticmethod - def resolve_color(level: Level, *_): - return level.color - - @staticmethod - def resolve_min_xp(level: Level, *_): - return level.min_xp - - @staticmethod - def resolve_permissions(level: Level, *_): - return level.permissions - - @staticmethod - def resolve_server(level: Level, *_): - return level.server + self.set_field("id", lambda x, *_: x.id) + self.set_field( + "iconURL", + lambda x, *_: "https://cdn.discordapp.com/emojis/1170348708894875659.webp?size=32&quality=lossless", + ) + self.set_field("name", lambda x, *_: x.name) + self.set_field("color", lambda x, *_: x.color) + self.set_field("minXp", lambda x, *_: x.min_xp) + self.set_field("permissions", lambda x, *_: x.permissions) + self.set_field("server", lambda x, *_: x.server) diff --git a/web/src/app/models/graphql/queries.model.ts b/web/src/app/models/graphql/queries.model.ts index a387b22e..afa3ab68 100644 --- a/web/src/app/models/graphql/queries.model.ts +++ b/web/src/app/models/graphql/queries.model.ts @@ -155,6 +155,7 @@ export class Queries { levelCount levels(filter: $filter, page: $page, sort: $sort) { id + iconURL name color minXp diff --git a/web/src/app/modules/view/server/levels/components/levels/levels.component.html b/web/src/app/modules/view/server/levels/components/levels/levels.component.html index 0af4809d..1668d850 100644 --- a/web/src/app/modules/view/server/levels/components/levels/levels.component.html +++ b/web/src/app/modules/view/server/levels/components/levels/levels.component.html @@ -1,238 +1,251 @@