Added history tables to graphql #246

This commit is contained in:
2023-03-07 17:07:50 +01:00
parent 325a17b5a8
commit 69ce659328
40 changed files with 1046 additions and 67 deletions

View File

@@ -0,0 +1,49 @@
from cpl_core.dependency_injection import ServiceProviderABC
from cpl_discord.service import DiscordBotServiceABC
from bot_data.abc.history_table_abc import HistoryTableABC
class AutoRoleHistory(HistoryTableABC):
def __init__(
self,
server: int,
channel_id: int,
dc_message_id: int,
deleted: bool,
date_from: str,
date_to: str,
id=0,
):
HistoryTableABC.__init__(self)
self._auto_role_id = id
self._server = server
self._discord_channel_id = channel_id
self._discord_message_id = dc_message_id
self._deleted = deleted
self._date_from = date_from
self._date_to = date_to
@property
def id(self) -> int:
return self._auto_role_id
@property
def server(self) -> int:
return self._server
@property
def discord_channel_id(self) -> int:
return self._discord_channel_id
@property
@ServiceProviderABC.inject
def discord_channel_name(self, bot: DiscordBotServiceABC) -> str:
channel = bot.get_channel(self.discord_channel_id)
return None if channel is None else channel.name
@property
def discord_message_id(self) -> int:
return self._discord_message_id

View File

@@ -0,0 +1,48 @@
from cpl_core.dependency_injection import ServiceProviderABC
from cpl_discord.service import DiscordBotServiceABC
from bot_data.abc.history_table_abc import HistoryTableABC
class AutoRoleRuleHistory(HistoryTableABC):
def __init__(
self,
auto_role: int,
discord_emoji_name: str,
discord_role_id: int,
deleted: bool,
date_from: str,
date_to: str,
id=0,
):
HistoryTableABC.__init__(self)
self._auto_role_rule_id = id
self._auto_role = auto_role
self._discord_emoji_name = discord_emoji_name
self._discord_role_id = discord_role_id
self._deleted = deleted
self._date_from = date_from
self._date_to = date_to
@property
def id(self) -> int:
return self._auto_role_rule_id
@property
def auto_role(self) -> int:
return self._auto_role
@property
def emoji_name(self) -> str:
return self._discord_emoji_name
@property
def role_id(self) -> int:
return self._discord_role_id
@property
@ServiceProviderABC.inject
def role_name(self, bot: DiscordBotServiceABC) -> str:
guild = bot.get_guild(self.auto_role.server.discord_id)
return guild.get_role(self.role_id).name

View File

@@ -0,0 +1,72 @@
from cpl_core.dependency_injection import ServiceProviderABC
from cpl_discord.service import DiscordBotServiceABC
from bot_data.abc.history_table_abc import HistoryTableABC
class ClientHistory(HistoryTableABC):
def __init__(
self,
dc_id: int,
smc: int,
rmc: int,
dmc: int,
rcc: int,
muc: int,
server: int,
deleted: bool,
date_from: str,
date_to: str,
id=0,
):
HistoryTableABC.__init__(self)
self._client_id = id
self._discord_client_id = dc_id
self._sent_message_count = smc
self._received_message_count = rmc
self._deleted_message_count = dmc
self._received_command_count = rcc
self._moved_users_count = muc
self._server = server
self._deleted = deleted
self._date_from = date_from
self._date_to = date_to
@property
def id(self) -> int:
return self._client_id
@property
def discord_id(self) -> int:
return self._discord_client_id
@property
@ServiceProviderABC.inject
def name(self, bot: DiscordBotServiceABC) -> str:
return bot.user.name
@property
def sent_message_count(self) -> int:
return self._sent_message_count
@property
def received_message_count(self) -> int:
return self._received_message_count
@property
def deleted_message_count(self) -> int:
return self._deleted_message_count
@property
def received_command_count(self) -> int:
return self._received_command_count
@property
def moved_users_count(self) -> int:
return self._moved_users_count
@property
def server(self) -> int:
return self._server

View File

@@ -0,0 +1,28 @@
from bot_data.abc.history_table_abc import HistoryTableABC
class KnownUserHistory(HistoryTableABC):
def __init__(
self,
dc_id: int,
deleted: bool,
date_from: str,
date_to: str,
id=0,
):
HistoryTableABC.__init__(self)
self._known_user_id = id
self._discord_id = dc_id
self._deleted = deleted
self._date_from = date_from
self._date_to = date_to
@property
def id(self) -> int:
return self._known_user_id
@property
def discord_id(self) -> int:
return self._discord_id

View File

@@ -25,6 +25,7 @@ class LevelHistory(HistoryTableABC):
self._min_xp = min_xp
self._permissions = permissions
self._server = server
self._deleted = deleted
self._date_from = date_from
self._date_to = date_to

View File

@@ -0,0 +1,43 @@
from cpl_core.dependency_injection import ServiceProviderABC
from cpl_discord.service import DiscordBotServiceABC
from bot_data.abc.history_table_abc import HistoryTableABC
class ServerHistory(HistoryTableABC):
def __init__(
self,
dc_id: int,
deleted: bool,
date_from: str,
date_to: str,
id=0,
):
HistoryTableABC.__init__(self)
self._server_id = id
self._discord_server_id = dc_id
self._deleted = deleted
self._date_from = date_from
self._date_to = date_to
@property
def id(self) -> int:
return self._server_id
@property
def discord_id(self) -> int:
return self._discord_server_id
@property
@ServiceProviderABC.inject
def name(self, bot: DiscordBotServiceABC) -> str:
guild = bot.get_guild(self.discord_id)
return None if guild is None else guild.name
@property
@ServiceProviderABC.inject
def icon_url(self, bot: DiscordBotServiceABC) -> str:
guild = bot.get_guild(self.discord_id)
return None if guild is None else guild.icon.url

View File

@@ -0,0 +1,65 @@
from cpl_core.dependency_injection import ServiceProviderABC
from cpl_query.extension import List
from bot_data.abc.history_table_abc import HistoryTableABC
class UserHistory(HistoryTableABC):
def __init__(
self,
dc_id: int,
xp: int,
server: int,
deleted: bool,
date_from: str,
date_to: str,
id=0,
):
HistoryTableABC.__init__(self)
self._user_id = id
self._discord_id = dc_id
self._xp = xp
self._server = server
self._deleted = deleted
self._date_from = date_from
self._date_to = date_to
@property
def id(self) -> int:
return self._user_id
@property
def discord_id(self) -> int:
return self._discord_id
@property
def xp(self) -> int:
return self._xp
@property
def server(self) -> int:
return self._server
@property
@ServiceProviderABC.inject
def left_server(
self,
services: ServiceProviderABC,
) -> bool:
from bot_data.abc.user_joined_server_repository_abc import UserJoinedServerRepositoryABC
ujs: UserJoinedServerRepositoryABC = services.get_service(UserJoinedServerRepositoryABC)
return ujs.find_active_user_joined_server_by_user_id(self.id) is None
@property
@ServiceProviderABC.inject
def game_idents(
self,
services: ServiceProviderABC,
) -> List["UserGameIdent"]:
from bot_data.abc.user_game_ident_repository_abc import UserGameIdentRepositoryABC
game_idents_repo: UserGameIdentRepositoryABC = services.get_service(UserGameIdentRepositoryABC)
return game_idents_repo.get_user_game_idents_by_user_id(self.id)

View File

@@ -0,0 +1,54 @@
from datetime import datetime
from bot_data.abc.history_table_abc import HistoryTableABC
class UserJoinedGameServerHistory(HistoryTableABC):
def __init__(
self,
user: int,
game_server: int,
joined_on: datetime,
leaved_on: datetime,
deleted: bool,
date_from: str,
date_to: str,
id=0,
):
HistoryTableABC.__init__(self)
self._id = id
self._user = user
self._game_server = game_server
self._joined_on = joined_on
self._leaved_on = leaved_on
self._deleted = deleted
self._date_from = date_from
self._date_to = date_to
@property
def id(self) -> int:
return self._id
@property
def user(self) -> int:
return self._user
@property
def game_server(self) -> int:
return self._game_server
@property
def time(self) -> float:
if self._leaved_on is None or self._joined_on is None:
return 0
return round((self.leaved_on - self.joined_on).total_seconds() / 3600, 2)
@property
def joined_on(self) -> datetime:
return self._joined_on
@property
def leaved_on(self) -> datetime:
return self._leaved_on

View File

@@ -0,0 +1,42 @@
from datetime import datetime
from bot_data.abc.history_table_abc import HistoryTableABC
class UserJoinedServerHistory(HistoryTableABC):
def __init__(
self,
user: int,
joined_on: datetime,
leaved_on: datetime,
deleted: bool,
date_from: str,
date_to: str,
id=0,
):
HistoryTableABC.__init__(self)
self._join_id = id
self._user = user
self._joined_on = joined_on
self._leaved_on = leaved_on
self._deleted = deleted
self._date_from = date_from
self._date_to = date_to
@property
def id(self) -> int:
return self._join_id
@property
def user(self) -> int:
return self._user
@property
def joined_on(self) -> datetime:
return self._joined_on
@property
def leaved_on(self) -> datetime:
return self._leaved_on

View File

@@ -0,0 +1,62 @@
from datetime import datetime
from cpl_core.dependency_injection import ServiceProviderABC
from cpl_discord.service import DiscordBotServiceABC
from bot_data.abc.history_table_abc import HistoryTableABC
class UserJoinedVoiceChannelHistory(HistoryTableABC):
def __init__(
self,
user: int,
channel_id: int,
joined_on: datetime,
leaved_on: datetime,
deleted: bool,
date_from: str,
date_to: str,
id=0,
):
HistoryTableABC.__init__(self)
self._join_id = id
self._channel_id = channel_id
self._user = user
self._joined_on = joined_on
self._leaved_on = leaved_on
self._deleted = deleted
self._date_from = date_from
self._date_to = date_to
@property
def id(self) -> int:
return self._join_id
@property
def channel_id(self) -> int:
return self._channel_id
@property
@ServiceProviderABC.inject
def channel_name(self, bot: DiscordBotServiceABC) -> str:
return bot.get_channel(self.channel_id).name
@property
def user(self) -> int:
return self._user
@property
def time(self) -> float:
if self._leaved_on is None or self._joined_on is None:
return 0
return round((self.leaved_on - self.joined_on).total_seconds() / 3600, 2)
@property
def joined_on(self) -> datetime:
return self._joined_on
@property
def leaved_on(self) -> datetime:
return self._leaved_on