Nova struktura DB pro data z OpenAIP API
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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]
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user