From 98064720831ca0d5d8e7b7a5511ac38c15c01e95 Mon Sep 17 00:00:00 2001 From: Gwendolyn Date: Thu, 21 Dec 2023 23:13:22 +0100 Subject: [PATCH] support MultiPolygon geojson in geometry schemas (Fixes C3NAV-37C3-1, Fixes C3NAV-37C3-12) --- src/c3nav/api/schema.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/c3nav/api/schema.py b/src/c3nav/api/schema.py index b5a448e4..301bcca9 100644 --- a/src/c3nav/api/schema.py +++ b/src/c3nav/api/schema.py @@ -61,6 +61,19 @@ class PolygonSchema(BaseSchema): title = "GeoJSON Polygon" +class MultiPolygonSchema(BaseSchema): + """ + A GeoJSON MultiPolygon + """ + type: Literal["MultiPolygon"] + coordinates: list[list[list[tuple[float, float]]]] = APIField( + example=[[[[1.5, 1.5], [1.5, 2.5], [2.5, 2.5], [2.5, 2.5]]]] + ) + + class Config(Schema.Config): + title = "GeoJSON Polygon" + + class LineStringSchema(BaseSchema): """ A GeoJSON LineString @@ -104,7 +117,9 @@ GeometrySchema = Annotated[ Union[ PolygonSchema, LineStringSchema, - PointSchema,], + PointSchema, + MultiPolygonSchema, + ], Discriminator("type"), ]