Added technician config queries #127_config_in_wi
This commit is contained in:
parent
ec39fedf42
commit
3873c1245e
@ -30,6 +30,10 @@ class TechnicianConfig(TableABC, ConfigurationModelABC):
|
|||||||
self._created_at = created_at if created_at is not None else self._created_at
|
self._created_at = created_at if created_at is not None else self._created_at
|
||||||
self._modified_at = modified_at if modified_at is not None else self._modified_at
|
self._modified_at = modified_at if modified_at is not None else self._modified_at
|
||||||
|
|
||||||
|
@property
|
||||||
|
def id(self) -> int:
|
||||||
|
return self._id
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def help_command_reference_url(self) -> str:
|
def help_command_reference_url(self) -> str:
|
||||||
return self._help_command_reference_url
|
return self._help_command_reference_url
|
||||||
|
58
kdb-bot/src/bot_data/model/technician_config_history.py
Normal file
58
kdb-bot/src/bot_data/model/technician_config_history.py
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
from bot_data.abc.history_table_abc import HistoryTableABC
|
||||||
|
|
||||||
|
|
||||||
|
class TechnicianConfigHistory(HistoryTableABC):
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
help_command_reference_url: str,
|
||||||
|
wait_for_restart: int,
|
||||||
|
wait_for_shutdown: int,
|
||||||
|
cache_max_messages: int,
|
||||||
|
deleted: bool,
|
||||||
|
date_from: str,
|
||||||
|
date_to: str,
|
||||||
|
id=0,
|
||||||
|
):
|
||||||
|
HistoryTableABC.__init__(self)
|
||||||
|
|
||||||
|
self._id = id
|
||||||
|
self._help_command_reference_url = help_command_reference_url
|
||||||
|
self._wait_for_restart = wait_for_restart
|
||||||
|
self._wait_for_shutdown = wait_for_shutdown
|
||||||
|
self._cache_max_messages = cache_max_messages
|
||||||
|
|
||||||
|
self._deleted = deleted
|
||||||
|
self._date_from = date_from
|
||||||
|
self._date_to = date_to
|
||||||
|
|
||||||
|
@property
|
||||||
|
def help_command_reference_url(self) -> str:
|
||||||
|
return self._help_command_reference_url
|
||||||
|
|
||||||
|
@help_command_reference_url.setter
|
||||||
|
def help_command_reference_url(self, value: str):
|
||||||
|
self._help_command_reference_url = value
|
||||||
|
|
||||||
|
@property
|
||||||
|
def wait_for_restart(self) -> int:
|
||||||
|
return self._wait_for_restart
|
||||||
|
|
||||||
|
@wait_for_restart.setter
|
||||||
|
def wait_for_restart(self, value: int):
|
||||||
|
self._wait_for_restart = value
|
||||||
|
|
||||||
|
@property
|
||||||
|
def wait_for_shutdown(self) -> int:
|
||||||
|
return self._wait_for_shutdown
|
||||||
|
|
||||||
|
@wait_for_shutdown.setter
|
||||||
|
def wait_for_shutdown(self, value: int):
|
||||||
|
self._wait_for_shutdown = value
|
||||||
|
|
||||||
|
@property
|
||||||
|
def cache_max_messages(self) -> int:
|
||||||
|
return self._cache_max_messages
|
||||||
|
|
||||||
|
@cache_max_messages.setter
|
||||||
|
def cache_max_messages(self, value: int):
|
||||||
|
self._cache_max_messages = value
|
@ -18,6 +18,10 @@ class TechnicianIdConfig(TableABC):
|
|||||||
self._created_at = created_at if created_at is not None else self._created_at
|
self._created_at = created_at if created_at is not None else self._created_at
|
||||||
self._modified_at = modified_at if modified_at is not None else self._modified_at
|
self._modified_at = modified_at if modified_at is not None else self._modified_at
|
||||||
|
|
||||||
|
@property
|
||||||
|
def id(self) -> int:
|
||||||
|
return self._id
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def technician_id(self) -> str:
|
def technician_id(self) -> str:
|
||||||
return self._technician_id
|
return self._technician_id
|
||||||
|
28
kdb-bot/src/bot_data/model/technician_id_config_history.py
Normal file
28
kdb-bot/src/bot_data/model/technician_id_config_history.py
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
from bot_data.abc.history_table_abc import HistoryTableABC
|
||||||
|
|
||||||
|
|
||||||
|
class TechnicianIdConfigHistory(HistoryTableABC):
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
technician_id: int,
|
||||||
|
deleted: bool,
|
||||||
|
date_from: str,
|
||||||
|
date_to: str,
|
||||||
|
id=0,
|
||||||
|
):
|
||||||
|
HistoryTableABC.__init__(self)
|
||||||
|
|
||||||
|
self._id = id
|
||||||
|
self._technician_id = technician_id
|
||||||
|
|
||||||
|
self._deleted = deleted
|
||||||
|
self._date_from = date_from
|
||||||
|
self._date_to = date_to
|
||||||
|
|
||||||
|
@property
|
||||||
|
def technician_id(self) -> int:
|
||||||
|
return self._technician_id
|
||||||
|
|
||||||
|
@technician_id.setter
|
||||||
|
def technician_id(self, value: int):
|
||||||
|
self._technician_id = value
|
@ -18,6 +18,10 @@ class TechnicianPingUrlConfig(TableABC):
|
|||||||
self._created_at = created_at if created_at is not None else self._created_at
|
self._created_at = created_at if created_at is not None else self._created_at
|
||||||
self._modified_at = modified_at if modified_at is not None else self._modified_at
|
self._modified_at = modified_at if modified_at is not None else self._modified_at
|
||||||
|
|
||||||
|
@property
|
||||||
|
def id(self) -> int:
|
||||||
|
return self._id
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def ping_url(self) -> str:
|
def ping_url(self) -> str:
|
||||||
return self._ping_url
|
return self._ping_url
|
||||||
|
@ -0,0 +1,28 @@
|
|||||||
|
from bot_data.abc.history_table_abc import HistoryTableABC
|
||||||
|
|
||||||
|
|
||||||
|
class TechnicianPingUrlConfigHistory(HistoryTableABC):
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
url: str,
|
||||||
|
deleted: bool,
|
||||||
|
date_from: str,
|
||||||
|
date_to: str,
|
||||||
|
id=0,
|
||||||
|
):
|
||||||
|
HistoryTableABC.__init__(self)
|
||||||
|
|
||||||
|
self._id = id
|
||||||
|
self._url = url
|
||||||
|
|
||||||
|
self._deleted = deleted
|
||||||
|
self._date_from = date_from
|
||||||
|
self._date_to = date_to
|
||||||
|
|
||||||
|
@property
|
||||||
|
def url(self) -> str:
|
||||||
|
return self._url
|
||||||
|
|
||||||
|
@url.setter
|
||||||
|
def url(self, value: str):
|
||||||
|
self._url = value
|
@ -42,6 +42,10 @@ from bot_graphql.queries.level_history_query import LevelHistoryQuery
|
|||||||
from bot_graphql.queries.level_query import LevelQuery
|
from bot_graphql.queries.level_query import LevelQuery
|
||||||
from bot_graphql.queries.server_history_query import ServerHistoryQuery
|
from bot_graphql.queries.server_history_query import ServerHistoryQuery
|
||||||
from bot_graphql.queries.server_query import ServerQuery
|
from bot_graphql.queries.server_query import ServerQuery
|
||||||
|
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
|
||||||
|
from bot_graphql.queries.technician_ping_url_config_history_query import TechnicianPingUrlConfigHistoryQuery
|
||||||
from bot_graphql.queries.user_history_query import UserHistoryQuery
|
from bot_graphql.queries.user_history_query import UserHistoryQuery
|
||||||
from bot_graphql.queries.user_joined_game_server_history_query import UserJoinedGameServerHistoryQuery
|
from bot_graphql.queries.user_joined_game_server_history_query import UserJoinedGameServerHistoryQuery
|
||||||
from bot_graphql.queries.user_joined_game_server_query import UserJoinedGameServerQuery
|
from bot_graphql.queries.user_joined_game_server_query import UserJoinedGameServerQuery
|
||||||
@ -83,6 +87,10 @@ class GraphQLModule(ModuleABC):
|
|||||||
services.add_transient(QueryABC, LevelQuery)
|
services.add_transient(QueryABC, LevelQuery)
|
||||||
services.add_transient(QueryABC, ServerHistoryQuery)
|
services.add_transient(QueryABC, ServerHistoryQuery)
|
||||||
services.add_transient(QueryABC, ServerQuery)
|
services.add_transient(QueryABC, ServerQuery)
|
||||||
|
services.add_transient(QueryABC, TechnicianConfigQuery)
|
||||||
|
services.add_transient(QueryABC, TechnicianConfigHistoryQuery)
|
||||||
|
services.add_transient(QueryABC, TechnicianPingUrlConfigHistoryQuery)
|
||||||
|
services.add_transient(QueryABC, TechnicianIdConfigHistoryQuery)
|
||||||
services.add_transient(QueryABC, GameServerQuery)
|
services.add_transient(QueryABC, GameServerQuery)
|
||||||
services.add_transient(QueryABC, UserHistoryQuery)
|
services.add_transient(QueryABC, UserHistoryQuery)
|
||||||
services.add_transient(QueryABC, UserQuery)
|
services.add_transient(QueryABC, UserQuery)
|
||||||
|
62
kdb-bot/src/bot_graphql/model/config_technician.gql
Normal file
62
kdb-bot/src/bot_graphql/model/config_technician.gql
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
type TechnicianConfig implements TableWithHistoryQuery {
|
||||||
|
id: ID
|
||||||
|
helpCommandReferenceUrl: String
|
||||||
|
waitForRestart: Int
|
||||||
|
waitForShutdown: Int
|
||||||
|
cacheMaxMessages: Int
|
||||||
|
pingURLs: [String]
|
||||||
|
technicianIds: [String]
|
||||||
|
|
||||||
|
createdAt: String
|
||||||
|
modifiedAt: String
|
||||||
|
|
||||||
|
history: [TechnicianConfigHistory]
|
||||||
|
pingURLHistory: [TechnicianPingUrlConfigHistory]
|
||||||
|
technicianIdHistory: [TechnicianIdConfigHistory]
|
||||||
|
}
|
||||||
|
|
||||||
|
type TechnicianConfigHistory implements HistoryTableQuery {
|
||||||
|
id: ID
|
||||||
|
helpCommandReferenceUrl: String
|
||||||
|
waitForRestart: Int
|
||||||
|
waitForShutdown: Int
|
||||||
|
cacheMaxMessages: Int
|
||||||
|
|
||||||
|
deleted: Boolean
|
||||||
|
dateFrom: String
|
||||||
|
dateTo: String
|
||||||
|
}
|
||||||
|
|
||||||
|
type TechnicianPingUrlConfigHistory implements HistoryTableQuery {
|
||||||
|
id: ID
|
||||||
|
url: String
|
||||||
|
|
||||||
|
deleted: Boolean
|
||||||
|
dateFrom: String
|
||||||
|
dateTo: String
|
||||||
|
}
|
||||||
|
|
||||||
|
type TechnicianIdConfigHistory implements HistoryTableQuery {
|
||||||
|
id: ID
|
||||||
|
technicianId: String
|
||||||
|
|
||||||
|
deleted: Boolean
|
||||||
|
dateFrom: String
|
||||||
|
dateTo: String
|
||||||
|
}
|
||||||
|
|
||||||
|
type TechnicianConfigMutation {
|
||||||
|
createTechnicianConfig(input: TechnicianConfigInput!): TechnicianConfig
|
||||||
|
updateTechnicianConfig(input: TechnicianConfigInput!): TechnicianConfig
|
||||||
|
deleteTechnicianConfig(id: ID): TechnicianConfig
|
||||||
|
}
|
||||||
|
|
||||||
|
input TechnicianConfigInput {
|
||||||
|
id: ID
|
||||||
|
helpCommandReferenceUrl: String
|
||||||
|
waitForRestart: Int
|
||||||
|
waitForShutdown: Int
|
||||||
|
cacheMaxMessages: Int
|
||||||
|
pingURLs: [String]
|
||||||
|
technicianIds: [String]
|
||||||
|
}
|
@ -37,5 +37,7 @@ type Query {
|
|||||||
achievementAttributes: [AchievementAttribute]
|
achievementAttributes: [AchievementAttribute]
|
||||||
achievementOperators: [String]
|
achievementOperators: [String]
|
||||||
|
|
||||||
|
technicianConfig: TechnicianConfig
|
||||||
|
|
||||||
guilds(filter: GuildFilter): [Guild]
|
guilds(filter: GuildFilter): [Guild]
|
||||||
}
|
}
|
@ -0,0 +1,66 @@
|
|||||||
|
from cpl_core.database.context import DatabaseContextABC
|
||||||
|
from cpl_discord.service import DiscordBotServiceABC
|
||||||
|
|
||||||
|
from bot_data.abc.server_repository_abc import ServerRepositoryABC
|
||||||
|
from bot_data.abc.technician_config_repository_abc import TechnicianConfigRepositoryABC
|
||||||
|
from bot_data.model.technician_config import TechnicianConfig
|
||||||
|
from bot_data.model.user_role_enum import UserRoleEnum
|
||||||
|
from bot_graphql.abc.query_abc import QueryABC
|
||||||
|
|
||||||
|
|
||||||
|
class TechnicianConfigMutation(QueryABC):
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
bot: DiscordBotServiceABC,
|
||||||
|
servers: ServerRepositoryABC,
|
||||||
|
technician_configs: TechnicianConfigRepositoryABC,
|
||||||
|
db: DatabaseContextABC,
|
||||||
|
):
|
||||||
|
QueryABC.__init__(self, "TechnicianConfigMutation")
|
||||||
|
|
||||||
|
self._bot = bot
|
||||||
|
self._servers = servers
|
||||||
|
self._technician_configs = technician_configs
|
||||||
|
self._db = db
|
||||||
|
|
||||||
|
self.set_field("createTechnicianConfig", self.resolve_create_TechnicianConfig)
|
||||||
|
self.set_field("updateTechnicianConfig", self.resolve_update_TechnicianConfig)
|
||||||
|
self.set_field("deleteTechnicianConfig", self.resolve_delete_TechnicianConfig)
|
||||||
|
|
||||||
|
def resolve_create_technician_config(self, *_, input: dict):
|
||||||
|
if self._technician_configs.does_technician_config_exists():
|
||||||
|
return None
|
||||||
|
|
||||||
|
technician_config = TechnicianConfig(
|
||||||
|
input["helpCommandReferenceUrl"],
|
||||||
|
input["waitForRestart"],
|
||||||
|
input["waitForShutdown"],
|
||||||
|
input["cacheMaxMessages"],
|
||||||
|
input["pingURLs"],
|
||||||
|
input["technicianIds"],
|
||||||
|
)
|
||||||
|
self._technician_configs.add_technician_config(technician_config)
|
||||||
|
self._db.save_changes()
|
||||||
|
|
||||||
|
return self._technician_configs.get_technician_config()
|
||||||
|
|
||||||
|
def resolve_update_technician_config(self, *_, input: dict):
|
||||||
|
technician_config = self._technician_configs.get_technician_config()
|
||||||
|
self._can_user_mutate_data(technician_config, UserRoleEnum.admin)
|
||||||
|
|
||||||
|
technician_config.name = input["name"] if "name" in input else technician_config.name
|
||||||
|
|
||||||
|
self._technician_configs.update_TechnicianConfig(technician_config)
|
||||||
|
self._db.save_changes()
|
||||||
|
|
||||||
|
technician_config = self._technician_configs.get_TechnicianConfig_by_id(input["id"])
|
||||||
|
return technician_config
|
||||||
|
|
||||||
|
def resolve_delete_technician_config(self, *_, id: int):
|
||||||
|
technician_config = self._technician_configs.get_TechnicianConfig_by_id(id)
|
||||||
|
self._can_user_mutate_data(technician_config.server, UserRoleEnum.admin)
|
||||||
|
|
||||||
|
self._technician_configs.delete_TechnicianConfig(technician_config)
|
||||||
|
self._db.save_changes()
|
||||||
|
|
||||||
|
return technician_config
|
@ -0,0 +1,11 @@
|
|||||||
|
from bot_graphql.abc.history_query_abc import HistoryQueryABC
|
||||||
|
|
||||||
|
|
||||||
|
class TechnicianConfigHistoryQuery(HistoryQueryABC):
|
||||||
|
def __init__(self):
|
||||||
|
HistoryQueryABC.__init__(self, "TechnicianConfig")
|
||||||
|
|
||||||
|
self.set_field("helpCommandReferenceUrl", lambda config, *_: config.help_command_reference_url)
|
||||||
|
self.set_field("waitForRestart", lambda config, *_: config.wait_for_restart)
|
||||||
|
self.set_field("waitForShutdown", lambda config, *_: config.wait_for_shutdown)
|
||||||
|
self.set_field("cacheMaxMessages", lambda config, *_: config.cache_max_messages)
|
57
kdb-bot/src/bot_graphql/queries/technician_config_query.py
Normal file
57
kdb-bot/src/bot_graphql/queries/technician_config_query.py
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
from cpl_core.database.context import DatabaseContextABC
|
||||||
|
from cpl_query.extension import List
|
||||||
|
|
||||||
|
from bot_data.abc.table_with_id_abc import TableWithIdABC
|
||||||
|
from bot_data.model.technician_config_history import TechnicianConfigHistory
|
||||||
|
from bot_data.model.technician_id_config_history import TechnicianIdConfigHistory
|
||||||
|
from bot_data.model.technician_ping_url_config_history import TechnicianPingUrlConfigHistory
|
||||||
|
from bot_graphql.abc.data_query_with_history_abc import DataQueryWithHistoryABC
|
||||||
|
|
||||||
|
|
||||||
|
class TechnicianConfigQuery(DataQueryWithHistoryABC):
|
||||||
|
def __init__(self, db: DatabaseContextABC):
|
||||||
|
DataQueryWithHistoryABC.__init__(self, "TechnicianConfig", "CFG_TechnicianHistory", TechnicianConfigHistory, db)
|
||||||
|
|
||||||
|
self.set_field("helpCommandReferenceUrl", lambda config, *_: config.help_command_reference_url)
|
||||||
|
self.set_field("waitForRestart", lambda config, *_: config.wait_for_restart)
|
||||||
|
self.set_field("waitForShutdown", lambda config, *_: config.wait_for_shutdown)
|
||||||
|
self.set_field("cacheMaxMessages", lambda config, *_: config.cache_max_messages)
|
||||||
|
self.set_field("pingURLs", lambda config, *_: config.ping_urls)
|
||||||
|
self.set_field("technicianIds", lambda config, *_: config.technician_ids)
|
||||||
|
|
||||||
|
self.set_field("pingURLHistory", self.resolve_ping_url_history)
|
||||||
|
self.set_field("technicianIdHistory", self.resolve_technician_id_history)
|
||||||
|
|
||||||
|
def resolve_ping_url_history(self, entry: TableWithIdABC, *_):
|
||||||
|
history = List(TechnicianPingUrlConfigHistory)
|
||||||
|
|
||||||
|
results = self._db.select(
|
||||||
|
f"""
|
||||||
|
SELECT *
|
||||||
|
FROM CFG_TechnicianPingUrlsHistory
|
||||||
|
WHERE Id = {entry.id}
|
||||||
|
ORDER BY DateTo DESC;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
for result in results:
|
||||||
|
history.add(TechnicianPingUrlConfigHistory(*result[1:], result[0]))
|
||||||
|
|
||||||
|
return history
|
||||||
|
|
||||||
|
def resolve_technician_id_history(self, entry: TableWithIdABC, *_):
|
||||||
|
history = List(TechnicianIdConfigHistory)
|
||||||
|
|
||||||
|
results = self._db.select(
|
||||||
|
f"""
|
||||||
|
SELECT *
|
||||||
|
FROM CFG_TechnicianIdsHistory
|
||||||
|
WHERE Id = {entry.id}
|
||||||
|
ORDER BY DateTo DESC;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
for result in results:
|
||||||
|
history.add(TechnicianIdConfigHistory(*result[1:], result[0]))
|
||||||
|
|
||||||
|
return history
|
@ -0,0 +1,8 @@
|
|||||||
|
from bot_graphql.abc.history_query_abc import HistoryQueryABC
|
||||||
|
|
||||||
|
|
||||||
|
class TechnicianIdConfigHistoryQuery(HistoryQueryABC):
|
||||||
|
def __init__(self):
|
||||||
|
HistoryQueryABC.__init__(self, "TechnicianIdConfig")
|
||||||
|
|
||||||
|
self.set_field("technicianId", lambda config, *_: config.technicianId)
|
@ -0,0 +1,8 @@
|
|||||||
|
from bot_graphql.abc.history_query_abc import HistoryQueryABC
|
||||||
|
|
||||||
|
|
||||||
|
class TechnicianPingUrlConfigHistoryQuery(HistoryQueryABC):
|
||||||
|
def __init__(self):
|
||||||
|
HistoryQueryABC.__init__(self, "TechnicianPingUrlConfig")
|
||||||
|
|
||||||
|
self.set_field("url", lambda config, *_: config.ping_url)
|
@ -7,6 +7,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.known_user_repository_abc import KnownUserRepositoryABC
|
||||||
from bot_data.abc.level_repository_abc import LevelRepositoryABC
|
from bot_data.abc.level_repository_abc import LevelRepositoryABC
|
||||||
from bot_data.abc.server_repository_abc import ServerRepositoryABC
|
from bot_data.abc.server_repository_abc import ServerRepositoryABC
|
||||||
|
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_game_server_repository_abc import UserJoinedGameServerRepositoryABC
|
||||||
from bot_data.abc.user_joined_server_repository_abc import UserJoinedServerRepositoryABC
|
from bot_data.abc.user_joined_server_repository_abc import UserJoinedServerRepositoryABC
|
||||||
from bot_data.abc.user_joined_voice_channel_repository_abc import UserJoinedVoiceChannelRepositoryABC
|
from bot_data.abc.user_joined_voice_channel_repository_abc import UserJoinedVoiceChannelRepositoryABC
|
||||||
@ -41,6 +42,7 @@ class Query(QueryABC):
|
|||||||
users: UserRepositoryABC,
|
users: UserRepositoryABC,
|
||||||
achievements: AchievementRepositoryABC,
|
achievements: AchievementRepositoryABC,
|
||||||
achievement_service: AchievementService,
|
achievement_service: AchievementService,
|
||||||
|
technician_config: TechnicianConfigRepositoryABC,
|
||||||
):
|
):
|
||||||
QueryABC.__init__(self, "Query")
|
QueryABC.__init__(self, "Query")
|
||||||
|
|
||||||
@ -68,6 +70,7 @@ class Query(QueryABC):
|
|||||||
)
|
)
|
||||||
self.add_collection("user", lambda *_: users.get_users(), UserFilter)
|
self.add_collection("user", lambda *_: users.get_users(), UserFilter)
|
||||||
self.add_collection("achievement", lambda *_: achievements.get_achievements(), AchievementFilter)
|
self.add_collection("achievement", lambda *_: achievements.get_achievements(), AchievementFilter)
|
||||||
|
self.set_field("technicianConfig", lambda *_: technician_config.get_technician_config())
|
||||||
|
|
||||||
self.set_field("guilds", self._resolve_guilds)
|
self.set_field("guilds", self._resolve_guilds)
|
||||||
self.set_field("achievementAttributes", lambda x, *_: achievement_service.get_attributes())
|
self.set_field("achievementAttributes", lambda x, *_: achievement_service.get_attributes())
|
||||||
|
Loading…
Reference in New Issue
Block a user