addressing justcool393 comments
This commit is contained in:
parent
1e7a3d81b6
commit
57f6470c36
3 changed files with 22 additions and 17 deletions
|
@ -4,6 +4,7 @@ from datetime import datetime, timedelta, timezone
|
||||||
from sqlalchemy import text
|
from sqlalchemy import text
|
||||||
from sqlalchemy.orm import declarative_base, declared_attr
|
from sqlalchemy.orm import declarative_base, declared_attr
|
||||||
from sqlalchemy.schema import Column
|
from sqlalchemy.schema import Column
|
||||||
|
from sqlalchemy.sql.functions import now
|
||||||
from sqlalchemy.sql.sqltypes import Integer, DateTime
|
from sqlalchemy.sql.sqltypes import Integer, DateTime
|
||||||
|
|
||||||
from files.helpers.time import format_age, format_datetime
|
from files.helpers.time import format_age, format_datetime
|
||||||
|
@ -72,7 +73,7 @@ class CreatedDateTimeBase(Base):
|
||||||
|
|
||||||
Retrieving `created_datetimez` will return a `datetime` object with `tzinfo` for UTC.
|
Retrieving `created_datetimez` will return a `datetime` object with `tzinfo` for UTC.
|
||||||
"""
|
"""
|
||||||
return Column(DateTime(timezone=True), nullable=False, server_default=text("now()"))
|
return Column(DateTime(timezone=True), nullable=False, server_default=now())
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def created_utc(self):
|
def created_utc(self):
|
||||||
|
|
|
@ -15,34 +15,38 @@ down_revision = 'ea282d7c711c'
|
||||||
branch_labels = None
|
branch_labels = None
|
||||||
depends_on = None
|
depends_on = None
|
||||||
|
|
||||||
|
table_name = 'commentflags'
|
||||||
|
from_column = 'created_utc'
|
||||||
|
to_column = 'created_datetimez'
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
def upgrade():
|
||||||
op.add_column('commentflags', sa.Column('created_datetimez', sa.DateTime(timezone=True), nullable=True, server_default=sa.text('NOW()')))
|
op.add_column(table_name, sa.Column(to_column, sa.DateTime(timezone=True), nullable=True, server_default=sa.text('NOW()')))
|
||||||
op.execute("""
|
op.execute(f"""
|
||||||
UPDATE commentflags
|
UPDATE {table_name}
|
||||||
SET created_datetimez =
|
SET {to_column} =
|
||||||
CASE
|
CASE
|
||||||
WHEN created_utc > 0 THEN
|
WHEN {from_column} > 0 THEN
|
||||||
(timestamp 'epoch' + created_utc * interval '1 second') at time zone 'utc'
|
(timestamp 'epoch' + {from_column} * interval '1 second') at time zone 'utc'
|
||||||
ELSE NULL
|
ELSE NULL
|
||||||
END
|
END
|
||||||
""")
|
""")
|
||||||
op.alter_column('commentflags', 'created_datetimez', nullable=False)
|
op.alter_column(table_name, to_column, nullable=False)
|
||||||
op.drop_column('commentflags', 'created_utc')
|
op.drop_column(table_name, from_column)
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
def downgrade():
|
||||||
"""
|
"""
|
||||||
Downgrade will truncate the milliseconds.
|
Downgrade will truncate the milliseconds.
|
||||||
"""
|
"""
|
||||||
op.add_column('commentflags', sa.Column('created_utc', sa.INTEGER(), server_default=sa.text('0'), nullable=True))
|
op.add_column(table_name, sa.Column('created_utc', sa.INTEGER(), server_default=sa.text('0'), nullable=True))
|
||||||
op.execute("""
|
op.execute(f"""
|
||||||
UPDATE commentflags
|
UPDATE {table_name}
|
||||||
SET created_utc =
|
SET created_utc =
|
||||||
COALESCE(
|
COALESCE(
|
||||||
EXTRACT(EPOCH FROM created_datetimez)::integer,
|
EXTRACT(EPOCH FROM {to_column})::integer,
|
||||||
0
|
0
|
||||||
)
|
)
|
||||||
""")
|
""")
|
||||||
op.alter_column('commentflags', 'created_utc', nullable=False)
|
op.alter_column(table_name, from_column, nullable=False)
|
||||||
op.drop_column('commentflags', 'created_datetimez')
|
op.drop_column(table_name, to_column)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue