Moved graphql stuff to own lib

This commit is contained in:
2023-01-07 12:39:31 +01:00
parent 77e18027a0
commit dacb429d9b
21 changed files with 111 additions and 79 deletions

View File

@@ -1,5 +0,0 @@
from ariadne import ObjectType
class QueryABC(ObjectType):
__abstract__ = True

View File

@@ -10,17 +10,11 @@ from bot_data.abc.auto_role_repository_abc import AutoRoleRepositoryABC
from bot_data.abc.client_repository_abc import ClientRepositoryABC
from bot_data.abc.known_user_repository_abc import KnownUserRepositoryABC
from bot_data.abc.level_repository_abc import LevelRepositoryABC
from bot_data.abc.query_abc import QueryABC
from bot_data.abc.server_repository_abc import ServerRepositoryABC
from bot_data.abc.statistic_repository_abc import StatisticRepositoryABC
from bot_data.abc.user_joined_server_repository_abc import UserJoinedServerRepositoryABC
from bot_data.abc.user_joined_voice_channel_abc import UserJoinedVoiceChannelRepositoryABC
from bot_data.abc.user_repository_abc import UserRepositoryABC
from bot_data.graphql.graphql_service import GraphQLService
from bot_data.graphql.query import Query
from bot_data.graphql.schema import Schema
from bot_data.graphql.server_query import ServerQuery
from bot_data.graphql.types.server_query_type import ServerQueryType
from bot_data.service.auth_user_repository_service import AuthUserRepositoryService
from bot_data.service.auto_role_repository_service import AutoRoleRepositoryService
from bot_data.service.client_repository_service import ClientRepositoryService
@@ -54,10 +48,4 @@ class DataModule(ModuleABC):
services.add_transient(LevelRepositoryABC, LevelRepositoryService)
services.add_transient(StatisticRepositoryABC, StatisticRepositoryService)
services.add_singleton(Schema)
services.add_singleton(GraphQLService)
services.add_singleton(Query)
# services.add_transient(QueryABC, ServerQuery)
services.add_transient(QueryABC, ServerQueryType)
services.add_transient(SeederService)

View File

@@ -1,7 +0,0 @@
from bot_data.abc.query_abc import QueryABC
class GraphQLService:
def __init__(self, queries: list[QueryABC]):
self._queries = queries

View File

@@ -1,64 +0,0 @@
type Query {
servers: [Server]
known_users: [User]
}
type Server {
id: ID
discord_id: String
clients: [Client]
members: [User]
level: [Level]
}
type Client {
id: ID
discord_id: String
sent_message_count: Int
received_message_count: Int
deleted_message_count: Int
received_command_count: Int
moved_users_count: Int
server: Server
}
type User {
id: ID
discord_id: String
name: String
xp: Int
ontime: Int
level: Level
joined_servers: [UserJoinedServer]
joined_voice_channel: [UserJoinedVoiceChannel]
server: Server
}
type UserJoinedServer {
id: ID
user: User
server: Server
joined_on: String
leaved_on: String
}
type UserJoinedVoiceChannel {
id: ID
channel_id: String
user: User
joined_on: String
leaved_on: String
}
type Level {
id: ID
name: String
color: String
min_xp: Int
permissions: String
server: Server
}

View File

@@ -1,18 +0,0 @@
from ariadne import QueryType
from bot_data.service.server_repository_service import ServerRepositoryService
class Query(QueryType):
def __init__(
self,
servers: ServerRepositoryService
):
QueryType.__init__(self)
self._servers = servers
self.set_field('servers', self.resolve_servers)
def resolve_servers(self, *_):
return self._servers.get_servers()

View File

@@ -1,31 +0,0 @@
from ariadne import make_executable_schema, gql
from graphql import GraphQLSchema
from bot_data.graphql.query import Query
from bot_data.graphql.server_query import ServerQuery
from bot_data.graphql.types.server_query_type import ServerQueryType
class Schema:
def __init__(
self,
query: Query,
server_query: ServerQuery,
server_query_type: ServerQueryType
):
type_defs = gql("""
type Query {
servers: [Server]
}
type Server {
id: Int
discord_id: String
}
""")
self._schema = make_executable_schema(type_defs, query, server_query_type)
@property
def schema(self) -> GraphQLSchema:
return self._schema

View File

@@ -1,20 +0,0 @@
from bot_data.abc.query_abc import QueryABC
from bot_data.graphql.query import Query
from bot_data.service.server_repository_service import ServerRepositoryService
class ServerQuery(QueryABC):
def __init__(
self,
query: Query,
servers: ServerRepositoryService
):
QueryABC.__init__(self, 'servers')
self._query = query
self._servers = servers
query.set_field('servers', self.resolve_servers)
async def resolve_servers(self):
return self._servers.get_servers()

View File

@@ -1,21 +0,0 @@
from ariadne import ObjectType
from bot_data.abc.query_abc import QueryABC
from bot_data.model.server import Server
class ServerQueryType(QueryABC):
def __init__(self):
QueryABC.__init__(self, 'Server')
self.set_field('id', self.resolve_id)
self.set_field('discord_id', self.resolve_discord_id)
@staticmethod
def resolve_id(server: Server, *_):
return server.server_id
@staticmethod
def resolve_discord_id(server: Server, *_):
return server.discord_server_id