Added mutations for user joined game server #181
This commit is contained in:
parent
1e74584e71
commit
bd4e088032
@ -101,7 +101,7 @@ class UserJoinedGameServer(TableABC):
|
|||||||
`UserId`, `GameServer`, `JoinedOn`, `LeavedOn`, `CreatedAt`, `LastModifiedAt`
|
`UserId`, `GameServer`, `JoinedOn`, `LeavedOn`, `CreatedAt`, `LastModifiedAt`
|
||||||
) VALUES (
|
) VALUES (
|
||||||
{self._user.user_id},
|
{self._user.user_id},
|
||||||
{self._game_server},
|
'{self._game_server}',
|
||||||
'{self._joined_on}',
|
'{self._joined_on}',
|
||||||
'{self._leaved_on}',
|
'{self._leaved_on}',
|
||||||
'{self._created_at}',
|
'{self._created_at}',
|
||||||
@ -116,7 +116,7 @@ class UserJoinedGameServer(TableABC):
|
|||||||
`UserId`, `GameServer`, `JoinedOn`, `CreatedAt`, `LastModifiedAt`
|
`UserId`, `GameServer`, `JoinedOn`, `CreatedAt`, `LastModifiedAt`
|
||||||
) VALUES (
|
) VALUES (
|
||||||
{self._user.user_id},
|
{self._user.user_id},
|
||||||
{self._game_server},
|
'{self._game_server}',
|
||||||
'{self._joined_on}',
|
'{self._joined_on}',
|
||||||
'{self._created_at}',
|
'{self._created_at}',
|
||||||
'{self._modified_at}'
|
'{self._modified_at}'
|
||||||
|
@ -22,6 +22,7 @@ from bot_graphql.mutation import Mutation
|
|||||||
from bot_graphql.mutations.auto_role_mutation import AutoRoleMutation
|
from bot_graphql.mutations.auto_role_mutation import AutoRoleMutation
|
||||||
from bot_graphql.mutations.auto_role_rule_mutation import AutoRoleRuleMutation
|
from bot_graphql.mutations.auto_role_rule_mutation import AutoRoleRuleMutation
|
||||||
from bot_graphql.mutations.level_mutation import LevelMutation
|
from bot_graphql.mutations.level_mutation import LevelMutation
|
||||||
|
from bot_graphql.mutations.user_joined_game_server_mutation import UserJoinedGameServerMutation
|
||||||
from bot_graphql.mutations.user_mutation import UserMutation
|
from bot_graphql.mutations.user_mutation import UserMutation
|
||||||
from bot_graphql.queries.auto_role_query import AutoRoleQuery
|
from bot_graphql.queries.auto_role_query import AutoRoleQuery
|
||||||
from bot_graphql.queries.auto_role_rule_query import AutoRoleRuleQuery
|
from bot_graphql.queries.auto_role_rule_query import AutoRoleRuleQuery
|
||||||
@ -78,5 +79,6 @@ class GraphQLModule(ModuleABC):
|
|||||||
services.add_transient(QueryABC, AutoRoleRuleMutation)
|
services.add_transient(QueryABC, AutoRoleRuleMutation)
|
||||||
services.add_transient(QueryABC, LevelMutation)
|
services.add_transient(QueryABC, LevelMutation)
|
||||||
services.add_transient(QueryABC, UserMutation)
|
services.add_transient(QueryABC, UserMutation)
|
||||||
|
services.add_transient(QueryABC, UserJoinedGameServerMutation)
|
||||||
|
|
||||||
services.add_transient(SeederService)
|
services.add_transient(SeederService)
|
||||||
|
@ -3,4 +3,5 @@ type Mutation {
|
|||||||
autoRoleRule: AutoRoleRuleMutation
|
autoRoleRule: AutoRoleRuleMutation
|
||||||
level: LevelMutation
|
level: LevelMutation
|
||||||
user: UserMutation
|
user: UserMutation
|
||||||
|
userJoinedGameServer: UserJoinedGameServerMutation
|
||||||
}
|
}
|
@ -15,4 +15,16 @@ input UserJoinedGameServerFilter {
|
|||||||
user: UserFilter
|
user: UserFilter
|
||||||
joinedOn: String
|
joinedOn: String
|
||||||
leavedOn: String
|
leavedOn: String
|
||||||
|
}
|
||||||
|
|
||||||
|
type UserJoinedGameServerMutation {
|
||||||
|
userJoined(input: UserJoinedGameServerInput!): UserJoinedGameServer
|
||||||
|
userLeaved(input: UserJoinedGameServerInput!): UserJoinedGameServer
|
||||||
|
}
|
||||||
|
|
||||||
|
input UserJoinedGameServerInput {
|
||||||
|
gameServer: String!
|
||||||
|
userId: ID!
|
||||||
|
joinedOn: String
|
||||||
|
leavedOn: String
|
||||||
}
|
}
|
@ -1,8 +1,10 @@
|
|||||||
from ariadne import MutationType
|
from ariadne import MutationType
|
||||||
|
|
||||||
|
from bot_data.model.user_joined_game_server import UserJoinedGameServer
|
||||||
from bot_graphql.mutations.auto_role_mutation import AutoRoleMutation
|
from bot_graphql.mutations.auto_role_mutation import AutoRoleMutation
|
||||||
from bot_graphql.mutations.auto_role_rule_mutation import AutoRoleRuleMutation
|
from bot_graphql.mutations.auto_role_rule_mutation import AutoRoleRuleMutation
|
||||||
from bot_graphql.mutations.level_mutation import LevelMutation
|
from bot_graphql.mutations.level_mutation import LevelMutation
|
||||||
|
from bot_graphql.mutations.user_joined_game_server_mutation import UserJoinedGameServerMutation
|
||||||
from bot_graphql.mutations.user_mutation import UserMutation
|
from bot_graphql.mutations.user_mutation import UserMutation
|
||||||
|
|
||||||
|
|
||||||
@ -13,27 +15,12 @@ class Mutation(MutationType):
|
|||||||
auto_role_rule_mutation: AutoRoleRuleMutation,
|
auto_role_rule_mutation: AutoRoleRuleMutation,
|
||||||
level_mutation: LevelMutation,
|
level_mutation: LevelMutation,
|
||||||
user_mutation: UserMutation,
|
user_mutation: UserMutation,
|
||||||
|
user_joined_game_server: UserJoinedGameServerMutation,
|
||||||
):
|
):
|
||||||
MutationType.__init__(self)
|
MutationType.__init__(self)
|
||||||
|
|
||||||
self._auto_role_mutation = auto_role_mutation
|
self.set_field("autoRole", lambda *_: auto_role_mutation)
|
||||||
self._auto_role_rule_mutation = auto_role_rule_mutation
|
self.set_field("autoRoleRule", lambda *_: auto_role_rule_mutation)
|
||||||
self._level_mutation = level_mutation
|
self.set_field("level", lambda *_: level_mutation)
|
||||||
self._user_mutation = user_mutation
|
self.set_field("user", lambda *_: user_mutation)
|
||||||
|
self.set_field("userJoinedGameServer", lambda *_: user_joined_game_server)
|
||||||
self.set_field("autoRole", self.resolve_auto_role)
|
|
||||||
self.set_field("autoRoleRule", self.resolve_auto_role_rule)
|
|
||||||
self.set_field("level", self.resolve_level)
|
|
||||||
self.set_field("user", self.resolve_user)
|
|
||||||
|
|
||||||
def resolve_auto_role(self, *_):
|
|
||||||
return self._auto_role_mutation
|
|
||||||
|
|
||||||
def resolve_auto_role_rule(self, *_):
|
|
||||||
return self._auto_role_rule_mutation
|
|
||||||
|
|
||||||
def resolve_level(self, *_):
|
|
||||||
return self._level_mutation
|
|
||||||
|
|
||||||
def resolve_user(self, *_):
|
|
||||||
return self._user_mutation
|
|
||||||
|
@ -0,0 +1,66 @@
|
|||||||
|
from cpl_core.database.context import DatabaseContextABC
|
||||||
|
from cpl_core.logging import LoggerABC
|
||||||
|
from cpl_discord.service import DiscordBotServiceABC
|
||||||
|
|
||||||
|
from bot_data.abc.server_repository_abc import ServerRepositoryABC
|
||||||
|
from bot_data.abc.user_joined_game_server_repository_abc import UserJoinedGameServerRepositoryABC
|
||||||
|
from bot_data.abc.user_repository_abc import UserRepositoryABC
|
||||||
|
from bot_data.model.user_joined_game_server import UserJoinedGameServer
|
||||||
|
from bot_data.model.user_role_enum import UserRoleEnum
|
||||||
|
from bot_graphql.abc.query_abc import QueryABC
|
||||||
|
from modules.permission.service.permission_service import PermissionService
|
||||||
|
|
||||||
|
|
||||||
|
class UserJoinedGameServerMutation(QueryABC):
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
logger: LoggerABC,
|
||||||
|
servers: ServerRepositoryABC,
|
||||||
|
users: UserRepositoryABC,
|
||||||
|
user_joined_game_servers: UserJoinedGameServerRepositoryABC,
|
||||||
|
bot: DiscordBotServiceABC,
|
||||||
|
db: DatabaseContextABC,
|
||||||
|
permissions: PermissionService,
|
||||||
|
):
|
||||||
|
QueryABC.__init__(self, "UserJoinedGameServerMutation")
|
||||||
|
|
||||||
|
self._logger = logger
|
||||||
|
self._servers = servers
|
||||||
|
self._users = users
|
||||||
|
self._user_joined_game_servers = user_joined_game_servers
|
||||||
|
self._bot = bot
|
||||||
|
self._db = db
|
||||||
|
self._permissions = permissions
|
||||||
|
|
||||||
|
self.set_field("userJoined", self.resolve_user_joined)
|
||||||
|
self.set_field("userLeaved", self.resolve_user_leaved)
|
||||||
|
|
||||||
|
def resolve_user_joined(self, *_, input: dict):
|
||||||
|
user = self._users.get_user_by_id(input["userId"])
|
||||||
|
self._can_user_mutate_data(user.server, UserRoleEnum.admin)
|
||||||
|
|
||||||
|
active = self._user_joined_game_servers.find_active_user_joined_game_server_by_user_id(user.user_id)
|
||||||
|
if active is not None:
|
||||||
|
self._logger.debug(
|
||||||
|
__name__,
|
||||||
|
f"Skip UserJoinedGameServer for user {user.user_id}. User already plays on {active.game_server}.",
|
||||||
|
)
|
||||||
|
return
|
||||||
|
|
||||||
|
new = UserJoinedGameServer(user, input["gameServer"], input["joinedOn"])
|
||||||
|
self._user_joined_game_servers.add_user_joined_game_server(new)
|
||||||
|
self._db.save_changes()
|
||||||
|
|
||||||
|
return self._user_joined_game_servers.get_active_user_joined_game_server_by_user_id(user.user_id)
|
||||||
|
|
||||||
|
def resolve_user_leaved(self, *_, input: dict):
|
||||||
|
user = self._users.get_user_by_id(input["userId"])
|
||||||
|
self._can_user_mutate_data(user.server, UserRoleEnum.admin)
|
||||||
|
|
||||||
|
active = self._user_joined_game_servers.get_active_user_joined_game_server_by_user_id(user.user_id)
|
||||||
|
active.leaved_on = input["leavedOn"]
|
||||||
|
|
||||||
|
self._user_joined_game_servers.update_user_joined_game_server(active)
|
||||||
|
self._db.save_changes()
|
||||||
|
|
||||||
|
return active
|
Loading…
Reference in New Issue
Block a user