Added server list to dashboard #72
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
from typing import Optional
|
||||
|
||||
from bot_api.abc.dto_abc import DtoABC
|
||||
|
||||
|
||||
@@ -8,7 +10,8 @@ class ServerDTO(DtoABC):
|
||||
server_id: int,
|
||||
discord_id: int,
|
||||
name: str,
|
||||
member_count: int
|
||||
member_count: int,
|
||||
icon_url: Optional[str]
|
||||
|
||||
):
|
||||
DtoABC.__init__(self)
|
||||
@@ -17,6 +20,7 @@ class ServerDTO(DtoABC):
|
||||
self._discord_id = discord_id
|
||||
self._name = name
|
||||
self._member_count = member_count
|
||||
self._icon_url = icon_url
|
||||
|
||||
@property
|
||||
def server_id(self) -> int:
|
||||
@@ -34,11 +38,15 @@ class ServerDTO(DtoABC):
|
||||
def member_count(self) -> int:
|
||||
return self._member_count
|
||||
|
||||
@property
|
||||
def icon_url(self) -> Optional[str]:
|
||||
return self._icon_url
|
||||
|
||||
def from_dict(self, values: dict):
|
||||
self._server_id = int(values['serverId'])
|
||||
self._discord_id = int(values['discordId'])
|
||||
self._name = values['name']
|
||||
self._member_count = int(values['memberCount'])
|
||||
self._icon_url = int(values['iconURL'])
|
||||
|
||||
def to_dict(self) -> dict:
|
||||
return {
|
||||
@@ -46,4 +54,5 @@ class ServerDTO(DtoABC):
|
||||
'discordId': self._discord_id,
|
||||
'name': self._name,
|
||||
'memberCount': self._member_count,
|
||||
'iconURL': self._icon_url,
|
||||
}
|
||||
|
@@ -33,9 +33,12 @@ class DiscordService:
|
||||
|
||||
async def get_all_servers(self) -> List[ServerDTO]:
|
||||
servers = self._servers.get_servers()
|
||||
return servers.select(
|
||||
lambda x: ServerTransformer.to_dto(x, self._bot.get_guild(x.discord_server_id).name, self._bot.get_guild(x.discord_server_id).member_count)
|
||||
)
|
||||
return servers.select(lambda x: ServerTransformer.to_dto(
|
||||
x,
|
||||
self._bot.get_guild(x.discord_server_id).name,
|
||||
self._bot.get_guild(x.discord_server_id).member_count,
|
||||
self._bot.get_guild(x.discord_server_id).icon
|
||||
))
|
||||
|
||||
async def get_all_servers_by_user(self) -> List[ServerDTO]:
|
||||
token = self._auth.get_decoded_token_from_request()
|
||||
@@ -50,9 +53,12 @@ class DiscordService:
|
||||
user_from_db = self._users.find_user_by_id(0 if user.user_id is None else user.user_id)
|
||||
servers = self._servers.get_servers().where(lambda x: user_from_db is not None and x.server_id == user_from_db.server.server_id)
|
||||
|
||||
return servers.select(
|
||||
lambda x: ServerTransformer.to_dto(x, self._bot.get_guild(x.discord_server_id).name, self._bot.get_guild(x.discord_server_id).member_count)
|
||||
)
|
||||
return servers.select(lambda x: ServerTransformer.to_dto(
|
||||
x,
|
||||
self._bot.get_guild(x.discord_server_id).name,
|
||||
self._bot.get_guild(x.discord_server_id).member_count,
|
||||
self._bot.get_guild(x.discord_server_id).icon
|
||||
))
|
||||
|
||||
async def get_filtered_servers_async(self, criteria: ServerSelectCriteria) -> ServerFilteredResultDTO:
|
||||
token = self._auth.get_decoded_token_from_request()
|
||||
@@ -68,9 +74,17 @@ class DiscordService:
|
||||
servers = servers.where(lambda x: user_from_db is not None and x.server_id == user_from_db.server.server_id)
|
||||
|
||||
result = servers.select(
|
||||
lambda x: ServerTransformer.to_dto(x, self._bot.get_guild(x.discord_server_id).name, self._bot.get_guild(x.discord_server_id).member_count)
|
||||
lambda x: ServerTransformer.to_dto(
|
||||
x,
|
||||
self._bot.get_guild(x.discord_server_id).name,
|
||||
self._bot.get_guild(x.discord_server_id).member_count,
|
||||
self._bot.get_guild(x.discord_server_id).icon
|
||||
)
|
||||
)
|
||||
|
||||
if criteria.name is not None and criteria.name != '':
|
||||
result = result.where(lambda x: criteria.name.lower() in x.name.lower() or x.name.lower() == criteria.name.lower())
|
||||
|
||||
return ServerFilteredResultDTO(
|
||||
List(ServerDTO, result),
|
||||
filtered_result.total_count
|
||||
|
@@ -1,3 +1,7 @@
|
||||
from typing import Optional
|
||||
|
||||
import discord
|
||||
|
||||
from bot_api.abc.transformer_abc import TransformerABC
|
||||
from bot_api.model.discord.server_dto import ServerDTO
|
||||
from bot_data.model.server import Server
|
||||
@@ -10,10 +14,11 @@ class ServerTransformer(TransformerABC):
|
||||
return Server(dto.discord_id)
|
||||
|
||||
@staticmethod
|
||||
def to_dto(db: Server, name: str, member_count: int) -> ServerDTO:
|
||||
def to_dto(db: Server, name: str, member_count: int, icon_url: Optional[discord.Asset]) -> ServerDTO:
|
||||
return ServerDTO(
|
||||
db.server_id,
|
||||
db.discord_server_id,
|
||||
name,
|
||||
member_count,
|
||||
icon_url.url if icon_url is not None else None,
|
||||
)
|
||||
|
@@ -35,9 +35,6 @@ class ServerRepositoryService(ServerRepositoryABC):
|
||||
self._logger.trace(__name__, f'Send SQL command: {Server.get_select_all_string()}')
|
||||
query = servers
|
||||
|
||||
if criteria.name is not None and criteria.name != '':
|
||||
query = query.where(lambda x: criteria.name in x.first_name or x.first_name == criteria.name)
|
||||
|
||||
# sort
|
||||
if criteria.sort_column is not None and criteria.sort_column != '' and criteria.sort_direction is not None and criteria.sort_direction:
|
||||
crit_sort_direction = criteria.sort_direction.lower()
|
||||
|
Reference in New Issue
Block a user