Nova struktura DB pro data z OpenAIP API

This commit is contained in:
Michal Kváček
2024-04-29 06:44:33 +02:00
parent c2b066d371
commit c8138860ca
11 changed files with 342 additions and 66 deletions
@@ -23,6 +23,14 @@ flight_copilots_dataloader = DataLoader(
extra_join=[models.Copilot.flights]).load,
cache=False)
reporting_points_dataloader = DataLoader(
load_fn=MultiModelsDataloader(
models.ReportingPoint,
relationship_column=models.airport_has_reporting_point.c.airport_id,
extra_join=[models.airport_has_reporting_point]
).load, cache=False
)
flights_by_copilot_dataloader = DataLoader(
load_fn=MultiModelsDataloader(
models.Flight,
+3 -3
View File
@@ -16,11 +16,11 @@ class AirspaceQueries:
filters = []
if country:
filters.append(models.AirspaceItem.country == country)
filters.append(models.Airspace.country == country)
if types:
filters.append(models.AirspaceItem.type.in_(types))
filters.append(models.Airspace.type.in_(types))
return await BaseQueryResolver(Airspace, models.AirspaceItem).get_list(
return await BaseQueryResolver(Airspace, models.Airspace).get_list(
info.context.user_id,
country=country,
filters=filters
+15 -8
View File
@@ -14,7 +14,7 @@ from graphql_schema.dataloaders.multi_models import (
photos_dataloader, flights_by_aircraft_dataloader, users_in_organization_dataloader,
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
photo_copilots_dataloader, photos_aircraft_dataloader, copilots_in_photo_dataloader, flight_plan_markers_dataloader, reporting_points_dataloader
)
from graphql_schema.dataloaders.single_model import (
poi_dataloader, poi_type_dataloader, event_dataloader, aircraft_dataloader, airport_dataloader,
@@ -46,9 +46,19 @@ class GPXTrack:
avg_altitude: float
@strawberry_sqlalchemy_type(models.ReportingPoint)
class ReportingPoint:
pass
@strawberry_sqlalchemy_type(models.Airport)
class Airport:
pass
reporting_points: List[ReportingPoint] = strawberry.field(
resolver=lambda root: reporting_points_dataloader.load(root.id)
)
# TODO: loader na ikonu
# TODO: loader na RWY a frekvence
@strawberry.type
@@ -58,15 +68,12 @@ class Airspace:
country: str
type: str
lower_limit: str
lower_alt_unit: str
upper_alt_unit: str
upper_limit: str
center: Optional[tuple[float, float]]
radius: Optional[float]
bounds: list[tuple[float, float]]
map_center: Optional[Point] = strawberry.field(
resolver=lambda root: Point(lat=root.center[0], lng=root.center[1]) if root.center else None
)
map_bounds: list[Point] = strawberry.field(
resolver=lambda root: [Point(lat=point[0], lng=point[1]) for point in root.bounds]
resolver=lambda root: [Point(lat=point[1], lng=point[0]) for point in root.bounds]
)