Convert to timezone-aware datetime and properly port over DB contents.

This commit is contained in:
Ben Rog-Wilhelm 2023-06-17 04:06:02 -05:00
parent 5271e7c943
commit bd909f394d
3 changed files with 64 additions and 18 deletions

View file

@ -17,30 +17,76 @@ depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('comments', sa.Column('state_user_deleted_utc', sa.DateTime(), nullable=True))
op.drop_column('comments', 'deleted_utc')
op.add_column('submissions', sa.Column('state_user_deleted_utc', sa.DateTime(), nullable=True))
op.add_column('comments', sa.Column('state_user_deleted_utc', sa.DateTime(timezone=True), nullable=True))
op.add_column('submissions', sa.Column('state_user_deleted_utc', sa.DateTime(timezone=True), nullable=True))
op.drop_index('subimssion_binary_group_idx', table_name='submissions')
op.create_index('subimssion_binary_group_idx', 'submissions', ['is_banned', 'state_user_deleted_utc', 'over_18'], unique=False)
op.drop_index('submission_isdeleted_idx', table_name='submissions')
op.create_index('submission_isdeleted_idx', 'submissions', ['state_user_deleted_utc'], unique=False)
op.drop_index('submission_new_sort_idx', table_name='submissions')
op.create_index('submission_new_sort_idx', 'submissions', ['is_banned', 'state_user_deleted_utc', sa.text('created_utc DESC'), 'over_18'], unique=False)
op.execute("""
UPDATE comments
SET state_user_deleted_utc =
CASE
WHEN deleted_utc > 0 THEN
(timestamp 'epoch' + deleted_utc * interval '1 second') at time zone 'utc'
ELSE NULL
END
""")
op.execute("""
UPDATE submissions
SET state_user_deleted_utc =
CASE
WHEN deleted_utc > 0 THEN
(timestamp 'epoch' + deleted_utc * interval '1 second') at time zone 'utc'
ELSE NULL
END
""")
op.drop_column('comments', 'deleted_utc')
op.drop_column('submissions', 'deleted_utc')
# ### end Alembic commands ###
op.create_index('subimssion_binary_group_idx', 'submissions', ['is_banned', 'state_user_deleted_utc', 'over_18'], unique=False)
op.create_index('submission_isdeleted_idx', 'submissions', ['state_user_deleted_utc'], unique=False)
op.create_index('submission_new_sort_idx', 'submissions', ['is_banned', 'state_user_deleted_utc', sa.text('created_utc DESC'), 'over_18'], unique=False)
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('submissions', sa.Column('deleted_utc', sa.INTEGER(), server_default=sa.text('0'), autoincrement=False, nullable=False))
op.add_column('comments', sa.Column('deleted_utc', sa.INTEGER(), server_default=sa.text('0'), autoincrement=False, nullable=True))
op.add_column('submissions', sa.Column('deleted_utc', sa.INTEGER(), server_default=sa.text('0'), autoincrement=False, nullable=True))
op.drop_index('submission_new_sort_idx', table_name='submissions')
op.create_index('submission_new_sort_idx', 'submissions', ['is_banned', 'deleted_utc', 'created_utc', 'over_18'], unique=False)
op.drop_index('submission_isdeleted_idx', table_name='submissions')
op.create_index('submission_isdeleted_idx', 'submissions', ['deleted_utc'], unique=False)
op.drop_index('subimssion_binary_group_idx', table_name='submissions')
op.create_index('subimssion_binary_group_idx', 'submissions', ['is_banned', 'deleted_utc', 'over_18'], unique=False)
op.drop_column('submissions', 'state_user_deleted_utc')
op.add_column('comments', sa.Column('deleted_utc', sa.INTEGER(), server_default=sa.text('0'), autoincrement=False, nullable=False))
op.execute("""
UPDATE comments
SET deleted_utc =
COALESCE(
EXTRACT(EPOCH FROM state_user_deleted_utc)::integer,
0
)
""")
op.execute("""
UPDATE submissions
SET deleted_utc =
COALESCE(
EXTRACT(EPOCH FROM state_user_deleted_utc)::integer,
0
)
""")
op.alter_column('comments', 'deleted_utc', nullable=False)
op.alter_column('submissions', 'deleted_utc', nullable=False)
op.drop_column('comments', 'state_user_deleted_utc')
# ### end Alembic commands ###
op.drop_column('submissions', 'state_user_deleted_utc')
op.create_index('submission_new_sort_idx', 'submissions', ['is_banned', 'deleted_utc', 'created_utc', 'over_18'], unique=False)
op.create_index('submission_isdeleted_idx', 'submissions', ['deleted_utc'], unique=False)
op.create_index('subimssion_binary_group_idx', 'submissions', ['is_banned', 'deleted_utc', 'over_18'], unique=False)