from pillar_tool.db.base_model import Base from sqlalchemy import Column, UUID, String, ForeignKey, UniqueConstraint, Boolean import uuid class Environment(Base): __tablename__ = "pillar_tool_environment" id = Column(UUID, primary_key=True, default=uuid.uuid4) name = Column(String, nullable=False) __table_args__ = ( UniqueConstraint('name', name="pillar_tool_unique_environment_unique_name"), ) class EnvironmentAssignment(Base): __tablename__ = "pillar_tool_environment_assignment" environment_id = Column(UUID, ForeignKey("pillar_tool_environment.id"), nullable=False, primary_key=True) host_id = Column(UUID, ForeignKey("pillar_tool_host.id"), nullable=False, primary_key=True) __table_args__ = ( UniqueConstraint('environment_id', 'host_id', name="pillar_tool_unique_environment_assignment"), ) class State(Base): __tablename__ = "pillar_tool_state" id = Column(UUID, primary_key=True, default=uuid.uuid4) name = Column(String, nullable=False) __table_args__ = ( UniqueConstraint('name', name="pillar_tool_unique_state_unique_name"), ) class StateAssignment(Base): __tablename__ = "pillar_tool_state_assignment" id = Column(UUID, primary_key=True, default=uuid.uuid4) environment_id = Column(UUID, ForeignKey("pillar_tool_environment.id"), nullable=False) state_id = Column(UUID, ForeignKey("pillar_tool_state.id"), nullable=False) host_id = Column(UUID, ForeignKey("pillar_tool_host.id"), nullable=False) __table_args__ = ( UniqueConstraint('environment_id', 'state_id', 'host_id', name="pillar_tool_state_assignment_unique_env_state_host"), )