David Prince
production: clean source snapshot — no history bloat
71b4454
Raw
History Blame Contribute Delete
2.24 kB
from sqlalchemy import Column, Integer, String, DateTime, Text, JSON, Boolean, Float, ForeignKey
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
from datetime import datetime
Base = declarative_base()
class Deployment(Base):
__tablename__ = "deployments"
id = Column(Integer, primary_key=True)
deployment_id = Column(String(64), unique=True, nullable=False)
name = Column(String(128), nullable=False)
platform = Column(String(32), nullable=False) # render, cloudflare, huggingface, docker, kubernetes
status = Column(String(32), default="pending") # pending, deploying, deployed, failed, rolled_back
config = Column(JSON, nullable=False) # platform-specific config
version = Column(String(32), nullable=True) # deployed version tag
created_at = Column(DateTime, default=datetime.utcnow)
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
deployed_at = Column(DateTime, nullable=True)
health_checks = relationship("DeploymentHealth", back_populates="deployment")
rollbacks = relationship("DeploymentRollback", back_populates="deployment")
class DeploymentHealth(Base):
__tablename__ = "deployment_health"
id = Column(Integer, primary_key=True)
deployment_id = Column(Integer, ForeignKey("deployments.id"))
status = Column(String(32), default="pending") # healthy, degraded, unhealthy
endpoint = Column(String(256), nullable=True) # health check URL
response_time_ms = Column(Float, nullable=True)
error = Column(Text, nullable=True)
checked_at = Column(DateTime, default=datetime.utcnow)
deployment = relationship("Deployment", back_populates="health_checks")
class DeploymentRollback(Base):
__tablename__ = "deployment_rollbacks"
id = Column(Integer, primary_key=True)
deployment_id = Column(Integer, ForeignKey("deployments.id"))
rollback_to_version = Column(String(32), nullable=False)
reason = Column(Text, nullable=True)
triggered_by = Column(String(64), nullable=True)
created_at = Column(DateTime, default=datetime.utcnow)
deployment = relationship("Deployment", back_populates="rollbacks")