70 lines
2.1 KiB
Python
70 lines
2.1 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()}')
|
|
|
|
op.add_column('action_status',
|
|
sa.Column('trade_id', postgresql.UUID(as_uuid=True), nullable=True),
|
|
schema=f'{get_inv()}')
|
|
|
|
op.create_foreign_key("fk_action_status_trade",
|
|
"action_status", "trade",
|
|
["trade_id"], ["id"],
|
|
ondelete="SET NULL",
|
|
source_schema=f'{get_inv()}',
|
|
referent_schema=f'{get_inv()}')
|
|
|
|
upgrade_data()
|
|
|
|
|
|
def downgrade():
|
|
op.drop_constraint("fk_action_status_trade", "action_status", type_="foreignkey", schema=f'{get_inv()}')
|
|
op.drop_column('action_device', 'created', schema=f'{get_inv()}')
|
|
op.drop_column('action_status', 'trade_id', schema=f'{get_inv()}')
|