Model for ModelId 45/13745/5
authorsubhash kumar singh <subh.singh@samsung.com>
Wed, 13 Nov 2024 05:47:26 +0000 (05:47 +0000)
committersubhash kumar singh <subh.singh@samsung.com>
Tue, 19 Nov 2024 14:44:44 +0000 (14:44 +0000)
Introduced changes for modelID which will be referenced by
trainingjob.

Change-Id: I4fd24eb03e6fe5dcd0c2ae91091035a093bda22c
Signed-off-by: subhash kumar singh <subh.singh@samsung.com>
trainingmgr/models/trainingjob.py

index db2e051..3452516 100644 (file)
 #   limitations under the License.
 #
 # ==============================================================================
-from . import db
+from trainingmgr.models import db
 from datetime import datetime
 from sqlalchemy.sql import func
 from sqlalchemy import Integer, ForeignKey, String, DateTime, Column, Boolean
 from sqlalchemy.orm import relationship
+from sqlalchemy import PrimaryKeyConstraint, ForeignKeyConstraint, UniqueConstraint
+import json
+
+class ModelID(db.Model):
+    __tablename__ = 'model'
+    id = db.Column(db.Integer, primary_key=True)
+    modelname = db.Column(db.String(128), nullable=False)
+    modelversion = db.Column(db.String(128), nullable=False)
+    artifactversion = db.Column(db.String(128), nullable=True)
+    
+    __table_args__ = (
+        UniqueConstraint("modelname", "modelversion", name="unique model"),
+    )
+
+    trainingJob = relationship("TrainingJob", back_populates='modelref')
+
 
 class TrainingJob(db.Model):
     __tablename__ = "trainingjob_info_table"
@@ -34,11 +50,30 @@ class TrainingJob(db.Model):
     training_config = Column(String(5000), nullable=False)
     model_url = Column(String(1000), nullable=True)
     notification_url = Column(String(1000), nullable=True)
-    model_name = Column(String(128), nullable=True)
+    model_name = db.Column(db.String(128), nullable=True)
+    model_id = Column(Integer, nullable=False)
     model_info = Column(String(1000), nullable=True)
 
     #defineing relationships
     steps_state = relationship("TrainingJobStatus", back_populates="trainingjobs")
 
+    __table_args__ = (
+        ForeignKeyConstraint(
+            ["model_id"],
+            ["model.id"]
+        ),
+    )
+    
+
+    modelref = relationship("ModelID", back_populates="trainingJob")
+
+    # # Serialize and Deserialize training_config to/from JSON
+    # @property
+    # def training_config_data(self):
+    #     return json.loads(self.training_config)
+
+    # @training_config_data.setter
+    # def training_config_data(self, value):
+    #     self.training_config = json.dumps(value)
     def __repr__(self):
         return f'<Trainingjob {self.trainingjob_name}>'
\ No newline at end of file