"""add last_update to issues and pull-requests
Revision ID: 114d3a68c1fd
Revises: 5083efccac7
Create Date: 2016-11-15 11:02:30.652540
"""
# revision identifiers, used by Alembic.
revision = '114d3a68c1fd'
down_revision = '5083efccac7'
from alembic import op
import sqlalchemy as sa
import datetime
def upgrade():
''' Add the column last_updated to the table issues/pull-requests
'''
op.add_column(
'issues',
sa.Column('last_updated', sa.DateTime, nullable=True,
default=datetime.datetime.utcnow,
onupdate=datetime.datetime.utcnow)
)
# Update all the tickets having comments
op.execute('''
UPDATE "issues" SET last_updated=o_date
FROM (
SELECT issue_uid, GREATEST(date_created, edited_on) AS o_date
FROM issue_comments
ORDER BY o_date DESC
) AS subq
WHERE "issues".uid = issue_uid;''')
# Update all the tickets without comments
op.execute('''UPDATE "issues" SET last_updated=date_created '''
'''WHERE last_updated IS NULL;''')
# Require `last_updated` no NULL at the DB level
op.alter_column(
'issues', 'last_updated',
nullable=False, existing_nullable=True)
op.add_column(
'pull_requests',
sa.Column('last_updated', sa.DateTime, nullable=True,
default=datetime.datetime.utcnow,
onupdate=datetime.datetime.utcnow)
)
# Update all the PRs having comments
op.execute('''
UPDATE "pull_requests" SET last_updated=o_date
FROM (
SELECT pull_request_uid, GREATEST(date_created, edited_on) AS o_date
FROM pull_request_comments
ORDER BY o_date DESC
) AS subq
WHERE "pull_requests".uid = pull_request_uid;''')
# Update all the PRs without comments
op.execute('''UPDATE "pull_requests" SET last_updated=date_created '''
'''WHERE last_updated IS NULL;''')
# Require `last_updated` no NULL at the DB level
op.alter_column(
'pull_requests', 'last_updated',
nullable=False, existing_nullable=True)
def downgrade():
''' Drop the column last_update from the table issues/pull-requests
'''
op.drop_column('issues', 'last_updated')
op.drop_column('pull_requests', 'last_updated')