52 lines
2.1 KiB
Python
52 lines
2.1 KiB
Python
import strawberry
|
|
from graphql import GraphQLError
|
|
from strawberry.types import Info
|
|
from database import models
|
|
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(extensions=[AuthenticatedOnly()])
|
|
async def copilots(root, info: Info) -> list[Copilot]:
|
|
return await CopilotQueryResolver().get_list(info.context.user_id)
|
|
|
|
@strawberry.field(extensions=[AllowPublicAccess()])
|
|
async def copilot(
|
|
root, info: Info,
|
|
id: int | None = None,
|
|
url_slug: str | None = None,
|
|
pilot_username: str | None = None,
|
|
upload_token: str | None = None,
|
|
upload_flight_slug: str | None = None,
|
|
public: bool | None = False
|
|
) -> Copilot:
|
|
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}")
|
|
|
|
return await CopilotQueryResolver().get_one(
|
|
user_id=info.context.user_id,
|
|
only_public=public,
|
|
**filter_params
|
|
)
|
|
|
|
|
|
@strawberry.type
|
|
class CopilotMutation:
|
|
@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(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)
|