33 lines
1.1 KiB
Python
33 lines
1.1 KiB
Python
from sqlalchemy import Column, String, Text, DateTime, Integer, ForeignKey, JSON
|
|
from sqlalchemy.orm import relationship
|
|
from datetime import datetime, timezone
|
|
from database import Base
|
|
|
|
|
|
class Agent(Base):
|
|
__tablename__ = "agents"
|
|
|
|
id = Column(String, primary_key=True)
|
|
name = Column(String, nullable=False)
|
|
description = Column(Text, default="")
|
|
schedule = Column(String, default="manual")
|
|
status = Column(String, default="active")
|
|
created_at = Column(DateTime, default=lambda: datetime.now(timezone.utc))
|
|
|
|
runs = relationship("Run", back_populates="agent", order_by="Run.started_at.desc()")
|
|
|
|
|
|
class Run(Base):
|
|
__tablename__ = "runs"
|
|
|
|
id = Column(Integer, primary_key=True, autoincrement=True)
|
|
agent_id = Column(String, ForeignKey("agents.id"), nullable=False)
|
|
started_at = Column(DateTime, default=lambda: datetime.now(timezone.utc))
|
|
finished_at = Column(DateTime, nullable=True)
|
|
status = Column(String, default="running")
|
|
output = Column(Text, default="")
|
|
error = Column(Text, default="")
|
|
metadata_ = Column("metadata", JSON, default=dict)
|
|
|
|
agent = relationship("Agent", back_populates="runs")
|