Refaktoring resolveru

This commit is contained in:
Michal Kváček
2023-09-25 10:04:03 +02:00
parent 22a28ae70e
commit d820b92964
16 changed files with 253 additions and 252 deletions
+6 -27
View File
@@ -1,9 +1,9 @@
from typing import List
import strawberry
from sqlalchemy import select, or_
from database import models
from decorators.endpoints import authenticated_user_only
from dependencies.db import get_session
from graphql_schema.entities.resolvers.airport import get_airport_resolver
from graphql_schema.entities.resolvers.base import get_list, get_one
from graphql_schema.sqlalchemy_to_strawberry_type import strawberry_sqlalchemy_type
@@ -12,37 +12,16 @@ class Airport:
pass
def get_base_query(user_id: int):
return (
select(models.Airport)
.filter(models.Airport.deleted.is_(False))
.filter(or_(
models.Airport.created_by_id == user_id,
models.Airport.created_by_id.is_(None),
))
.order_by(models.Airport.icao_code)
)
@strawberry.type
class AirportQueries:
@strawberry.field()
@authenticated_user_only()
async def airports(root, info) -> List[Airport]:
query = get_base_query(info.context.user_id)
async with get_session() as db:
airports = (await db.scalars(query)).all()
return [Airport(**a.as_dict()) for a in airports]
query = get_airport_resolver(info.context.user_id)
return await get_list(models.Airport, query)
@strawberry.field()
@authenticated_user_only()
async def airport(root, info, id: int) -> Airport:
query = (
get_base_query(info.context.user_id)
.filter(models.Airport.id == id)
)
async with get_session() as db:
airport = (await db.scalars(query)).one()
return Airport(**airport.as_dict())
query = get_airport_resolver(info.context.user_id, id)
return await get_one(models.Airport, query)