summaryrefslogtreecommitdiffstats
path: root/alembic/versions
diff options
context:
space:
mode:
Diffstat (limited to 'alembic/versions')
-rw-r--r--alembic/versions/4a3773e332a0_use_utc_datetime_in_db.py.old110
1 files changed, 110 insertions, 0 deletions
diff --git a/alembic/versions/4a3773e332a0_use_utc_datetime_in_db.py.old b/alembic/versions/4a3773e332a0_use_utc_datetime_in_db.py.old
new file mode 100644
index 0000000..e011a3a
--- /dev/null
+++ b/alembic/versions/4a3773e332a0_use_utc_datetime_in_db.py.old
@@ -0,0 +1,110 @@
+"""use UTC DateTime in DB
+
+Revision ID: 4a3773e332a0
+Revises:
+Create Date: 2022-11-15 17:35:11.717714
+
+"""
+from alembic import op
+import sqlalchemy as sa
+
+
+# revision identifiers, used by Alembic.
+revision = '4a3773e332a0'
+down_revision = None
+branch_labels = None
+depends_on = None
+
+
+def upgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.add_column('borrows', sa.Column('purchase_utc', sa.DateTime(), nullable=True))
+ op.add_column('borrows', sa.Column('expiration_utc', sa.DateTime(), nullable=True))
+ op.add_column('borrows', sa.Column('purchase_timezone', sa.Integer(), nullable=True))
+ op.add_column('borrows', sa.Column('expiration_timezone', sa.Integer(), nullable=True))
+ borrows = sa.Table(
+ "borrows",
+ sa.MetaData(),
+ sa.Column("id", sa.Integer, primary_key=True, nullable=False),
+ sa.Column("purchase", sa.String, nullable=True),
+ sa.Column("expiration", sa.String, nullable=True),
+ sa.Column("purchase_utc", sa.DateTime, nullable=True),
+ sa.Column("expiration_utc", sa.DateTime, nullable=True),
+ sa.Column("purchase_timezone", sa.Integer, nullable=True),
+ sa.Column("expiration_timezone", sa.Integer, nullable=True)
+ )
+ connection = op.get_bind()
+ results = connection.execute(sa.select([
+ borrows.c.id,
+ borrows.c.purchase,
+ borrows.c.expiration,
+ borrows.c.purchase_utc,
+ borrows.c.expiration_utc,
+ borrows.c.purchase_timezone,
+ borrows.c.expiration_timezone
+ ])).fetchall()
+ from datetime import datetime, timezone
+ for id, purchase, expiration, purchase_utc, expiration_utc, purchase_timezone, expiration_timezone in results:
+ if id % 1000 == 0:
+ print(f"... obdelujem id {id}", end="\r")
+ if purchase == None:
+ print(f"at id {id} purchase is None")
+ continue
+ purchase_utc = datetime.strptime(purchase, "%Y-%m-%dT%H:%M:%S%z")
+ expiration_utc = datetime.strptime(expiration, "%Y-%m-%dT%H:%M:%S%z")
+ purchase_timezone = purchase_utc.tzinfo.utcoffset(None).seconds
+ expiration_timezone = expiration_utc.tzinfo.utcoffset(None).seconds
+ purchase_utc = purchase_utc.astimezone(timezone.utc).replace(tzinfo=None)
+ expiration_utc = expiration_utc.astimezone(timezone.utc).replace(tzinfo=None)
+ connection.execute(borrows.update().where(borrows.c.id == id).values(
+ purchase_utc = purchase_utc,
+ expiration_utc = expiration_utc,
+ purchase_timezone = purchase_timezone,
+ expiration_timezone = expiration_timezone
+ ))
+ op.drop_column('borrows', 'expiration')
+ op.drop_column('borrows', 'purchase')
+ # ### end Alembic commands ###
+
+
+def downgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.add_column('borrows', sa.Column('purchase', sa.VARCHAR(), nullable=True))
+ op.add_column('borrows', sa.Column('expiration', sa.VARCHAR(), nullable=True))
+ borrows = sa.Table(
+ "borrows",
+ sa.MetaData(),
+ sa.Column("id", sa.Integer, primary_key=True, nullable=False),
+ sa.Column("purchase", sa.String, nullable=True),
+ sa.Column("expiration", sa.String, nullable=True),
+ sa.Column("purchase_utc", sa.DateTime, nullable=True),
+ sa.Column("expiration_utc", sa.DateTime, nullable=True),
+ sa.Column("purchase_timezone", sa.Integer, nullable=True),
+ sa.Column("expiration_timezone", sa.Integer, nullable=True)
+ )
+ connection = op.get_bind()
+ results = connection.execute(sa.select([
+ borrows.c.id,
+ borrows.c.purchase,
+ borrows.c.expiration,
+ borrows.c.purchase_utc,
+ borrows.c.expiration_utc,
+ borrows.c.purchase_timezone,
+ borrows.c.expiration_timezone
+ ])).fetchall()
+ from datetime import datetime, timezone, timedelta
+ for id, purchase, expiration, purchase_utc, expiration_utc, purchase_timezone, expiration_timezone in results:
+ if id % 1000 == 0:
+ print(f"... obdelujem id {id}", end="\r")
+ if purchase_utc == None:
+ print(f"at id {id} purchase_utc is None")
+ continue
+ connection.execute(borrows.update().where(borrows.c.id == id).values(
+ purchase = purchase_utc.astimezone(timezone(timedelta(seconds=purchase_timezone))).isoformat(),
+ expiration = expiration_utc.astimezone(timezone(timedelta(seconds=expiration_timezone))).isoformat()
+ ))
+ op.drop_column('borrows', 'expiration_timezone')
+ op.drop_column('borrows', 'purchase_timezone')
+ op.drop_column('borrows', 'expiration_utc')
+ op.drop_column('borrows', 'purchase_utc')
+ # ### end Alembic commands ###