Source code for thoth.storages.data.alembic.versions.2b787ddad4a4_separate_the_project_url_column_from_

"""Separate the project_url column from the python_package_metadata_project_url table into two columns label and url

Revision ID: 2b787ddad4a4
Revises: 930b47e27b6c
Create Date: 2022-01-31 16:26:38.049747+00:00

"""
from alembic import op
from sqlalchemy import MetaData

import sqlalchemy as sa
from thoth.storages.graph.models import PythonPackageMetadataProjectUrl

# revision identifiers, used by Alembic.
revision = "2b787ddad4a4"
down_revision = "930b47e27b6c"
branch_labels = None
depends_on = None


[docs]def upgrade(): # ### commands auto generated by Alembic - please adjust! ### op.add_column("python_package_metadata_project_url", sa.Column("url", sa.Text(), nullable=True)) op.add_column("python_package_metadata_project_url", sa.Column("label", sa.Text(), nullable=True)) python_package_metadata_project_url_table = sa.Table( "python_package_metadata_project_url", MetaData(), sa.Column("id", sa.Integer(), autoincrement=True, nullable=False), sa.Column("project_url", sa.Text(), nullable=False), sa.Column("url", sa.Text(), nullable=True), sa.Column("label", sa.Text(), nullable=True), ) connection = op.get_bind() results = connection.execute( sa.select( [python_package_metadata_project_url_table.c.id, python_package_metadata_project_url_table.c.project_url] ) ).fetchall() for result in results: id_ = result[0] label_url = result[1].split(",") if len(label_url) == 2: label, url = label_url[0].strip(), label_url[1].strip() connection.execute( python_package_metadata_project_url_table.update() .where(python_package_metadata_project_url_table.c.id == id_) .values({"label": label, "url": url}) ) op.drop_column("python_package_metadata_project_url", "project_url")
# ### end Alembic commands ###
[docs]def downgrade(): # ### commands auto generated by Alembic - please adjust! ### connection = op.get_bind() op.add_column( "python_package_metadata_project_url", sa.Column("project_url", sa.TEXT(), autoincrement=False, nullable=True) ) result = connection.execute("SELECT id, label, url FROM python_package_metadata_project_url").fetchall() op.drop_column("python_package_metadata_project_url", "label") op.drop_column("python_package_metadata_project_url", "url") concat_label_url = [] for r in result: id_row = r[0] values_row = r[1] concat_label_url.append( {"id": id_row, "project_url": values_row[1] if values_row[0] is None else values_row.join(",")} ) op.batch_alter_table().bulk_insert(PythonPackageMetadataProjectUrl.__table__, concat_label_url)
# ### end Alembic commands ###