Skip to content

Commit

Permalink
Update python_package_metadata_project_url without dropping the table
Browse files Browse the repository at this point in the history
  • Loading branch information
mayaCostantini committed Mar 18, 2022
1 parent 69a61cf commit b0a3823
Showing 1 changed file with 26 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
"""
from alembic import op
from sqlalchemy import MetaData

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

Expand All @@ -18,49 +20,38 @@

def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
connection = op.get_bind()
result = connection.execute("SELECT id, project_url FROM python_package_metadata_project_url").fetchall()
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))
projects_source_url = []
for r in result:
values = r[1].split(",")
if len(values) > 1:
projects_source_url.append({"id": r[0], "label": values[0], "url": values[1]})
else:
# cases where project URL has no label (no other found)
projects_source_url.append({"id": r[0], "label": None, "url": values[0]})

result_has = connection.execute(
"SELECT python_package_metadata_id,python_package_metadata_project_url_id FROM has_metadata_project_url"
).fetchall()
metadata_project_url_links = [
{"python_package_metadata_id": r[0], "python_package_metadata_project_url_id": r[1]} for r in result_has
]
op.drop_table("has_metadata_project_url")
op.drop_table("python_package_metadata_project_url")

python_package_metadata_project_url_table = op.create_table(
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),
sa.PrimaryKeyConstraint("id"),
)
has_metadata_project_url_table = op.create_table(
"has_metadata_project_url",
sa.Column("id", sa.Integer(), autoincrement=True, nullable=False),
sa.Column("python_package_metadata_id", sa.Integer(), nullable=False),
sa.Column("python_package_metadata_project_url_id", sa.Integer(), nullable=False),
sa.ForeignKeyConstraint(["python_package_metadata_id"], ["python_package_metadata.id"], ondelete="CASCADE"),
sa.ForeignKeyConstraint(
["python_package_metadata_project_url_id"], ["python_package_metadata_project_url.id"], ondelete="CASCADE"
),
sa.PrimaryKeyConstraint("id", "python_package_metadata_id", "python_package_metadata_project_url_id"),
)
op.bulk_insert(python_package_metadata_project_url_table, projects_source_url)
op.bulk_insert(has_metadata_project_url_table, metadata_project_url_links)
op.drop_column("has_metadata_project_url", "id")

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 ###


Expand Down

0 comments on commit b0a3823

Please sign in to comment.