diff --git a/model_service/model/svmdetails.py b/model_service/model/svmdetails.py index 8f80dd5..89e98bf 100644 --- a/model_service/model/svmdetails.py +++ b/model_service/model/svmdetails.py @@ -5,7 +5,7 @@ from sqlalchemy.dialects.postgresql import UUID class SVMDetails(db.Model): aimodel_id = db.Column(UUID(as_uuid=True), db.ForeignKey("ai_model.id"), nullable=False, primary_key=True) - aimodel = db.relationship("AIModel", backref=db.backref("details", lazy=True, cascade="save-update, merge, delete, delete-orphan")) + aimodel = db.relationship("AIModel", backref=db.backref("details", lazy=True, cascade="save-update, merge, delete, delete-orphan")) # details mid_window = db.Column(db.Float) diff --git a/model_service/schemas/aimodel_schema.py b/model_service/schemas/aimodel_schema.py index e675bd9..b1b1bbd 100644 --- a/model_service/schemas/aimodel_schema.py +++ b/model_service/schemas/aimodel_schema.py @@ -1,18 +1,31 @@ #!/usr/bin/env python3 +from typing import Optional from marshmallow import fields from marshmallow_sqlalchemy import ModelSchema from marshmallow_enum import EnumField from model import AIModel, AIModelType +from .svmdetails_schema import SVMDetailsSchema + class AIModelSchema(ModelSchema): + _svm_details_schema = SVMDetailsSchema(many=False, exclude=["aimodel"]) + default = fields.Method("boolize_default", dump_only=True) + details = fields.Method("pluck_details", dump_only=True) + type = EnumField(AIModelType) def boolize_default(self, ai_model) -> bool: return bool(ai_model.default) + def pluck_details(self, ai_model) -> Optional[dict]: + if ai_model.details: + return self._svm_details_schema.dump(ai_model.details[0]) + else: + return None + class Meta: model = AIModel diff --git a/model_service/schemas/svmdetails_schema.py b/model_service/schemas/svmdetails_schema.py new file mode 100644 index 0000000..6bec962 --- /dev/null +++ b/model_service/schemas/svmdetails_schema.py @@ -0,0 +1,10 @@ +#!/usr/bin/env python3 +from marshmallow import fields +from marshmallow_sqlalchemy import ModelSchema +from model import SVMDetails + + +class SVMDetailsSchema(ModelSchema): + + class Meta: + model = SVMDetails