# 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"
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