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)