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.orm import declarative_base, declared_attr
|
||||
from sqlalchemy.schema import Column
|
||||
from sqlalchemy.sql.functions import now
|
||||
from sqlalchemy.sql.sqltypes import Integer, 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.
|
||||
"""
|
||||
return Column(DateTime(timezone=True), nullable=False, server_default=text("now()"))
|
||||
return Column(DateTime(timezone=True), nullable=False, server_default=now())
|
||||
|
||||
@property
|
||||
def created_utc(self):
|
||||
|
@ -124,4 +125,4 @@ class CreatedDateTimeBase(Base):
|
|||
"""
|
||||
a string representing time since created. Example: "1h ago", "2d ago".
|
||||
"""
|
||||
return format_age(self.created_datetimez)
|
||||
return format_age(self.created_datetimez)
|
||||
|
|
|
@ -33,7 +33,7 @@ class CommentFlag(CreatedDateTimeBase):
|
|||
comment_id = Column(Integer, ForeignKey("comments.id"), nullable=False)
|
||||
user_id = Column(Integer, ForeignKey("users.id"), nullable=False)
|
||||
reason = Column(String)
|
||||
|
||||
|
||||
Index('cflag_user_idx', user_id)
|
||||
|
||||
user = relationship("User", primaryjoin = "CommentFlag.user_id == User.id", uselist = False, viewonly=True)
|
||||
|
|
|
@ -15,34 +15,38 @@ down_revision = 'ea282d7c711c'
|
|||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
table_name = 'commentflags'
|
||||
from_column = 'created_utc'
|
||||
to_column = 'created_datetimez'
|
||||
|
||||
|
||||
def upgrade():
|
||||
op.add_column('commentflags', sa.Column('created_datetimez', sa.DateTime(timezone=True), nullable=True, server_default=sa.text('NOW()')))
|
||||
op.execute("""
|
||||
UPDATE commentflags
|
||||
SET created_datetimez =
|
||||
op.add_column(table_name, sa.Column(to_column, sa.DateTime(timezone=True), nullable=True, server_default=sa.text('NOW()')))
|
||||
op.execute(f"""
|
||||
UPDATE {table_name}
|
||||
SET {to_column} =
|
||||
CASE
|
||||
WHEN created_utc > 0 THEN
|
||||
(timestamp 'epoch' + created_utc * interval '1 second') at time zone 'utc'
|
||||
WHEN {from_column} > 0 THEN
|
||||
(timestamp 'epoch' + {from_column} * interval '1 second') at time zone 'utc'
|
||||
ELSE NULL
|
||||
END
|
||||
""")
|
||||
op.alter_column('commentflags', 'created_datetimez', nullable=False)
|
||||
op.drop_column('commentflags', 'created_utc')
|
||||
op.alter_column(table_name, to_column, nullable=False)
|
||||
op.drop_column(table_name, from_column)
|
||||
|
||||
|
||||
def downgrade():
|
||||
"""
|
||||
Downgrade will truncate the milliseconds.
|
||||
"""
|
||||
op.add_column('commentflags', sa.Column('created_utc', sa.INTEGER(), server_default=sa.text('0'), nullable=True))
|
||||
op.execute("""
|
||||
UPDATE commentflags
|
||||
op.add_column(table_name, sa.Column('created_utc', sa.INTEGER(), server_default=sa.text('0'), nullable=True))
|
||||
op.execute(f"""
|
||||
UPDATE {table_name}
|
||||
SET created_utc =
|
||||
COALESCE(
|
||||
EXTRACT(EPOCH FROM created_datetimez)::integer,
|
||||
EXTRACT(EPOCH FROM {to_column})::integer,
|
||||
0
|
||||
)
|
||||
""")
|
||||
op.alter_column('commentflags', 'created_utc', nullable=False)
|
||||
op.drop_column('commentflags', 'created_datetimez')
|
||||
op.alter_column(table_name, from_column, nullable=False)
|
||||
op.drop_column(table_name, to_column)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue