From ebf2995d51209a65d6391cf0348f4d20bc3b335f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Thu, 2 Nov 2023 09:12:01 +0100 Subject: [PATCH] Filtrovani copilotu --- src/graphql_schema/entities/copilot.py | 12 ++++++--- .../entities/resolvers/copilot.py | 27 +++++++++++++++++++ 2 files changed, 35 insertions(+), 4 deletions(-) create mode 100644 src/graphql_schema/entities/resolvers/copilot.py diff --git a/src/graphql_schema/entities/copilot.py b/src/graphql_schema/entities/copilot.py index 98168aa..64d1446 100644 --- a/src/graphql_schema/entities/copilot.py +++ b/src/graphql_schema/entities/copilot.py @@ -2,7 +2,8 @@ from typing import List, Optional import strawberry from database import models from decorators.endpoints import authenticated_user_only -from graphql_schema.entities.resolvers.base import BaseQueryResolver, BaseMutationResolver +from graphql_schema.entities.resolvers.base import BaseMutationResolver +from graphql_schema.entities.resolvers.copilot import CopilotQueryResolver from graphql_schema.entities.types.mutation_input import CreateCopilotInput, EditCopilotInput from graphql_schema.entities.types.types import Copilot @@ -12,12 +13,15 @@ class CopilotQueries: @strawberry.field() @authenticated_user_only() async def copilots(root, info) -> List[Copilot]: - return await BaseQueryResolver(Copilot, models.Copilot).get_list(info.context.user_id) + return await CopilotQueryResolver().get_list(info.context.user_id) @strawberry.field() async def copilot(root, info, id: int, pilot_username: Optional[str] = None) -> Copilot: - params = {} - return await BaseQueryResolver(Copilot, models.Copilot).get_one(id, user_id=info.context.user_id) + return await CopilotQueryResolver().get_one( + id, + user_id=info.context.user_id, + pilot_username=pilot_username + ) @strawberry.type diff --git a/src/graphql_schema/entities/resolvers/copilot.py b/src/graphql_schema/entities/resolvers/copilot.py new file mode 100644 index 0000000..0297a70 --- /dev/null +++ b/src/graphql_schema/entities/resolvers/copilot.py @@ -0,0 +1,27 @@ +from typing import Optional +from database import models +from graphql_schema.entities.resolvers.base import BaseQueryResolver +from graphql_schema.entities.types.types import Copilot + + +class CopilotQueryResolver(BaseQueryResolver): + def __init__(self): + super().__init__(Copilot, models.Copilot) + + def get_query( + self, + user_id: Optional[int] = None, + object_id: Optional[int] = None, + order_by: Optional[list] = None, + only_public: Optional[bool] = False, + *args, **kwargs + ): + query = super().get_query(user_id, object_id, order_by, only_public, *args, **kwargs) + + if kwargs.get("pilot_username"): + query = ( + query.join(models.Copilot.created_by) + .filter(models.User.public_username == kwargs['pilot_username']) + ) + + return query