Prepis strankovani na extension, sjednoceni volani resolveru

This commit is contained in:
Michal Kváček
2025-03-05 13:23:38 +01:00
parent c6316262e5
commit 77c9242944
47 changed files with 532 additions and 606 deletions
+14 -31
View File
@@ -1,28 +1,22 @@
from typing import List, Optional
import strawberry
from graphql import GraphQLError
from strawberry.types import Info
from database import models
from decorators.error_logging import error_logging
from decorators.endpoints import authenticated_user_only, allow_public
from graphql_schema.entities.helpers.detail import get_detail_filters
from graphql_schema.entities.helpers.filters import get_filters
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
from graphql_schema.extensions.field.auth import AllowPublicAccess, AuthenticatedOnly
@strawberry.type
class CopilotQueries:
@strawberry.field()
@error_logging
@authenticated_user_only()
async def copilots(root, info: Info) -> List[Copilot]:
@strawberry.field(extensions=[AuthenticatedOnly()])
async def copilots(root, info: Info) -> list[Copilot]:
return await CopilotQueryResolver().get_list(info.context.user_id)
@strawberry.field()
@error_logging
@allow_public
@strawberry.field(extensions=[AllowPublicAccess()])
async def copilot(
root, info: Info,
id: int | None = None,
@@ -32,17 +26,10 @@ class CopilotQueries:
upload_flight_slug: str | None = None,
public: bool | None = False
) -> Copilot:
filter_params = {}
if id:
filter_params['object_id'] = id
if url_slug is not None:
filter_params['url_slug'] = url_slug
if upload_token and upload_flight_slug:
filter_params['upload_token'] = upload_token
filter_params['upload_flight_slug'] = upload_flight_slug
if pilot_username:
filter_params['pilot_username'] = pilot_username
filter_params = get_filters(
object_id=id, url_slug=url_slug, pilot_username=pilot_username, upload_token=upload_token,
upload_flight_slug=upload_flight_slug,
)
if not filter_params:
raise GraphQLError(f"Invalid identification supplied: {filter_params}")
@@ -55,14 +42,10 @@ class CopilotQueries:
@strawberry.type
class CopilotMutation:
@strawberry.mutation
@error_logging
@authenticated_user_only()
async def create_copilot(root, info, input: CreateCopilotInput) -> Copilot:
@strawberry.mutation(extensions=[AuthenticatedOnly()])
async def create_copilot(root, info: Info, input: CreateCopilotInput) -> Copilot:
return await BaseMutationResolver(Copilot, models.Copilot).create(info.context, data=input)
@strawberry.mutation
@error_logging
@authenticated_user_only()
async def edit_copilot(root, info, id: int, input: EditCopilotInput) -> Copilot:
return await BaseMutationResolver(Copilot, models.Copilot).update(id, input, info.context.user_id)
@strawberry.mutation(extensions=[AuthenticatedOnly()])
async def edit_copilot(root, info: Info, id: int, input: EditCopilotInput) -> Copilot:
return await BaseMutationResolver(Copilot, models.Copilot).update(info.context, id, input, info.context.user_id)