fixed last migration and added TopFile model

This commit is contained in:
Linus Vogel 2026-04-25 09:51:46 +02:00
parent 84770287e4
commit de06702e1a
3 changed files with 64 additions and 6 deletions

View File

@ -21,14 +21,12 @@ depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None:
"""Upgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('pillar_tool_pillar', sa.Column('parameter_type', sa.String(), nullable=False))
op.drop_column('pillar_tool_pillar', 'type')
op.alter_column('pillar_tool_pillar', 'type', new_column_name='parameter_type', nullable=False, type_=sa.String())
# ### end Alembic commands ###
def downgrade() -> None:
"""Downgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('pillar_tool_pillar', sa.Column('type', sa.VARCHAR(), autoincrement=False, nullable=False))
op.drop_column('pillar_tool_pillar', 'parameter_type')
op.alter_column('pillar_tool_pillar', 'parameter_type', new_column_name='type', nullable=False, type_=sa.VARCHAR())
# ### end Alembic commands ###

View File

@ -0,0 +1,51 @@
"""separate top file for environments and states
Revision ID: 9ebc4cadee1c
Revises: ec7c818f92b5
Create Date: 2026-04-25 00:04:18.688390
"""
from typing import Sequence, Union
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision: str = '9ebc4cadee1c'
down_revision: Union[str, Sequence[str], None] = 'ec7c818f92b5'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None:
"""Upgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.create_table('pillar_tool_top_file',
sa.Column('host_id', sa.UUID(), nullable=False),
sa.Column('state_id', sa.UUID(), nullable=False),
sa.ForeignKeyConstraint(['host_id'], ['pillar_tool_host.id'], ),
sa.ForeignKeyConstraint(['state_id'], ['pillar_tool_state.id'], ),
sa.PrimaryKeyConstraint('host_id', 'state_id'),
sa.UniqueConstraint('host_id', 'state_id', name='pillar_tool_top_file_unique_state_host')
)
op.drop_constraint('pillar_tool_unique_environment_assignment', 'pillar_tool_environment_assignment', type_='unique')
op.create_unique_constraint('pillar_tool_unique_environment_assignment', 'pillar_tool_environment_assignment', ['environment_id', 'host_id'])
op.drop_constraint(op.f('pillar_tool_state_assignment_unique_env_state_host'), 'pillar_tool_state_assignment', type_='unique')
op.create_unique_constraint('pillar_tool_state_assignment_unique_env_state_host', 'pillar_tool_state_assignment', ['environment_id', 'state_id'])
op.drop_constraint(op.f('pillar_tool_state_assignment_host_id_fkey'), 'pillar_tool_state_assignment', type_='foreignkey')
op.drop_column('pillar_tool_state_assignment', 'host_id')
# ### end Alembic commands ###
def downgrade() -> None:
"""Downgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('pillar_tool_state_assignment', sa.Column('host_id', sa.UUID(), autoincrement=False, nullable=False))
op.create_foreign_key(op.f('pillar_tool_state_assignment_host_id_fkey'), 'pillar_tool_state_assignment', 'pillar_tool_host', ['host_id'], ['id'])
op.drop_constraint('pillar_tool_state_assignment_unique_env_state_host', 'pillar_tool_state_assignment', type_='unique')
op.create_unique_constraint(op.f('pillar_tool_state_assignment_unique_env_state_host'), 'pillar_tool_state_assignment', ['environment_id', 'state_id', 'host_id'], postgresql_nulls_not_distinct=False)
op.drop_constraint('pillar_tool_unique_environment_assignment', 'pillar_tool_environment_assignment', type_='unique')
op.create_unique_constraint('pillar_tool_unique_environment_assignment', 'pillar_tool_environment_assignment', ['environment_id', 'host_id'])
op.drop_table('pillar_tool_top_file')
# ### end Alembic commands ###

View File

@ -43,8 +43,17 @@ class StateAssignment(Base):
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"),
UniqueConstraint('environment_id', 'state_id', name="pillar_tool_state_assignment_unique_env_state_host"),
)
class TopFile(Base):
__tablename__ = "pillar_tool_top_file"
host_id = Column(UUID, ForeignKey("pillar_tool_host.id"), nullable=False, primary_key=True)
state_id = Column(UUID, ForeignKey("pillar_tool_state.id"), nullable=False, primary_key=True)
__table_args__ = (
UniqueConstraint('host_id', 'state_id', name="pillar_tool_top_file_unique_state_host"),
)