"""Fix sequences in postgres

Revision ID: 10b999e8db1f
Revises: 22af01f81722
Create Date: 2015-11-16 14:00:05.383227

"""

# revision identifiers, used by Alembic.
revision = '10b999e8db1f'
down_revision = '1849ca8199fc'

from alembic import op
import sqlalchemy as sa

import uuid
from peewee import CharField, IntegrityError


def upgrade(tables):
    from data.database import BaseModel

    class_names = [
        'TeamRole',
        'LoginService',
        'Visibility',
        'Role',
        'AccessTokenKind',
        'BuildTriggerService',
        'ImageStorageTransformation',
        'ImageStorageSignatureKind',
        'ImageStorageLocation',
        'LogEntryKind',
        'NotificationKind',
        'ExternalNotificationEvent',
        'ExternalNotificationMethod',
    ]

    unique_name = '%s' % uuid.uuid4()

    for class_name in class_names:
        Model = type(class_name, (BaseModel,), {'name': CharField(index=True)})

        for _ in xrange(50):
            try:
                Model.create(name=unique_name).delete_instance()
                break
            except IntegrityError:
                pass


def downgrade(tables):
    pass