migrations/versions/3c78152eb874_first_migration.py
changeset 78 37bb8e326446
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/migrations/versions/3c78152eb874_first_migration.py	Tue Oct 28 18:11:16 2014 +0100
@@ -0,0 +1,71 @@
+"""First migration
+
+Revision ID: 3c78152eb874
+Revises: None
+Create Date: 2014-10-28 15:24:25.401385
+
+"""
+
+# revision identifiers, used by Alembic.
+revision = '3c78152eb874'
+down_revision = None
+
+from alembic import op
+import sqlalchemy as sa
+from sqlalchemy.dialects import postgresql
+
+def upgrade():
+    op.create_table('event',
+    sa.Column('id', sa.Integer(), nullable=False),
+    sa.Column('code', sa.String(length=255), nullable=False),
+    sa.Column('label', sa.String(length=2048), nullable=False),
+    sa.Column('description', sa.Text(), nullable=True),
+    sa.Column('start_date', sa.DateTime(), nullable=True),
+    sa.Column('active', sa.Boolean(), server_default='1', nullable=False),
+    sa.PrimaryKeyConstraint('id')
+    )
+    op.create_index(op.f('ix_event_active'), 'event', ['active'], unique=False)
+    op.create_index(op.f('ix_event_code'), 'event', ['code'], unique=True)
+    op.create_index(op.f('ix_event_start_date'), 'event', ['start_date'], unique=False)
+    op.create_table('event_session',
+    sa.Column('id', sa.Integer(), nullable=False),
+    sa.Column('event_id', sa.Integer(), nullable=False),
+    sa.Column('project_id', sa.String(length=2048), nullable=True),
+    sa.Column('order', sa.Integer(), nullable=False),
+    sa.Column('start_ts', sa.DateTime(timezone=True), nullable=True),
+    sa.Column('duration', sa.Integer(), nullable=True),
+    sa.Column('categories_json', postgresql.JSON(), nullable=True),
+    sa.ForeignKeyConstraint(['event_id'], [u'event.id'], ),
+    sa.PrimaryKeyConstraint('id')
+    )
+    op.create_index(op.f('ix_event_session_order'), 'event_session', ['order'], unique=False)
+    op.create_index(op.f('ix_event_session_start_ts'), 'event_session', ['start_ts'], unique=False)
+    op.create_table('annotation',
+    sa.Column('id', sa.Integer(), nullable=False),
+    sa.Column('uuid', postgresql.UUID(), nullable=False),
+    sa.Column('created', sa.DateTime(), server_default=sa.text("(now() at time zone 'utc')"), nullable=False),
+    sa.Column('ts', sa.DateTime(timezone=True), nullable=False),
+    sa.Column('event_code', sa.String(length=255), nullable=False),
+    sa.Column('channel', sa.String(length=255), nullable=False),
+    sa.Column('content', postgresql.JSON(), nullable=True),
+    sa.ForeignKeyConstraint(['event_code'], ['event.code'], ),
+    sa.PrimaryKeyConstraint('id'),
+    sa.UniqueConstraint('uuid')
+    )
+    op.create_index(op.f('ix_annotation_channel'), 'annotation', ['channel'], unique=False)
+    op.create_index(op.f('ix_annotation_event_code'), 'annotation', ['event_code'], unique=False)
+    op.create_index(op.f('ix_annotation_ts'), 'annotation', ['ts'], unique=False)
+
+
+def downgrade():
+    op.drop_index(op.f('ix_annotation_ts'), table_name='annotation')
+    op.drop_index(op.f('ix_annotation_event_code'), table_name='annotation')
+    op.drop_index(op.f('ix_annotation_channel'), table_name='annotation')
+    op.drop_table('annotation')
+    op.drop_index(op.f('ix_event_session_start_ts'), table_name='event_session')
+    op.drop_index(op.f('ix_event_session_order'), table_name='event_session')
+    op.drop_table('event_session')
+    op.drop_index(op.f('ix_event_start_date'), table_name='event')
+    op.drop_index(op.f('ix_event_code'), table_name='event')
+    op.drop_index(op.f('ix_event_active'), table_name='event')
+    op.drop_table('event')