feat: use custom type to handle existing naive datetimes
This commit is contained in:
parent
e22abb383c
commit
39bdac1ecf
45 changed files with 210 additions and 84 deletions
85
migrations/versions/cb3d6f0cdb86_switch_to_timezone_aware.py
Normal file
85
migrations/versions/cb3d6f0cdb86_switch_to_timezone_aware.py
Normal file
|
@ -0,0 +1,85 @@
|
|||
"""switch to timezone aware
|
||||
|
||||
Revision ID: cb3d6f0cdb86
|
||||
Revises: 54b31e87fe33
|
||||
Create Date: 2024-12-06 17:34:51.630311
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'cb3d6f0cdb86'
|
||||
down_revision = '54b31e87fe33'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
def alter_column_to_timezone_aware(table_name, column_name):
|
||||
with op.batch_alter_table(table_name, schema=None) as batch_op:
|
||||
batch_op.alter_column(
|
||||
column_name,
|
||||
type_=sa.DateTime(timezone=True)
|
||||
)
|
||||
|
||||
# AbstractConfiguration derived tables
|
||||
configuration_tables = [
|
||||
"automation",
|
||||
"cloud_account",
|
||||
"bridge_conf",
|
||||
"country",
|
||||
"group",
|
||||
"mirror_list",
|
||||
"onion",
|
||||
"origin",
|
||||
"pool",
|
||||
"static_origin",
|
||||
"webhook"
|
||||
]
|
||||
for t in configuration_tables:
|
||||
alter_column_to_timezone_aware(t, 'added')
|
||||
alter_column_to_timezone_aware(t, 'updated')
|
||||
alter_column_to_timezone_aware(t, 'destroyed')
|
||||
|
||||
# AbstractResource derived tables
|
||||
resource_tables = [
|
||||
"bridge",
|
||||
"proxy",
|
||||
"smart_proxy",
|
||||
"automation_logs",
|
||||
"eotk"
|
||||
]
|
||||
for t in resource_tables:
|
||||
alter_column_to_timezone_aware(t, 'added')
|
||||
alter_column_to_timezone_aware(t, 'updated')
|
||||
alter_column_to_timezone_aware(t, 'deprecated')
|
||||
alter_column_to_timezone_aware(t, 'destroyed')
|
||||
|
||||
# Deprecation
|
||||
alter_column_to_timezone_aware("deprecation", "deprecated_at")
|
||||
|
||||
# Activity
|
||||
alter_column_to_timezone_aware("activity", "added")
|
||||
|
||||
# Alarm
|
||||
alter_column_to_timezone_aware("alarm", "state_changed")
|
||||
alter_column_to_timezone_aware("alarm", "last_updated")
|
||||
|
||||
# Bridge terraform_updated
|
||||
alter_column_to_timezone_aware("bridge", "terraform_updated")
|
||||
|
||||
# Proxy terraform_updated
|
||||
alter_column_to_timezone_aware("proxy", "terraform_updated")
|
||||
|
||||
# Automation last_run, next_run
|
||||
alter_column_to_timezone_aware("automation", "last_run")
|
||||
alter_column_to_timezone_aware("automation", "next_run")
|
||||
|
||||
# Onion cert_expiry
|
||||
alter_column_to_timezone_aware("onion", "cert_expiry")
|
||||
|
||||
|
||||
def downgrade():
|
||||
pass
|
Loading…
Add table
Add a link
Reference in a new issue