57 lines
1.5 KiB
Python
57 lines
1.5 KiB
Python
|
"""
|
||
|
change action_device
|
||
|
|
||
|
Revision ID: 1bb2b5e0fae7
|
||
|
Revises: a0978ac6cf4a
|
||
|
Create Date: 2021-11-04 10:32:49.116399
|
||
|
|
||
|
"""
|
||
|
import sqlalchemy as sa
|
||
|
from alembic import context
|
||
|
from alembic import op
|
||
|
from sqlalchemy.dialects import postgresql
|
||
|
|
||
|
|
||
|
# revision identifiers, used by Alembic.
|
||
|
revision = '1bb2b5e0fae7'
|
||
|
down_revision = 'a0978ac6cf4a'
|
||
|
branch_labels = None
|
||
|
depends_on = None
|
||
|
|
||
|
|
||
|
def get_inv():
|
||
|
INV = context.get_x_argument(as_dictionary=True).get('inventory')
|
||
|
if not INV:
|
||
|
raise ValueError("Inventory value is not specified")
|
||
|
return INV
|
||
|
|
||
|
|
||
|
def upgrade_data():
|
||
|
con = op.get_bind()
|
||
|
|
||
|
values = f"action_id, {get_inv()}.action.created"
|
||
|
table = f"{get_inv()}.action_device"
|
||
|
joins = f"inner join {get_inv()}.action"
|
||
|
on = f"on {get_inv()}.action_device.action_id = {get_inv()}.action.id"
|
||
|
sql = f"select {values} from {table} {joins} {on}"
|
||
|
|
||
|
actions_devs = con.execute(sql)
|
||
|
for a in actions_devs:
|
||
|
action_id = a.action_id
|
||
|
created = a.created
|
||
|
sql = f"update {get_inv()}.action_device set created='{created}' where action_id='{action_id}';"
|
||
|
con.execute(sql)
|
||
|
|
||
|
|
||
|
def upgrade():
|
||
|
op.add_column('action_device',
|
||
|
sa.Column('created', sa.TIMESTAMP(timezone=True), server_default=sa.text('CURRENT_TIMESTAMP'),
|
||
|
nullable=False, comment='When Devicehub created this.'),
|
||
|
schema=f'{get_inv()}')
|
||
|
|
||
|
upgrade_data()
|
||
|
|
||
|
|
||
|
def downgrade():
|
||
|
op.drop_column('action_device', 'created', schema=f'{get_inv()}')
|