| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- """initial migration
- Revision ID: 965b56353b4c
- Revises:
- Create Date: 2025-05-19 14:35:04.755433
- """
- from typing import Sequence, Union
- from alembic import op
- import sqlalchemy as sa
- from sqlalchemy.dialects import postgresql
- # revision identifiers, used by Alembic.
- revision: str = '965b56353b4c'
- down_revision: Union[str, None] = None
- 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('profiles',
- sa.Column('id', sa.UUID(), nullable=False),
- sa.Column('first_name', sa.Text(), nullable=True),
- sa.Column('last_name', sa.Text(), nullable=True),
- sa.Column('avatar_url', sa.Text(), nullable=True),
- sa.PrimaryKeyConstraint('id')
- )
- op.create_table('transforms',
- sa.Column('id', sa.UUID(), nullable=False),
- sa.Column('name', sa.Text(), nullable=False),
- sa.Column('description', sa.Text(), nullable=True),
- sa.Column('category', postgresql.ARRAY(sa.Text()), nullable=True),
- sa.Column('transform_schema', sa.JSON(), nullable=True),
- sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True),
- sa.Column('last_updated_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True),
- sa.PrimaryKeyConstraint('id')
- )
- op.create_table('feedbacks',
- sa.Column('id', sa.Uuid(), nullable=False),
- sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True),
- sa.Column('content', sa.Text(), nullable=True),
- sa.Column('owner_id', sa.UUID(), nullable=True),
- sa.ForeignKeyConstraint(['owner_id'], ['profiles.id'], ),
- sa.PrimaryKeyConstraint('id')
- )
- op.create_table('investigations',
- sa.Column('id', sa.UUID(), nullable=False),
- sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True),
- sa.Column('name', sa.Text(), nullable=True),
- sa.Column('description', sa.Text(), nullable=True),
- sa.Column('owner_id', sa.UUID(), nullable=True),
- sa.Column('last_updated_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True),
- sa.Column('status', sa.String(), server_default='active', nullable=True),
- sa.ForeignKeyConstraint(['owner_id'], ['profiles.id'], onupdate='CASCADE', ondelete='CASCADE'),
- sa.PrimaryKeyConstraint('id')
- )
- op.create_index('idx_investigations_id', 'investigations', ['id'], unique=False)
- op.create_index('idx_investigations_owner_id', 'investigations', ['owner_id'], unique=False)
- op.create_table('investigations_profiles',
- sa.Column('id', sa.Uuid(), nullable=False),
- sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True),
- sa.Column('investigation_id', sa.UUID(), nullable=True),
- sa.Column('profile_id', sa.UUID(), nullable=True),
- sa.Column('role', sa.String(), server_default='member', nullable=True),
- sa.ForeignKeyConstraint(['investigation_id'], ['investigations.id'], onupdate='CASCADE', ondelete='CASCADE'),
- sa.ForeignKeyConstraint(['profile_id'], ['profiles.id'], onupdate='CASCADE', ondelete='CASCADE'),
- sa.PrimaryKeyConstraint('id')
- )
- op.create_index('idx_investigations_profiles_investigation_id', 'investigations_profiles', ['investigation_id'], unique=False)
- op.create_index('idx_investigations_profiles_profile_id', 'investigations_profiles', ['profile_id'], unique=False)
- op.create_index('projects_profiles_unique_profile_project', 'investigations_profiles', ['profile_id', 'investigation_id'], unique=True)
- op.create_table('sketches',
- sa.Column('id', sa.UUID(), nullable=False),
- sa.Column('title', sa.Text(), nullable=True),
- sa.Column('description', sa.Text(), nullable=True),
- sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True),
- sa.Column('owner_id', sa.UUID(), nullable=True),
- sa.Column('status', sa.String(), server_default='active', nullable=True),
- sa.Column('investigation_id', sa.UUID(), nullable=True),
- sa.Column('last_updated_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True),
- sa.ForeignKeyConstraint(['investigation_id'], ['investigations.id'], onupdate='CASCADE', ondelete='CASCADE'),
- sa.ForeignKeyConstraint(['owner_id'], ['profiles.id'], onupdate='CASCADE', ondelete='CASCADE'),
- sa.PrimaryKeyConstraint('id')
- )
- op.create_index('idx_sketches_investigation_id', 'sketches', ['investigation_id'], unique=False)
- op.create_index('idx_sketches_owner_id', 'sketches', ['owner_id'], unique=False)
- op.create_table('scans',
- sa.Column('id', sa.UUID(), nullable=False),
- sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True),
- sa.Column('status', sa.String(), nullable=True),
- sa.Column('results', sa.JSON(), nullable=True),
- sa.Column('values', postgresql.ARRAY(sa.Text()), nullable=True),
- sa.Column('sketch_id', sa.UUID(), nullable=True),
- sa.ForeignKeyConstraint(['sketch_id'], ['sketches.id'], onupdate='CASCADE', ondelete='CASCADE'),
- sa.PrimaryKeyConstraint('id')
- )
- op.create_index('idx_scans_sketch_id', 'scans', ['sketch_id'], unique=False)
- op.create_table('sketches_profiles',
- sa.Column('id', sa.Uuid(), nullable=False),
- sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True),
- sa.Column('profile_id', sa.UUID(), nullable=True),
- sa.Column('sketch_id', sa.UUID(), nullable=True),
- sa.Column('role', sa.String(), server_default='editor', nullable=True),
- sa.ForeignKeyConstraint(['profile_id'], ['profiles.id'], onupdate='CASCADE', ondelete='CASCADE'),
- sa.ForeignKeyConstraint(['sketch_id'], ['sketches.id'], onupdate='CASCADE', ondelete='CASCADE'),
- sa.PrimaryKeyConstraint('id')
- )
- op.create_index('idx_sketches_profiles_profile_id', 'sketches_profiles', ['profile_id'], unique=False)
- op.create_index('idx_sketches_profiles_sketch_id', 'sketches_profiles', ['sketch_id'], unique=False)
- op.create_index('investigations_profiles_unique_profile_investigation', 'sketches_profiles', ['profile_id', 'sketch_id'], unique=True)
- op.create_table('logs',
- sa.Column('id', sa.UUID(), nullable=False),
- sa.Column('scan_id', sa.UUID(), nullable=True),
- sa.Column('content', sa.Text(), nullable=True),
- sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True),
- sa.Column('sketch_id', sa.UUID(), nullable=True),
- sa.Column('type', sa.String(), server_default='INFO', nullable=True),
- sa.ForeignKeyConstraint(['scan_id'], ['scans.id'], ondelete='CASCADE'),
- sa.ForeignKeyConstraint(['sketch_id'], ['sketches.id'], onupdate='CASCADE', ondelete='CASCADE'),
- sa.PrimaryKeyConstraint('id')
- )
- # ### end Alembic commands ###
- def downgrade() -> None:
- """Downgrade schema."""
- # ### commands auto generated by Alembic - please adjust! ###
- op.drop_table('logs')
- op.drop_index('investigations_profiles_unique_profile_investigation', table_name='sketches_profiles')
- op.drop_index('idx_sketches_profiles_sketch_id', table_name='sketches_profiles')
- op.drop_index('idx_sketches_profiles_profile_id', table_name='sketches_profiles')
- op.drop_table('sketches_profiles')
- op.drop_index('idx_scans_sketch_id', table_name='scans')
- op.drop_table('scans')
- op.drop_index('idx_sketches_owner_id', table_name='sketches')
- op.drop_index('idx_sketches_investigation_id', table_name='sketches')
- op.drop_table('sketches')
- op.drop_index('projects_profiles_unique_profile_project', table_name='investigations_profiles')
- op.drop_index('idx_investigations_profiles_profile_id', table_name='investigations_profiles')
- op.drop_index('idx_investigations_profiles_investigation_id', table_name='investigations_profiles')
- op.drop_table('investigations_profiles')
- op.drop_index('idx_investigations_owner_id', table_name='investigations')
- op.drop_index('idx_investigations_id', table_name='investigations')
- op.drop_table('investigations')
- op.drop_table('feedbacks')
- op.drop_table('transforms')
- op.drop_table('profiles')
- # ### end Alembic commands ###
|