90 lines
4.1 KiB
Python
90 lines
4.1 KiB
Python
|
"""Add labels to the schema
|
||
|
|
||
|
Revision ID: c9b91bee7554
|
||
|
Revises: 983247d75af3
|
||
|
Create Date: 2016-08-22 15:40:25.226541
|
||
|
|
||
|
"""
|
||
|
|
||
|
# revision identifiers, used by Alembic.
|
||
|
revision = 'c9b91bee7554'
|
||
|
down_revision = '983247d75af3'
|
||
|
|
||
|
from alembic import op
|
||
|
import sqlalchemy as sa
|
||
|
from util.migrate import UTF8LongText, UTF8CharField
|
||
|
|
||
|
def upgrade(tables):
|
||
|
### commands auto generated by Alembic - please adjust! ###
|
||
|
op.create_table('labelsourcetype',
|
||
|
sa.Column('id', sa.Integer(), nullable=False),
|
||
|
sa.Column('name', sa.String(length=255), nullable=False),
|
||
|
sa.Column('mutable', sa.Boolean(), nullable=False),
|
||
|
sa.PrimaryKeyConstraint('id', name=op.f('pk_labelsourcetype'))
|
||
|
)
|
||
|
op.create_index('labelsourcetype_name', 'labelsourcetype', ['name'], unique=True)
|
||
|
op.create_table('mediatype',
|
||
|
sa.Column('id', sa.Integer(), nullable=False),
|
||
|
sa.Column('name', sa.String(length=255), nullable=False),
|
||
|
sa.PrimaryKeyConstraint('id', name=op.f('pk_mediatype'))
|
||
|
)
|
||
|
op.create_index('mediatype_name', 'mediatype', ['name'], unique=True)
|
||
|
op.create_table('label',
|
||
|
sa.Column('id', sa.Integer(), nullable=False),
|
||
|
sa.Column('uuid', sa.String(length=255), nullable=False),
|
||
|
sa.Column('key', UTF8CharField(length=255), nullable=False),
|
||
|
sa.Column('value', UTF8LongText(), nullable=False),
|
||
|
sa.Column('media_type_id', sa.Integer(), nullable=False),
|
||
|
sa.Column('source_type_id', sa.Integer(), nullable=False),
|
||
|
sa.ForeignKeyConstraint(['media_type_id'], ['mediatype.id'], name=op.f('fk_label_media_type_id_mediatype')),
|
||
|
sa.ForeignKeyConstraint(['source_type_id'], ['labelsourcetype.id'], name=op.f('fk_label_source_type_id_labelsourcetype')),
|
||
|
sa.PrimaryKeyConstraint('id', name=op.f('pk_label'))
|
||
|
)
|
||
|
op.create_index('label_key', 'label', ['key'], unique=False)
|
||
|
op.create_index('label_media_type_id', 'label', ['media_type_id'], unique=False)
|
||
|
op.create_index('label_source_type_id', 'label', ['source_type_id'], unique=False)
|
||
|
op.create_index('label_uuid', 'label', ['uuid'], unique=True)
|
||
|
op.create_table('tagmanifestlabel',
|
||
|
sa.Column('id', sa.Integer(), nullable=False),
|
||
|
sa.Column('repository_id', sa.Integer(), nullable=False),
|
||
|
sa.Column('annotated_id', sa.Integer(), nullable=False),
|
||
|
sa.Column('label_id', sa.Integer(), nullable=False),
|
||
|
sa.ForeignKeyConstraint(['annotated_id'], ['tagmanifest.id'], name=op.f('fk_tagmanifestlabel_annotated_id_tagmanifest')),
|
||
|
sa.ForeignKeyConstraint(['label_id'], ['label.id'], name=op.f('fk_tagmanifestlabel_label_id_label')),
|
||
|
sa.ForeignKeyConstraint(['repository_id'], ['repository.id'], name=op.f('fk_tagmanifestlabel_repository_id_repository')),
|
||
|
sa.PrimaryKeyConstraint('id', name=op.f('pk_tagmanifestlabel'))
|
||
|
)
|
||
|
op.create_index('tagmanifestlabel_annotated_id', 'tagmanifestlabel', ['annotated_id'], unique=False)
|
||
|
op.create_index('tagmanifestlabel_annotated_id_label_id', 'tagmanifestlabel', ['annotated_id', 'label_id'], unique=True)
|
||
|
op.create_index('tagmanifestlabel_label_id', 'tagmanifestlabel', ['label_id'], unique=False)
|
||
|
op.create_index('tagmanifestlabel_repository_id', 'tagmanifestlabel', ['repository_id'], unique=False)
|
||
|
### end Alembic commands ###
|
||
|
|
||
|
op.bulk_insert(tables.logentrykind, [
|
||
|
{'name':'manifest_label_add'},
|
||
|
{'name':'manifest_label_delete'},
|
||
|
])
|
||
|
|
||
|
op.bulk_insert(tables.mediatype, [
|
||
|
{'name':'text/plain'},
|
||
|
{'name':'application/json'},
|
||
|
])
|
||
|
|
||
|
op.bulk_insert(tables.labelsourcetype, [
|
||
|
{'name':'manifest', 'mutable': False},
|
||
|
{'name':'api', 'mutable': True},
|
||
|
{'name':'internal', 'mutable': False},
|
||
|
])
|
||
|
|
||
|
|
||
|
def downgrade(tables):
|
||
|
op.execute(tables.logentrykind.delete().where(tables.logentrykind.c.name == op.inline_literal('manifest_label_add')))
|
||
|
op.execute(tables.logentrykind.delete().where(tables.logentrykind.c.name == op.inline_literal('manifest_label_delete')))
|
||
|
|
||
|
### commands auto generated by Alembic - please adjust! ###
|
||
|
op.drop_table('tagmanifestlabel')
|
||
|
op.drop_table('label')
|
||
|
op.drop_table('mediatype')
|
||
|
op.drop_table('labelsourcetype')
|
||
|
### end Alembic commands ###
|