From 94613a5b1ba5709d28d737c878d959ad994f6b8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Wed, 15 May 2024 09:33:41 +0200 Subject: [PATCH] ZoNacitani frekvenci, RWY --- src/database/models.py | 2 ++ .../dataloaders/multi_models.py | 18 ++++++++++++++++++ src/graphql_schema/entities/types/types.py | 19 +++++++++++++++++-- 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/src/database/models.py b/src/database/models.py index 920c713..38b085f 100644 --- a/src/database/models.py +++ b/src/database/models.py @@ -145,6 +145,8 @@ class Airport(BaseModel): created_at: Mapped[datetime] = mapped_column(DateTime, server_default=func.now()) created_by_id: Mapped[int] = mapped_column(Integer, ForeignKey('user.id'), nullable=True) # automaticky import nebude mit ID # noqa + runways: Mapped[list['Runway']] = relationship() + frequencies: Mapped[list['Frequency']] = relationship() created_by: Mapped['User'] = relationship() diff --git a/src/graphql_schema/dataloaders/multi_models.py b/src/graphql_schema/dataloaders/multi_models.py index 5338ccf..b5cde55 100644 --- a/src/graphql_schema/dataloaders/multi_models.py +++ b/src/graphql_schema/dataloaders/multi_models.py @@ -47,6 +47,24 @@ reporting_points_dataloader = DataLoader( ).load, cache=False ) +runways_dataloader = DataLoader( + load_fn=MultiModelsDataloader( + models.Runway, + relationship_column=models.Airport.id, + extra_join=[models.Airport.runways], + order_by=[models.Runway.designator] + ).load, cache=False +) + +frequencies_dataloader = DataLoader( + load_fn=MultiModelsDataloader( + models.Frequency, + relationship_column=models.Airport.id, + extra_join=[models.Airport.frequencies], + order_by=[models.Frequency.frequency] + ).load, cache=False +) + flights_by_copilot_dataloader = DataLoader( load_fn=MultiModelsDataloader( models.Flight, diff --git a/src/graphql_schema/entities/types/types.py b/src/graphql_schema/entities/types/types.py index 53f7ad4..508a5a4 100644 --- a/src/graphql_schema/entities/types/types.py +++ b/src/graphql_schema/entities/types/types.py @@ -15,7 +15,7 @@ from graphql_schema.dataloaders.multi_models import ( aircrafts_from_organization_dataloader, user_organizations_dataloader, flights_by_event_dataloader, flights_by_copilot_dataloader, public_flights_by_event_dataloader, public_flights_by_copilot_dataloader, photo_copilots_dataloader, photos_aircraft_dataloader, copilots_in_photo_dataloader, flight_plan_markers_dataloader, - reporting_points_dataloader, flight_plan_copilots_dataloader + reporting_points_dataloader, flight_plan_copilots_dataloader, runways_dataloader, frequencies_dataloader ) from graphql_schema.dataloaders.single_model import ( poi_dataloader, poi_type_dataloader, event_dataloader, aircraft_dataloader, airport_dataloader, @@ -52,14 +52,29 @@ class ReportingPoint: pass +@strawberry_sqlalchemy_type(models.Runway) +class Runway: + pass + + +@strawberry_sqlalchemy_type(models.Frequency) +class Frequency: + pass + + @strawberry_sqlalchemy_type(models.Airport) class Airport: reporting_points: List[ReportingPoint] = strawberry.field( resolver=lambda root: reporting_points_dataloader.load(root.id) ) + runways: List[Runway] = strawberry.field( + resolver=lambda root: runways_dataloader.load(root.id) + ) + frequencies: List[Frequency] = strawberry.field( + resolver=lambda root: frequencies_dataloader.load(root.id) + ) # TODO: loader na ikonu - # TODO: loader na RWY a frekvence @strawberry.type