revai-api / app /models /mlmodel.py
Shaankar39's picture
Deploy RevAI API
3d1332e
Raw
History Blame Contribute Delete
1.33 kB
import uuid
import datetime
import json
from sqlalchemy import Column, String, DateTime, Text, Integer, Float, ForeignKey
from sqlalchemy.orm import relationship
from app.database import Base
class MLModel(Base):
__tablename__ = "ml_models"
id = Column(String, primary_key=True, default=lambda: str(uuid.uuid4()))
user_id = Column(String, ForeignKey("users.id"), nullable=False)
name = Column(String, nullable=False)
model_type = Column(String, nullable=False) # churn, lead
feature_names_json = Column(Text, nullable=False) # JSON list of feature names
encoders_json = Column(Text, nullable=False) # JSON dict of label encoders
model_binary = Column(Text, nullable=False) # base64 encoded XGBoost model
metrics_json = Column(Text, default="{}") # accuracy, roc_auc, etc.
summary_json = Column(Text, default="{}") # n_rows, n_features, etc.
n_rows = Column(Integer, default=0)
n_features = Column(Integer, default=0)
created_at = Column(DateTime, default=datetime.datetime.utcnow)
user = relationship("User", back_populates="ml_models")
def get_feature_names(self):
return json.loads(self.feature_names_json)
def get_metrics(self):
return json.loads(self.metrics_json)
def get_summary(self):
return json.loads(self.summary_json)