Added graphql from prototype #162
This commit is contained in:
@@ -4,12 +4,11 @@ from bot_graphql.abc.query_abc import QueryABC
|
||||
|
||||
|
||||
class DataQueryABC(QueryABC):
|
||||
|
||||
def __init__(self, name: str):
|
||||
QueryABC.__init__(self, name)
|
||||
|
||||
self.set_field('created_at', self.resolve_created_at)
|
||||
self.set_field('modified_at', self.resolve_modified_at)
|
||||
self.set_field("created_at", self.resolve_created_at)
|
||||
self.set_field("modified_at", self.resolve_modified_at)
|
||||
|
||||
@staticmethod
|
||||
def resolve_created_at(entry: TableABC, *_):
|
||||
|
@@ -7,7 +7,6 @@ from cpl_query.extension import List
|
||||
|
||||
|
||||
class FilterABC(ABC):
|
||||
|
||||
def __init__(self):
|
||||
ABC.__init__(self)
|
||||
|
||||
@@ -15,19 +14,19 @@ class FilterABC(ABC):
|
||||
self._page_size = None
|
||||
self._sort_direction = None
|
||||
self._sort_column = None
|
||||
|
||||
|
||||
@property
|
||||
def page_index(self) -> Optional[int]:
|
||||
return self._page_index
|
||||
|
||||
|
||||
@property
|
||||
def page_size(self) -> Optional[int]:
|
||||
return self._page_size
|
||||
|
||||
|
||||
@property
|
||||
def sort_direction(self) -> Optional[str]:
|
||||
return self._sort_direction
|
||||
|
||||
|
||||
@property
|
||||
def sort_column(self) -> Optional[str]:
|
||||
return self._sort_column
|
||||
@@ -45,7 +44,7 @@ class FilterABC(ABC):
|
||||
sig = signature(f)
|
||||
for param in sig.parameters.items():
|
||||
parameter = param[1]
|
||||
if parameter.name == 'self' or parameter.name == 'cls' or parameter.annotation == Parameter.empty:
|
||||
if parameter.name == "self" or parameter.name == "cls" or parameter.annotation == Parameter.empty:
|
||||
continue
|
||||
|
||||
if issubclass(parameter.annotation, FilterABC):
|
||||
@@ -60,8 +59,8 @@ class FilterABC(ABC):
|
||||
|
||||
@functools.wraps(f)
|
||||
def decorator(*args, **kwargs):
|
||||
if 'filter' in kwargs:
|
||||
kwargs['filter'] = cls.get_filter(f, kwargs['filter'])
|
||||
if "filter" in kwargs:
|
||||
kwargs["filter"] = cls.get_filter(f, kwargs["filter"])
|
||||
|
||||
return f(*args, **kwargs)
|
||||
|
||||
|
@@ -9,7 +9,6 @@ from bot_graphql.abc.filter_abc import FilterABC
|
||||
|
||||
|
||||
class LevelFilter(FilterABC):
|
||||
|
||||
def __init__(self):
|
||||
FilterABC.__init__(self)
|
||||
|
||||
@@ -18,8 +17,8 @@ class LevelFilter(FilterABC):
|
||||
# self._server_id = None
|
||||
|
||||
def from_dict(self, values: dict):
|
||||
if 'id' in values:
|
||||
self._id = values['id']
|
||||
if "id" in values:
|
||||
self._id = values["id"]
|
||||
|
||||
def filter(self, query: List[Level]) -> List[Level]:
|
||||
if self._id is not None:
|
||||
|
@@ -8,7 +8,6 @@ from bot_graphql.abc.filter_abc import FilterABC
|
||||
|
||||
|
||||
class ServerFilter(FilterABC):
|
||||
|
||||
def __init__(self):
|
||||
FilterABC.__init__(self)
|
||||
|
||||
@@ -17,8 +16,8 @@ class ServerFilter(FilterABC):
|
||||
self._name = None
|
||||
|
||||
def from_dict(self, values: dict):
|
||||
if 'id' in values:
|
||||
self._id = int(values['id'])
|
||||
if "id" in values:
|
||||
self._id = int(values["id"])
|
||||
|
||||
@ServiceProviderABC.inject
|
||||
def filter(self, query: List[Server], bot: DiscordBotServiceABC) -> List[Server]:
|
||||
@@ -29,9 +28,12 @@ class ServerFilter(FilterABC):
|
||||
query = query.where(lambda x: x.discord_server_id == self._discord_id)
|
||||
|
||||
if self._name is not None:
|
||||
|
||||
def where_guild(x: Guild):
|
||||
guild = bot.get_guild(x.discord_server_id)
|
||||
return guild is not None and (self._name.lower() == guild.name.lower() or self._name.lower() in guild.name.lower())
|
||||
return guild is not None and (
|
||||
self._name.lower() == guild.name.lower() or self._name.lower() in guild.name.lower()
|
||||
)
|
||||
|
||||
query = query.where(where_guild)
|
||||
|
||||
|
@@ -17,7 +17,6 @@ from bot_graphql.schema import Schema
|
||||
|
||||
|
||||
class GraphQLModule(ModuleABC):
|
||||
|
||||
def __init__(self, dc: DiscordCollectionABC):
|
||||
ModuleABC.__init__(self, dc, FeatureFlagsEnum.data_module)
|
||||
|
||||
|
@@ -2,6 +2,5 @@ from bot_graphql.abc.query_abc import QueryABC
|
||||
|
||||
|
||||
class GraphQLService:
|
||||
|
||||
def __init__(self, queries: list[QueryABC]):
|
||||
self._queries = queries
|
||||
|
@@ -4,15 +4,11 @@ from bot_graphql.mutations.level_mutation import LevelMutation
|
||||
|
||||
|
||||
class Mutation(MutationType):
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
level_mutation: LevelMutation
|
||||
):
|
||||
def __init__(self, level_mutation: LevelMutation):
|
||||
MutationType.__init__(self)
|
||||
|
||||
self._level_mutation = level_mutation
|
||||
self.set_field('level', self.resolve_level)
|
||||
self.set_field("level", self.resolve_level)
|
||||
|
||||
def resolve_level(self, *_):
|
||||
return self._level_mutation
|
||||
|
@@ -5,28 +5,23 @@ from bot_graphql.abc.query_abc import QueryABC
|
||||
|
||||
|
||||
class LevelMutation(QueryABC):
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
servers: ServerRepositoryABC,
|
||||
levels: LevelRepositoryABC
|
||||
):
|
||||
QueryABC.__init__(self, 'LevelMutation')
|
||||
def __init__(self, servers: ServerRepositoryABC, levels: LevelRepositoryABC):
|
||||
QueryABC.__init__(self, "LevelMutation")
|
||||
|
||||
self._servers = servers
|
||||
self._levels = levels
|
||||
|
||||
self.set_field('create_level', self.resolve_create_level)
|
||||
self.set_field('update_level', self.resolve_create_level)
|
||||
self.set_field('delete_level', self.resolve_create_level)
|
||||
self.set_field("create_level", self.resolve_create_level)
|
||||
self.set_field("update_level", self.resolve_create_level)
|
||||
self.set_field("delete_level", self.resolve_create_level)
|
||||
|
||||
def resolve_create_level(self, *_, input: dict):
|
||||
level = Level(
|
||||
input['name'],
|
||||
input['color'],
|
||||
int(input['min_xp']),
|
||||
int(input['permissions']),
|
||||
self._servers.get_server_by_id(input['server_id'])
|
||||
input["name"],
|
||||
input["color"],
|
||||
int(input["min_xp"]),
|
||||
int(input["permissions"]),
|
||||
self._servers.get_server_by_id(input["server_id"]),
|
||||
)
|
||||
return level
|
||||
|
||||
|
@@ -3,16 +3,15 @@ from bot_graphql.abc.data_query_abc import DataQueryABC
|
||||
|
||||
|
||||
class LevelQuery(DataQueryABC):
|
||||
|
||||
def __init__(self):
|
||||
DataQueryABC.__init__(self, 'Level')
|
||||
DataQueryABC.__init__(self, "Level")
|
||||
|
||||
self.set_field('id', self.resolve_id)
|
||||
self.set_field('name', self.resolve_name)
|
||||
self.set_field('color', self.resolve_color)
|
||||
self.set_field('min_xp', self.resolve_min_xp)
|
||||
self.set_field('permissions', self.resolve_permissions)
|
||||
self.set_field('server', self.resolve_server)
|
||||
self.set_field("id", self.resolve_id)
|
||||
self.set_field("name", self.resolve_name)
|
||||
self.set_field("color", self.resolve_color)
|
||||
self.set_field("min_xp", self.resolve_min_xp)
|
||||
self.set_field("permissions", self.resolve_permissions)
|
||||
self.set_field("server", self.resolve_server)
|
||||
|
||||
@staticmethod
|
||||
def resolve_id(level: Level, *_):
|
||||
|
@@ -8,21 +8,20 @@ from bot_graphql.filter.level_filter import LevelFilter
|
||||
|
||||
|
||||
class ServerQuery(DataQueryABC):
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
bot: DiscordBotServiceABC,
|
||||
levels: LevelRepositoryABC,
|
||||
self,
|
||||
bot: DiscordBotServiceABC,
|
||||
levels: LevelRepositoryABC,
|
||||
):
|
||||
DataQueryABC.__init__(self, 'Server')
|
||||
DataQueryABC.__init__(self, "Server")
|
||||
|
||||
self._bot = bot
|
||||
self._levels = levels
|
||||
|
||||
self.set_field('id', self.resolve_id)
|
||||
self.set_field('discord_id', self.resolve_discord_id)
|
||||
self.set_field('name', self.resolve_name)
|
||||
self.set_field('levels', self.resolve_levels)
|
||||
self.set_field("id", self.resolve_id)
|
||||
self.set_field("discord_id", self.resolve_discord_id)
|
||||
self.set_field("name", self.resolve_name)
|
||||
self.set_field("levels", self.resolve_levels)
|
||||
|
||||
@staticmethod
|
||||
def resolve_id(server: Server, *_):
|
||||
|
@@ -6,16 +6,12 @@ from bot_graphql.filter.server_filter import ServerFilter
|
||||
|
||||
|
||||
class Query(QueryType):
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
servers: ServerRepositoryService
|
||||
):
|
||||
def __init__(self, servers: ServerRepositoryService):
|
||||
QueryType.__init__(self)
|
||||
self._servers = servers
|
||||
|
||||
self.set_field('servers', self.resolve_servers)
|
||||
self.set_field('server_count', self.resolve_server_count)
|
||||
self.set_field("servers", self.resolve_servers)
|
||||
self.set_field("server_count", self.resolve_server_count)
|
||||
|
||||
@FilterABC.resolve_filter_annotation
|
||||
def resolve_servers(self, *_, filter: ServerFilter = None):
|
||||
|
@@ -9,14 +9,8 @@ from bot_graphql.query import Query
|
||||
|
||||
|
||||
class Schema:
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
query: Query,
|
||||
mutation: Mutation,
|
||||
queries: list[QueryABC]
|
||||
):
|
||||
type_defs = load_schema_from_path(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'model.gql'))
|
||||
def __init__(self, query: Query, mutation: Mutation, queries: list[QueryABC]):
|
||||
type_defs = load_schema_from_path(os.path.join(os.path.dirname(os.path.realpath(__file__)), "model.gql"))
|
||||
self._schema = make_executable_schema(type_defs, query, mutation, *queries)
|
||||
|
||||
@property
|
||||
|
Reference in New Issue
Block a user