From 20798d21277cdf88591b535b6a11460e68051b8b Mon Sep 17 00:00:00 2001 From: Alireza Adli Date: Thu, 10 Oct 2024 11:48:53 -0400 Subject: [PATCH] Define the schema --- schemas.py | 38 ++++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/schemas.py b/schemas.py index 6afa40f..562238a 100644 --- a/schemas.py +++ b/schemas.py @@ -1,7 +1,37 @@ +""" +schemas module +Defines the schemas to post on app.py +SPDX - License - Identifier: LGPL - 3.0 - or -later +Copyright © 2024 Concordia CERC group +Code contributors: Alireza Adli alireza.adli@mail.concordia.ca +""" from marshmallow import Schema, fields -class LCAWorkflowSchema(Schema): - city_file_path = fields.Str(required=True) - archetypes_file_name = fields.Str(required=True) - constructions_file_name = fields.Str(required=True) +class GeometrySchema(Schema): + """Schema for the geometry of a feature.""" + type = fields.String(required=True) + coordinates = fields.List(fields.List(fields.List(fields.Float())), required=True) + + +class PropertiesSchema(Schema): + """Schema for the properties of a feature.""" + name = fields.String(required=True) + address = fields.String(required=True) + function = fields.String(required=True) + height = fields.Integer(required=True) + year_of_construction = fields.Integer(required=True) + + +class FeatureSchema(Schema): + """Schema for a GeoJSON feature.""" + type = fields.String(required=True) + geometry = fields.Nested(GeometrySchema, required=True) + id = fields.Integer(required=True) + properties = fields.Nested(PropertiesSchema, required=True) + + +class LCAInputData(Schema): + """Define variables that come from user input.""" + type = fields.String(required=True) + features = fields.List(fields.Nested(FeatureSchema), required=True)