This is an automated email from the ASF dual-hosted git repository.

arm pushed a commit to branch name_to_key
in repository https://gitbox.apache.org/repos/asf/tooling-trusted-releases.git

commit 76ff84160fe39fd5732caaadaa4f6606ff5971e1
Author: Alastair McFarlane <[email protected]>
AuthorDate: Tue Mar 17 11:21:44 2026 +0000

    SQL migration
---
 migrations/versions/0059_2026.03.16_2c8e4716.py | 680 +++++++++++++++---------
 1 file changed, 416 insertions(+), 264 deletions(-)

diff --git a/migrations/versions/0059_2026.03.16_2c8e4716.py 
b/migrations/versions/0059_2026.03.16_2c8e4716.py
index dd44ad25..90094f5d 100644
--- a/migrations/versions/0059_2026.03.16_2c8e4716.py
+++ b/migrations/versions/0059_2026.03.16_2c8e4716.py
@@ -5,277 +5,429 @@ Revises: 0058_2026.03.12_2ebee77e
 Create Date: 2026-03-16 18:35:29.940455+00:00
 """
 
-from typing import Sequence, Union
+from collections.abc import Sequence
 
-from alembic import op
-import sqlmodel
-import atr.models.sql
 import sqlalchemy as sa
+from alembic import op
 
 # Revision identifiers, used by Alembic
-revision: str = '0059_2026.03.16_2c8e4716'
-down_revision: Union[str, None] = '0058_2026.03.12_2ebee77e'
-branch_labels: Union[str, Sequence[str], None] = None
-depends_on: Union[str, Sequence[str], None] = None
+revision: str = "0059_2026.03.16_2c8e4716"
+down_revision: str | None = "0058_2026.03.12_2ebee77e"
+branch_labels: str | Sequence[str] | None = None
+depends_on: str | Sequence[str] | None = None
 
 
 def upgrade() -> None:
-    # ### commands auto generated by Alembic - please adjust! ###
-    with op.batch_alter_table('checkresult', schema=None) as batch_op:
-        batch_op.add_column(sa.Column('release_key', sa.String(), 
nullable=False))
-        batch_op.drop_index(batch_op.f('ix_checkresult_release_name'))
-        batch_op.create_index(batch_op.f('ix_checkresult_release_key'), 
['release_key'], unique=False)
-        
batch_op.drop_constraint(batch_op.f('fk_checkresult_release_name_release'), 
type_='foreignkey')
-        
batch_op.create_foreign_key(batch_op.f('fk_checkresult_release_key_release'), 
'release', ['release_key'], ['key'], ondelete='CASCADE')
-        batch_op.drop_column('release_name')
-
-    with op.batch_alter_table('checkresultignore', schema=None) as batch_op:
-        batch_op.add_column(sa.Column('project_key', sa.String(), 
nullable=False))
-        
batch_op.drop_constraint(batch_op.f('fk_checkresultignore_project_name_project'),
 type_='foreignkey')
-        
batch_op.create_foreign_key(batch_op.f('fk_checkresultignore_project_key_project'),
 'project', ['project_key'], ['key'])
-        batch_op.drop_column('project_name')
-
-    with op.batch_alter_table('committee', schema=None) as batch_op:
-        batch_op.add_column(sa.Column('key', sa.String(), nullable=False))
-        batch_op.add_column(sa.Column('parent_committee_key', sa.String(), 
nullable=True))
-        batch_op.alter_column('name',
-               existing_type=sa.VARCHAR(),
-               nullable=True)
-        batch_op.drop_constraint(batch_op.f('uq_committee_name'), 
type_='unique')
-        batch_op.create_unique_constraint(batch_op.f('uq_committee_key'), 
['key'])
-        
batch_op.drop_constraint(batch_op.f('fk_committee_parent_committee_name_committee'),
 type_='foreignkey')
-        
batch_op.create_foreign_key(batch_op.f('fk_committee_parent_committee_key_committee'),
 'committee', ['parent_committee_key'], ['key'])
-        batch_op.drop_column('full_name')
-        batch_op.drop_column('parent_committee_name')
-
-    with op.batch_alter_table('distribution', schema=None) as batch_op:
-        batch_op.add_column(sa.Column('release_key', sa.String(), 
nullable=False))
-        batch_op.drop_index(batch_op.f('ix_distribution_release_name'))
-        batch_op.create_index(batch_op.f('ix_distribution_release_key'), 
['release_key'], unique=False)
-        
batch_op.drop_constraint(batch_op.f('fk_distribution_release_name_release'), 
type_='foreignkey')
-        
batch_op.create_foreign_key(batch_op.f('fk_distribution_release_key_release'), 
'release', ['release_key'], ['key'], ondelete='CASCADE')
-        batch_op.drop_column('release_name')
-
-    with op.batch_alter_table('keylink', schema=None) as batch_op:
-        batch_op.add_column(sa.Column('committee_key', sa.String(), 
nullable=False))
-        
batch_op.drop_constraint(batch_op.f('fk_keylink_committee_name_committee'), 
type_='foreignkey')
-        
batch_op.create_foreign_key(batch_op.f('fk_keylink_committee_key_committee'), 
'committee', ['committee_key'], ['key'])
-        batch_op.drop_column('committee_name')
-
-    with op.batch_alter_table('project', schema=None) as batch_op:
-        batch_op.add_column(sa.Column('key', sa.String(), nullable=False))
-        batch_op.add_column(sa.Column('super_project_key', sa.String(), 
nullable=True))
-        batch_op.add_column(sa.Column('committee_key', sa.String(), 
nullable=True))
-        batch_op.alter_column('name',
-               existing_type=sa.VARCHAR(),
-               nullable=True)
-        batch_op.drop_constraint(batch_op.f('uq_project_name'), type_='unique')
-        batch_op.create_unique_constraint(batch_op.f('uq_project_key'), 
['key'])
-        
batch_op.drop_constraint(batch_op.f('fk_project_committee_name_committee'), 
type_='foreignkey')
-        
batch_op.drop_constraint(batch_op.f('fk_project_super_project_name_project'), 
type_='foreignkey')
-        
batch_op.create_foreign_key(batch_op.f('fk_project_super_project_key_project'), 
'project', ['super_project_key'], ['key'])
-        
batch_op.create_foreign_key(batch_op.f('fk_project_committee_key_committee'), 
'committee', ['committee_key'], ['key'])
-        batch_op.drop_column('full_name')
-        batch_op.drop_column('super_project_name')
-        batch_op.drop_column('committee_name')
-
-    with op.batch_alter_table('quarantined', schema=None) as batch_op:
-        batch_op.add_column(sa.Column('release_key', sa.String(), 
nullable=False))
-        batch_op.add_column(sa.Column('prior_revision_key', sa.String(), 
nullable=True))
-        batch_op.drop_index(batch_op.f('ix_quarantined_release_name'))
-        batch_op.create_index(batch_op.f('ix_quarantined_release_key'), 
['release_key'], unique=False)
-        
batch_op.drop_constraint(batch_op.f('fk_quarantined_release_name_release'), 
type_='foreignkey')
-        
batch_op.create_foreign_key(batch_op.f('fk_quarantined_release_key_release'), 
'release', ['release_key'], ['key'], ondelete='CASCADE')
-        batch_op.drop_column('release_name')
-        batch_op.drop_column('prior_revision_name')
-
-    with op.batch_alter_table('release', schema=None) as batch_op:
-        batch_op.add_column(sa.Column('key', sa.String(), nullable=False))
-        batch_op.add_column(sa.Column('project_key', sa.String(), 
nullable=False))
-        batch_op.drop_constraint(batch_op.f('uq_release_name'), type_='unique')
-        batch_op.drop_constraint(batch_op.f('unique_project_version'), 
type_='unique')
-        batch_op.create_unique_constraint('unique_project_version', 
['project_key', 'version'])
-        batch_op.create_unique_constraint(batch_op.f('uq_release_key'), 
['key'])
-        
batch_op.drop_constraint(batch_op.f('fk_release_project_name_project'), 
type_='foreignkey')
-        
batch_op.create_foreign_key(batch_op.f('fk_release_project_key_project'), 
'project', ['project_key'], ['key'])
-        batch_op.drop_column('name')
-        batch_op.drop_column('project_name')
-
-    with op.batch_alter_table('revision', schema=None) as batch_op:
-        batch_op.add_column(sa.Column('key', sa.String(), nullable=False))
-        batch_op.add_column(sa.Column('release_key', sa.String(), 
nullable=True))
-        batch_op.add_column(sa.Column('parent_key', sa.String(), 
nullable=True))
-        batch_op.add_column(sa.Column('merge_base_revision_key', sa.String(), 
nullable=True))
-        batch_op.drop_constraint(batch_op.f('uq_revision_name'), 
type_='unique')
-        batch_op.drop_constraint(batch_op.f('uq_revision_release_number'), 
type_='unique')
-        batch_op.create_unique_constraint('uq_revision_release_number', 
['release_key', 'number'])
-        batch_op.drop_constraint(batch_op.f('uq_revision_release_seq'), 
type_='unique')
-        batch_op.create_unique_constraint('uq_revision_release_seq', 
['release_key', 'seq'])
-        batch_op.create_unique_constraint(batch_op.f('uq_revision_key'), 
['key'])
-        
batch_op.drop_constraint(batch_op.f('fk_revision_release_name_release'), 
type_='foreignkey')
-        
batch_op.drop_constraint(batch_op.f('fk_revision_parent_name_revision'), 
type_='foreignkey')
-        
batch_op.create_foreign_key(batch_op.f('fk_revision_release_key_release'), 
'release', ['release_key'], ['key'])
-        
batch_op.create_foreign_key(batch_op.f('fk_revision_parent_key_revision'), 
'revision', ['parent_key'], ['key'])
-        batch_op.drop_column('name')
-        batch_op.drop_column('parent_name')
-        batch_op.drop_column('merge_base_revision_name')
-        batch_op.drop_column('release_name')
-
-    with op.batch_alter_table('revisioncounter', schema=None) as batch_op:
-        batch_op.add_column(sa.Column('release_key', sa.String(), 
nullable=False))
-        batch_op.drop_column('release_name')
-
-    with op.batch_alter_table('task', schema=None) as batch_op:
-        batch_op.add_column(sa.Column('project_key', sa.String(), 
nullable=True))
-        batch_op.add_column(sa.Column('version_key', sa.String(), 
nullable=True))
-        batch_op.drop_index(batch_op.f('ix_task_version_name'))
-        batch_op.create_index(batch_op.f('ix_task_version_key'), 
['version_key'], unique=False)
-        batch_op.drop_constraint(None, type_='foreignkey')
-        batch_op.create_foreign_key(batch_op.f('fk_task_project_key_project'), 
'project', ['project_key'], ['key'])
-        batch_op.drop_column('project_name')
-        batch_op.drop_column('version_name')
-
-    with op.batch_alter_table('workflowsshkey', schema=None) as batch_op:
-        batch_op.add_column(sa.Column('project_key', sa.String(), 
nullable=False))
-        batch_op.drop_index(batch_op.f('ix_workflowsshkey_project_name'))
-        batch_op.create_index(batch_op.f('ix_workflowsshkey_project_key'), 
['project_key'], unique=False)
-        batch_op.drop_column('project_name')
-
-    with op.batch_alter_table('workflowstatus', schema=None) as batch_op:
-        batch_op.add_column(sa.Column('project_key', sa.String(), 
nullable=False))
-        batch_op.drop_index(batch_op.f('ix_workflowstatus_project_name'))
-        batch_op.create_index(batch_op.f('ix_workflowstatus_project_key'), 
['project_key'], unique=False)
-        batch_op.drop_column('project_name')
-
-    # ### end Alembic commands ###
+    # --- committee ---
+    op.add_column("committee", sa.Column("key", sa.String(), nullable=True))
+    op.add_column("committee", sa.Column("parent_committee_key", sa.String(), 
nullable=True))
+    op.execute(sa.text("UPDATE committee SET key = name, parent_committee_key 
= parent_committee_name"))
+    # We split the batch into two because, despite the inefficency,
+    # we can"t run the name update and the unique drop in the same batch
+    with op.batch_alter_table("committee", schema=None) as batch_op:
+        batch_op.alter_column("key", existing_type=sa.String(), nullable=False)
+        batch_op.alter_column("name", existing_type=sa.VARCHAR(), 
nullable=True)
+        batch_op.drop_constraint(batch_op.f("pk_committee"), type_="primary")
+        batch_op.create_primary_key(batch_op.f("pk_committee"), ["key"])
+        batch_op.drop_constraint(batch_op.f("uq_committee_name"), 
type_="unique")
+    op.execute(sa.text("UPDATE committee SET name = full_name"))
+    with op.batch_alter_table("committee", schema=None) as batch_op:
+        batch_op.create_unique_constraint(batch_op.f("uq_committee_key"), 
["key"])
+        
batch_op.drop_constraint(batch_op.f("fk_committee_parent_committee_name_committee"),
 type_="foreignkey")
+        batch_op.create_foreign_key(
+            batch_op.f("fk_committee_parent_committee_key_committee"), 
"committee", ["parent_committee_key"], ["key"]
+        )
+        batch_op.drop_column("full_name")
+        batch_op.drop_column("parent_committee_name")
+
+    # --- project ---
+    op.add_column("project", sa.Column("key", sa.String(), nullable=True))
+    op.add_column("project", sa.Column("super_project_key", sa.String(), 
nullable=True))
+    op.add_column("project", sa.Column("committee_key", sa.String(), 
nullable=True))
+    op.execute(
+        sa.text("UPDATE project SET key = name, super_project_key = 
super_project_name, committee_key = committee_name")
+    )
+    # We split the batch into two because, despite the inefficency,
+    # we can"t run the name update and the unique drop in the same batch
+    with op.batch_alter_table("project", schema=None) as batch_op:
+        batch_op.alter_column("key", existing_type=sa.String(), nullable=False)
+        batch_op.alter_column("name", existing_type=sa.VARCHAR(), 
nullable=True)
+        batch_op.drop_constraint(batch_op.f("pk_project"), type_="primary")
+        batch_op.create_primary_key(batch_op.f("pk_project"), ["key"])
+        batch_op.drop_constraint(batch_op.f("uq_project_name"), type_="unique")
+    op.execute(sa.text("UPDATE project SET name = full_name"))
+    with op.batch_alter_table("project", schema=None) as batch_op:
+        batch_op.create_unique_constraint(batch_op.f("uq_project_key"), 
["key"])
+        
batch_op.drop_constraint(batch_op.f("fk_project_committee_name_committee"), 
type_="foreignkey")
+        
batch_op.drop_constraint(batch_op.f("fk_project_super_project_name_project"), 
type_="foreignkey")
+        batch_op.create_foreign_key(
+            batch_op.f("fk_project_super_project_key_project"), "project", 
["super_project_key"], ["key"]
+        )
+        batch_op.create_foreign_key(
+            batch_op.f("fk_project_committee_key_committee"), "committee", 
["committee_key"], ["key"]
+        )
+        batch_op.drop_column("full_name")
+        batch_op.drop_column("super_project_name")
+        batch_op.drop_column("committee_name")
+
+    # --- release ---
+    op.add_column("release", sa.Column("key", sa.String(), nullable=True))
+    op.add_column("release", sa.Column("project_key", sa.String(), 
nullable=True))
+    op.execute(sa.text("UPDATE release SET key = name, project_key = 
project_name"))
+    with op.batch_alter_table("release", schema=None) as batch_op:
+        batch_op.alter_column("key", existing_type=sa.String(), nullable=False)
+        batch_op.alter_column("project_key", existing_type=sa.String(), 
nullable=False)
+        batch_op.drop_constraint(batch_op.f("pk_release"), type_="primary")
+        batch_op.create_primary_key(batch_op.f("pk_release"), ["key"])
+        batch_op.drop_constraint(batch_op.f("uq_release_name"), type_="unique")
+        batch_op.drop_constraint(batch_op.f("unique_project_version"), 
type_="unique")
+        batch_op.create_unique_constraint("unique_project_version", 
["project_key", "version"])
+        batch_op.create_unique_constraint(batch_op.f("uq_release_key"), 
["key"])
+        
batch_op.drop_constraint(batch_op.f("fk_release_project_name_project"), 
type_="foreignkey")
+        
batch_op.create_foreign_key(batch_op.f("fk_release_project_key_project"), 
"project", ["project_key"], ["key"])
+        batch_op.drop_column("name")
+        batch_op.drop_column("project_name")
+
+    # --- revision ---
+    op.add_column("revision", sa.Column("key", sa.String(), nullable=True))
+    op.add_column("revision", sa.Column("release_key", sa.String(), 
nullable=True))
+    op.add_column("revision", sa.Column("parent_key", sa.String(), 
nullable=True))
+    op.add_column("revision", sa.Column("merge_base_revision_key", 
sa.String(), nullable=True))
+    op.execute(
+        sa.text(
+            "UPDATE revision SET key = name, release_key = release_name, 
parent_key = parent_name, "
+            "merge_base_revision_key = merge_base_revision_name"
+        )
+    )
+    with op.batch_alter_table("revision", schema=None) as batch_op:
+        batch_op.alter_column("key", existing_type=sa.String(), nullable=False)
+        batch_op.drop_constraint(batch_op.f("pk_revision"), type_="primary")
+        batch_op.create_primary_key(batch_op.f("pk_revision"), ["key"])
+        batch_op.drop_constraint(batch_op.f("uq_revision_name"), 
type_="unique")
+        batch_op.drop_constraint(batch_op.f("uq_revision_release_number"), 
type_="unique")
+        batch_op.create_unique_constraint("uq_revision_release_number", 
["release_key", "number"])
+        batch_op.drop_constraint(batch_op.f("uq_revision_release_seq"), 
type_="unique")
+        batch_op.create_unique_constraint("uq_revision_release_seq", 
["release_key", "seq"])
+        batch_op.create_unique_constraint(batch_op.f("uq_revision_key"), 
["key"])
+        
batch_op.drop_constraint(batch_op.f("fk_revision_release_name_release"), 
type_="foreignkey")
+        
batch_op.drop_constraint(batch_op.f("fk_revision_parent_name_revision"), 
type_="foreignkey")
+        
batch_op.create_foreign_key(batch_op.f("fk_revision_release_key_release"), 
"release", ["release_key"], ["key"])
+        
batch_op.create_foreign_key(batch_op.f("fk_revision_parent_key_revision"), 
"revision", ["parent_key"], ["key"])
+        batch_op.drop_column("name")
+        batch_op.drop_column("parent_name")
+        batch_op.drop_column("merge_base_revision_name")
+        batch_op.drop_column("release_name")
+
+    # --- checkresult ---
+    op.add_column("checkresult", sa.Column("release_key", sa.String(), 
nullable=True))
+    op.execute(sa.text("UPDATE checkresult SET release_key = release_name"))
+    with op.batch_alter_table("checkresult", schema=None) as batch_op:
+        batch_op.alter_column("release_key", existing_type=sa.String(), 
nullable=False)
+        batch_op.drop_index(batch_op.f("ix_checkresult_release_name"))
+        batch_op.create_index(batch_op.f("ix_checkresult_release_key"), 
["release_key"], unique=False)
+        
batch_op.drop_constraint(batch_op.f("fk_checkresult_release_name_release"), 
type_="foreignkey")
+        batch_op.create_foreign_key(
+            batch_op.f("fk_checkresult_release_key_release"), "release", 
["release_key"], ["key"], ondelete="CASCADE"
+        )
+        batch_op.drop_column("release_name")
+
+    # --- checkresultignore ---
+    op.add_column("checkresultignore", sa.Column("project_key", sa.String(), 
nullable=True))
+    op.execute(sa.text("UPDATE checkresultignore SET project_key = 
project_name"))
+    with op.batch_alter_table("checkresultignore", schema=None) as batch_op:
+        batch_op.alter_column("project_key", existing_type=sa.String(), 
nullable=False)
+        
batch_op.drop_constraint(batch_op.f("fk_checkresultignore_project_name_project"),
 type_="foreignkey")
+        batch_op.create_foreign_key(
+            batch_op.f("fk_checkresultignore_project_key_project"), "project", 
["project_key"], ["key"]
+        )
+        batch_op.drop_column("project_name")
+
+    # --- distribution ---
+    op.add_column("distribution", sa.Column("release_key", sa.String(), 
nullable=True))
+    op.execute(sa.text("UPDATE distribution SET release_key = release_name"))
+    with op.batch_alter_table("distribution", schema=None) as batch_op:
+        batch_op.alter_column("release_key", existing_type=sa.String(), 
nullable=False)
+        batch_op.drop_index(batch_op.f("ix_distribution_release_name"))
+        batch_op.create_index(batch_op.f("ix_distribution_release_key"), 
["release_key"], unique=False)
+        
batch_op.drop_constraint(batch_op.f("fk_distribution_release_name_release"), 
type_="foreignkey")
+        batch_op.create_foreign_key(
+            batch_op.f("fk_distribution_release_key_release"), "release", 
["release_key"], ["key"], ondelete="CASCADE"
+        )
+        batch_op.drop_column("release_name")
+
+    # --- keylink ---
+    op.add_column("keylink", sa.Column("committee_key", sa.String(), 
nullable=True))
+    op.execute(sa.text("UPDATE keylink SET committee_key = committee_name"))
+    with op.batch_alter_table("keylink", schema=None) as batch_op:
+        batch_op.alter_column("committee_key", existing_type=sa.String(), 
nullable=False)
+        
batch_op.drop_constraint(batch_op.f("fk_keylink_committee_name_committee"), 
type_="foreignkey")
+        batch_op.drop_constraint(batch_op.f("pk_keylink"), type_="primary")
+        batch_op.create_primary_key(batch_op.f("pk_keylink"), 
["committee_key", "key_fingerprint"])
+        batch_op.create_foreign_key(
+            batch_op.f("fk_keylink_committee_key_committee"), "committee", 
["committee_key"], ["key"]
+        )
+        batch_op.drop_column("committee_name")
+
+    # --- quarantined ---
+    op.add_column("quarantined", sa.Column("release_key", sa.String(), 
nullable=True))
+    op.add_column("quarantined", sa.Column("prior_revision_key", sa.String(), 
nullable=True))
+    op.execute(sa.text("UPDATE quarantined SET release_key = release_name, 
prior_revision_key = prior_revision_name"))
+    with op.batch_alter_table("quarantined", schema=None) as batch_op:
+        batch_op.alter_column("release_key", existing_type=sa.String(), 
nullable=False)
+        batch_op.drop_index(batch_op.f("ix_quarantined_release_name"))
+        batch_op.create_index(batch_op.f("ix_quarantined_release_key"), 
["release_key"], unique=False)
+        
batch_op.drop_constraint(batch_op.f("fk_quarantined_release_name_release"), 
type_="foreignkey")
+        batch_op.create_foreign_key(
+            batch_op.f("fk_quarantined_release_key_release"), "release", 
["release_key"], ["key"], ondelete="CASCADE"
+        )
+        batch_op.drop_column("release_name")
+        batch_op.drop_column("prior_revision_name")
+
+    # --- revisioncounter ---
+    op.add_column("revisioncounter", sa.Column("release_key", sa.String(), 
nullable=True))
+    op.execute(sa.text("UPDATE revisioncounter SET release_key = 
release_name"))
+    with op.batch_alter_table("revisioncounter", schema=None) as batch_op:
+        batch_op.alter_column("release_key", existing_type=sa.String(), 
nullable=False)
+        batch_op.drop_constraint(batch_op.f("pk_revisioncounter"), 
type_="primary")
+        batch_op.create_primary_key(batch_op.f("pk_revisioncounter"), 
["release_key"])
+        batch_op.drop_column("release_name")
+
+    # --- task ---
+    op.add_column("task", sa.Column("project_key", sa.String(), nullable=True))
+    op.add_column("task", sa.Column("version_key", sa.String(), nullable=True))
+    op.execute(sa.text("UPDATE task SET project_key = project_name, 
version_key = version_name"))
+    with op.batch_alter_table("task", schema=None) as batch_op:
+        batch_op.drop_index(batch_op.f("ix_task_version_name"))
+        batch_op.create_index(batch_op.f("ix_task_version_key"), 
["version_key"], unique=False)
+        batch_op.create_foreign_key(batch_op.f("fk_task_project_key_project"), 
"project", ["project_key"], ["key"])
+        batch_op.drop_column("project_name")
+        batch_op.drop_column("version_name")
+
+    # --- workflowsshkey ---
+    op.add_column("workflowsshkey", sa.Column("project_key", sa.String(), 
nullable=True))
+    op.execute(sa.text("UPDATE workflowsshkey SET project_key = project_name"))
+    with op.batch_alter_table("workflowsshkey", schema=None) as batch_op:
+        batch_op.alter_column("project_key", existing_type=sa.String(), 
nullable=False)
+        batch_op.drop_index(batch_op.f("ix_workflowsshkey_project_name"))
+        batch_op.create_index(batch_op.f("ix_workflowsshkey_project_key"), 
["project_key"], unique=False)
+        batch_op.drop_column("project_name")
+
+    # --- workflowstatus ---
+    op.add_column("workflowstatus", sa.Column("project_key", sa.String(), 
nullable=True))
+    op.execute(sa.text("UPDATE workflowstatus SET project_key = project_name"))
+    with op.batch_alter_table("workflowstatus", schema=None) as batch_op:
+        batch_op.alter_column("project_key", existing_type=sa.String(), 
nullable=False)
+        batch_op.drop_index(batch_op.f("ix_workflowstatus_project_name"))
+        batch_op.create_index(batch_op.f("ix_workflowstatus_project_key"), 
["project_key"], unique=False)
+        batch_op.drop_column("project_name")
 
 
 def downgrade() -> None:
-    # ### commands auto generated by Alembic - please adjust! ###
-    with op.batch_alter_table('workflowstatus', schema=None) as batch_op:
-        batch_op.add_column(sa.Column('project_name', sa.VARCHAR(), 
nullable=False))
-        batch_op.drop_index(batch_op.f('ix_workflowstatus_project_key'))
-        batch_op.create_index(batch_op.f('ix_workflowstatus_project_name'), 
['project_name'], unique=False)
-        batch_op.drop_column('project_key')
-
-    with op.batch_alter_table('workflowsshkey', schema=None) as batch_op:
-        batch_op.add_column(sa.Column('project_name', sa.VARCHAR(), 
nullable=False))
-        batch_op.drop_index(batch_op.f('ix_workflowsshkey_project_key'))
-        batch_op.create_index(batch_op.f('ix_workflowsshkey_project_name'), 
['project_name'], unique=False)
-        batch_op.drop_column('project_key')
-
-    with op.batch_alter_table('task', schema=None) as batch_op:
-        batch_op.add_column(sa.Column('version_name', sa.VARCHAR(), 
nullable=True))
-        batch_op.add_column(sa.Column('project_name', sa.VARCHAR(), 
nullable=True))
-        batch_op.drop_constraint(batch_op.f('fk_task_project_key_project'), 
type_='foreignkey')
-        batch_op.create_foreign_key(None, 'project', ['project_name'], 
['name'])
-        batch_op.drop_index(batch_op.f('ix_task_version_key'))
-        batch_op.create_index(batch_op.f('ix_task_version_name'), 
['version_name'], unique=False)
-        batch_op.drop_column('version_key')
-        batch_op.drop_column('project_key')
-
-    with op.batch_alter_table('revisioncounter', schema=None) as batch_op:
-        batch_op.add_column(sa.Column('release_name', sa.VARCHAR(), 
nullable=False))
-        batch_op.drop_column('release_key')
-
-    with op.batch_alter_table('revision', schema=None) as batch_op:
-        batch_op.add_column(sa.Column('release_name', sa.VARCHAR(), 
nullable=True))
-        batch_op.add_column(sa.Column('merge_base_revision_name', 
sa.VARCHAR(), nullable=True))
-        batch_op.add_column(sa.Column('parent_name', sa.VARCHAR(), 
nullable=True))
-        batch_op.add_column(sa.Column('name', sa.VARCHAR(), nullable=False))
-        
batch_op.drop_constraint(batch_op.f('fk_revision_parent_key_revision'), 
type_='foreignkey')
-        
batch_op.drop_constraint(batch_op.f('fk_revision_release_key_release'), 
type_='foreignkey')
-        
batch_op.create_foreign_key(batch_op.f('fk_revision_parent_name_revision'), 
'revision', ['parent_name'], ['name'])
-        
batch_op.create_foreign_key(batch_op.f('fk_revision_release_name_release'), 
'release', ['release_name'], ['name'])
-        batch_op.drop_constraint(batch_op.f('uq_revision_key'), type_='unique')
-        batch_op.drop_constraint('uq_revision_release_seq', type_='unique')
-        
batch_op.create_unique_constraint(batch_op.f('uq_revision_release_seq'), 
['release_name', 'seq'])
-        batch_op.drop_constraint('uq_revision_release_number', type_='unique')
-        
batch_op.create_unique_constraint(batch_op.f('uq_revision_release_number'), 
['release_name', 'number'])
-        batch_op.create_unique_constraint(batch_op.f('uq_revision_name'), 
['name'])
-        batch_op.drop_column('merge_base_revision_key')
-        batch_op.drop_column('parent_key')
-        batch_op.drop_column('release_key')
-        batch_op.drop_column('key')
-
-    with op.batch_alter_table('release', schema=None) as batch_op:
-        batch_op.add_column(sa.Column('project_name', sa.VARCHAR(), 
nullable=False))
-        batch_op.add_column(sa.Column('name', sa.VARCHAR(), nullable=False))
-        batch_op.drop_constraint(batch_op.f('fk_release_project_key_project'), 
type_='foreignkey')
-        
batch_op.create_foreign_key(batch_op.f('fk_release_project_name_project'), 
'project', ['project_name'], ['name'])
-        batch_op.drop_constraint(batch_op.f('uq_release_key'), type_='unique')
-        batch_op.drop_constraint('unique_project_version', type_='unique')
-        
batch_op.create_unique_constraint(batch_op.f('unique_project_version'), 
['project_name', 'version'])
-        batch_op.create_unique_constraint(batch_op.f('uq_release_name'), 
['name'])
-        batch_op.drop_column('project_key')
-        batch_op.drop_column('key')
-
-    with op.batch_alter_table('quarantined', schema=None) as batch_op:
-        batch_op.add_column(sa.Column('prior_revision_name', sa.VARCHAR(), 
nullable=True))
-        batch_op.add_column(sa.Column('release_name', sa.VARCHAR(), 
nullable=False))
-        
batch_op.drop_constraint(batch_op.f('fk_quarantined_release_key_release'), 
type_='foreignkey')
-        
batch_op.create_foreign_key(batch_op.f('fk_quarantined_release_name_release'), 
'release', ['release_name'], ['name'], ondelete='CASCADE')
-        batch_op.drop_index(batch_op.f('ix_quarantined_release_key'))
-        batch_op.create_index(batch_op.f('ix_quarantined_release_name'), 
['release_name'], unique=False)
-        batch_op.drop_column('prior_revision_key')
-        batch_op.drop_column('release_key')
-
-    with op.batch_alter_table('project', schema=None) as batch_op:
-        batch_op.add_column(sa.Column('committee_name', sa.VARCHAR(), 
nullable=True))
-        batch_op.add_column(sa.Column('super_project_name', sa.VARCHAR(), 
nullable=True))
-        batch_op.add_column(sa.Column('full_name', sa.VARCHAR(), 
nullable=True))
-        
batch_op.drop_constraint(batch_op.f('fk_project_committee_key_committee'), 
type_='foreignkey')
-        
batch_op.drop_constraint(batch_op.f('fk_project_super_project_key_project'), 
type_='foreignkey')
-        
batch_op.create_foreign_key(batch_op.f('fk_project_super_project_name_project'),
 'project', ['super_project_name'], ['name'])
-        
batch_op.create_foreign_key(batch_op.f('fk_project_committee_name_committee'), 
'committee', ['committee_name'], ['name'])
-        batch_op.drop_constraint(batch_op.f('uq_project_key'), type_='unique')
-        batch_op.create_unique_constraint(batch_op.f('uq_project_name'), 
['name'])
-        batch_op.alter_column('name',
-               existing_type=sa.VARCHAR(),
-               nullable=False)
-        batch_op.drop_column('committee_key')
-        batch_op.drop_column('super_project_key')
-        batch_op.drop_column('key')
-
-    with op.batch_alter_table('keylink', schema=None) as batch_op:
-        batch_op.add_column(sa.Column('committee_name', sa.VARCHAR(), 
nullable=False))
-        
batch_op.drop_constraint(batch_op.f('fk_keylink_committee_key_committee'), 
type_='foreignkey')
-        
batch_op.create_foreign_key(batch_op.f('fk_keylink_committee_name_committee'), 
'committee', ['committee_name'], ['name'])
-        batch_op.drop_column('committee_key')
-
-    with op.batch_alter_table('distribution', schema=None) as batch_op:
-        batch_op.add_column(sa.Column('release_name', sa.VARCHAR(), 
nullable=False))
-        
batch_op.drop_constraint(batch_op.f('fk_distribution_release_key_release'), 
type_='foreignkey')
-        
batch_op.create_foreign_key(batch_op.f('fk_distribution_release_name_release'), 
'release', ['release_name'], ['name'], ondelete='CASCADE')
-        batch_op.drop_index(batch_op.f('ix_distribution_release_key'))
-        batch_op.create_index(batch_op.f('ix_distribution_release_name'), 
['release_name'], unique=False)
-        batch_op.drop_column('release_key')
-
-    with op.batch_alter_table('committee', schema=None) as batch_op:
-        batch_op.add_column(sa.Column('parent_committee_name', sa.VARCHAR(), 
nullable=True))
-        batch_op.add_column(sa.Column('full_name', sa.VARCHAR(), 
nullable=True))
-        
batch_op.drop_constraint(batch_op.f('fk_committee_parent_committee_key_committee'),
 type_='foreignkey')
-        
batch_op.create_foreign_key(batch_op.f('fk_committee_parent_committee_name_committee'),
 'committee', ['parent_committee_name'], ['name'])
-        batch_op.drop_constraint(batch_op.f('uq_committee_key'), 
type_='unique')
-        batch_op.create_unique_constraint(batch_op.f('uq_committee_name'), 
['name'])
-        batch_op.alter_column('name',
-               existing_type=sa.VARCHAR(),
-               nullable=False)
-        batch_op.drop_column('parent_committee_key')
-        batch_op.drop_column('key')
-
-    with op.batch_alter_table('checkresultignore', schema=None) as batch_op:
-        batch_op.add_column(sa.Column('project_name', sa.VARCHAR(), 
nullable=False))
-        
batch_op.drop_constraint(batch_op.f('fk_checkresultignore_project_key_project'),
 type_='foreignkey')
-        
batch_op.create_foreign_key(batch_op.f('fk_checkresultignore_project_name_project'),
 'project', ['project_name'], ['name'])
-        batch_op.drop_column('project_key')
-
-    with op.batch_alter_table('checkresult', schema=None) as batch_op:
-        batch_op.add_column(sa.Column('release_name', sa.VARCHAR(), 
nullable=False))
-        
batch_op.drop_constraint(batch_op.f('fk_checkresult_release_key_release'), 
type_='foreignkey')
-        
batch_op.create_foreign_key(batch_op.f('fk_checkresult_release_name_release'), 
'release', ['release_name'], ['name'], ondelete='CASCADE')
-        batch_op.drop_index(batch_op.f('ix_checkresult_release_key'))
-        batch_op.create_index(batch_op.f('ix_checkresult_release_name'), 
['release_name'], unique=False)
-        batch_op.drop_column('release_key')
-
-    # ### end Alembic commands ###
+    # --- workflowstatus ---
+    op.add_column("workflowstatus", sa.Column("project_name", sa.VARCHAR(), 
nullable=True))
+    op.execute(sa.text("UPDATE workflowstatus SET project_name = project_key"))
+    with op.batch_alter_table("workflowstatus", schema=None) as batch_op:
+        batch_op.alter_column("project_name", existing_type=sa.VARCHAR(), 
nullable=False)
+        batch_op.drop_index(batch_op.f("ix_workflowstatus_project_key"))
+        batch_op.create_index(batch_op.f("ix_workflowstatus_project_name"), 
["project_name"], unique=False)
+        batch_op.drop_column("project_key")
+
+    # --- workflowsshkey ---
+    op.add_column("workflowsshkey", sa.Column("project_name", sa.VARCHAR(), 
nullable=True))
+    op.execute(sa.text("UPDATE workflowsshkey SET project_name = project_key"))
+    with op.batch_alter_table("workflowsshkey", schema=None) as batch_op:
+        batch_op.alter_column("project_name", existing_type=sa.VARCHAR(), 
nullable=False)
+        batch_op.drop_index(batch_op.f("ix_workflowsshkey_project_key"))
+        batch_op.create_index(batch_op.f("ix_workflowsshkey_project_name"), 
["project_name"], unique=False)
+        batch_op.drop_column("project_key")
+
+    # --- task ---
+    op.add_column("task", sa.Column("version_name", sa.VARCHAR(), 
nullable=True))
+    op.add_column("task", sa.Column("project_name", sa.VARCHAR(), 
nullable=True))
+    op.execute(sa.text("UPDATE task SET project_name = project_key, 
version_name = version_key"))
+    with op.batch_alter_table("task", schema=None) as batch_op:
+        batch_op.drop_constraint(batch_op.f("fk_task_project_key_project"), 
type_="foreignkey")
+        
batch_op.create_foreign_key(batch_op.f("fk_task_project_name_project"), 
"project", ["project_name"], ["name"])
+        batch_op.drop_index(batch_op.f("ix_task_version_key"))
+        batch_op.create_index(batch_op.f("ix_task_version_name"), 
["version_name"], unique=False)
+        batch_op.drop_column("version_key")
+        batch_op.drop_column("project_key")
+
+    # --- revisioncounter ---
+    op.add_column("revisioncounter", sa.Column("release_name", sa.VARCHAR(), 
nullable=True))
+    op.execute(sa.text("UPDATE revisioncounter SET release_name = 
release_key"))
+    with op.batch_alter_table("revisioncounter", schema=None) as batch_op:
+        batch_op.alter_column("release_name", existing_type=sa.VARCHAR(), 
nullable=False)
+        batch_op.drop_constraint(batch_op.f("pk_revisioncounter"), 
type_="primary")
+        batch_op.create_primary_key(batch_op.f("pk_revisioncounter"), 
["release_name"])
+        batch_op.drop_column("release_key")
+
+    # --- revision ---
+    op.add_column("revision", sa.Column("release_name", sa.VARCHAR(), 
nullable=True))
+    op.add_column("revision", sa.Column("merge_base_revision_name", 
sa.VARCHAR(), nullable=True))
+    op.add_column("revision", sa.Column("parent_name", sa.VARCHAR(), 
nullable=True))
+    op.add_column("revision", sa.Column("name", sa.VARCHAR(), nullable=True))
+    op.execute(
+        sa.text(
+            "UPDATE revision SET name = key, release_name = release_key, 
parent_name = parent_key, "
+            "merge_base_revision_name = merge_base_revision_key"
+        )
+    )
+    with op.batch_alter_table("revision", schema=None) as batch_op:
+        batch_op.alter_column("name", existing_type=sa.VARCHAR(), 
nullable=False)
+        batch_op.drop_constraint(batch_op.f("pk_revision"), type_="primary")
+        batch_op.create_primary_key(batch_op.f("pk_revision"), ["name"])
+        
batch_op.drop_constraint(batch_op.f("fk_revision_parent_key_revision"), 
type_="foreignkey")
+        
batch_op.drop_constraint(batch_op.f("fk_revision_release_key_release"), 
type_="foreignkey")
+        batch_op.create_foreign_key(
+            batch_op.f("fk_revision_parent_name_revision"), "revision", 
["parent_name"], ["name"]
+        )
+        batch_op.create_foreign_key(
+            batch_op.f("fk_revision_release_name_release"), "release", 
["release_name"], ["name"]
+        )
+        batch_op.drop_constraint(batch_op.f("uq_revision_key"), type_="unique")
+        batch_op.drop_constraint("uq_revision_release_seq", type_="unique")
+        
batch_op.create_unique_constraint(batch_op.f("uq_revision_release_seq"), 
["release_name", "seq"])
+        batch_op.drop_constraint("uq_revision_release_number", type_="unique")
+        
batch_op.create_unique_constraint(batch_op.f("uq_revision_release_number"), 
["release_name", "number"])
+        batch_op.create_unique_constraint(batch_op.f("uq_revision_name"), 
["name"])
+        batch_op.drop_column("merge_base_revision_key")
+        batch_op.drop_column("parent_key")
+        batch_op.drop_column("release_key")
+        batch_op.drop_column("key")
+
+    # --- release ---
+    op.add_column("release", sa.Column("project_name", sa.VARCHAR(), 
nullable=True))
+    op.add_column("release", sa.Column("name", sa.VARCHAR(), nullable=True))
+    op.execute(sa.text("UPDATE release SET name = key, project_name = 
project_key"))
+    with op.batch_alter_table("release", schema=None) as batch_op:
+        batch_op.alter_column("name", existing_type=sa.VARCHAR(), 
nullable=False)
+        batch_op.alter_column("project_name", existing_type=sa.VARCHAR(), 
nullable=False)
+        batch_op.drop_constraint(batch_op.f("pk_release"), type_="primary")
+        batch_op.create_primary_key(batch_op.f("pk_release"), ["name"])
+        batch_op.drop_constraint(batch_op.f("fk_release_project_key_project"), 
type_="foreignkey")
+        batch_op.create_foreign_key(
+            batch_op.f("fk_release_project_name_project"), "project", 
["project_name"], ["name"]
+        )
+        batch_op.drop_constraint(batch_op.f("uq_release_key"), type_="unique")
+        batch_op.drop_constraint("unique_project_version", type_="unique")
+        
batch_op.create_unique_constraint(batch_op.f("unique_project_version"), 
["project_name", "version"])
+        batch_op.create_unique_constraint(batch_op.f("uq_release_name"), 
["name"])
+        batch_op.drop_column("project_key")
+        batch_op.drop_column("key")
+
+    # --- quarantined ---
+    op.add_column("quarantined", sa.Column("prior_revision_name", 
sa.VARCHAR(), nullable=True))
+    op.add_column("quarantined", sa.Column("release_name", sa.VARCHAR(), 
nullable=True))
+    op.execute(sa.text("UPDATE quarantined SET release_name = release_key, 
prior_revision_name = prior_revision_key"))
+    with op.batch_alter_table("quarantined", schema=None) as batch_op:
+        batch_op.alter_column("release_name", existing_type=sa.VARCHAR(), 
nullable=False)
+        
batch_op.drop_constraint(batch_op.f("fk_quarantined_release_key_release"), 
type_="foreignkey")
+        batch_op.create_foreign_key(
+            batch_op.f("fk_quarantined_release_name_release"), "release", 
["release_name"], ["name"], ondelete="CASCADE"
+        )
+        batch_op.drop_index(batch_op.f("ix_quarantined_release_key"))
+        batch_op.create_index(batch_op.f("ix_quarantined_release_name"), 
["release_name"], unique=False)
+        batch_op.drop_column("prior_revision_key")
+        batch_op.drop_column("release_key")
+
+    # --- project ---
+    op.add_column("project", sa.Column("committee_name", sa.VARCHAR(), 
nullable=True))
+    op.add_column("project", sa.Column("super_project_name", sa.VARCHAR(), 
nullable=True))
+    op.add_column("project", sa.Column("full_name", sa.VARCHAR(), 
nullable=True))
+    op.execute(
+        sa.text(
+            "UPDATE project SET full_name = name, name = key, committee_name = 
committee_key, "
+            "super_project_name = super_project_key"
+        )
+    )
+    with op.batch_alter_table("project", schema=None) as batch_op:
+        batch_op.drop_constraint(batch_op.f("pk_project"), type_="primary")
+        batch_op.create_primary_key(batch_op.f("pk_project"), ["name"])
+        
batch_op.drop_constraint(batch_op.f("fk_project_committee_key_committee"), 
type_="foreignkey")
+        
batch_op.drop_constraint(batch_op.f("fk_project_super_project_key_project"), 
type_="foreignkey")
+        batch_op.create_foreign_key(
+            batch_op.f("fk_project_super_project_name_project"), "project", 
["super_project_name"], ["name"]
+        )
+        batch_op.create_foreign_key(
+            batch_op.f("fk_project_committee_name_committee"), "committee", 
["committee_name"], ["name"]
+        )
+        batch_op.drop_constraint(batch_op.f("uq_project_key"), type_="unique")
+        batch_op.create_unique_constraint(batch_op.f("uq_project_name"), 
["name"])
+        batch_op.alter_column("name", existing_type=sa.VARCHAR(), 
nullable=False)
+        batch_op.drop_column("committee_key")
+        batch_op.drop_column("super_project_key")
+        batch_op.drop_column("key")
+
+    # --- keylink ---
+    op.add_column("keylink", sa.Column("committee_name", sa.VARCHAR(), 
nullable=True))
+    op.execute(sa.text("UPDATE keylink SET committee_name = committee_key"))
+    with op.batch_alter_table("keylink", schema=None) as batch_op:
+        batch_op.alter_column("committee_name", existing_type=sa.VARCHAR(), 
nullable=False)
+        
batch_op.drop_constraint(batch_op.f("fk_keylink_committee_key_committee"), 
type_="foreignkey")
+        batch_op.drop_constraint(batch_op.f("pk_keylink"), type_="primary")
+        batch_op.create_primary_key(batch_op.f("pk_keylink"), 
["committee_name", "key_fingerprint"])
+        batch_op.create_foreign_key(
+            batch_op.f("fk_keylink_committee_name_committee"), "committee", 
["committee_name"], ["name"]
+        )
+        batch_op.drop_column("committee_key")
+
+    # --- distribution ---
+    op.add_column("distribution", sa.Column("release_name", sa.VARCHAR(), 
nullable=True))
+    op.execute(sa.text("UPDATE distribution SET release_name = release_key"))
+    with op.batch_alter_table("distribution", schema=None) as batch_op:
+        batch_op.alter_column("release_name", existing_type=sa.VARCHAR(), 
nullable=False)
+        
batch_op.drop_constraint(batch_op.f("fk_distribution_release_key_release"), 
type_="foreignkey")
+        batch_op.create_foreign_key(
+            batch_op.f("fk_distribution_release_name_release"),
+            "release",
+            ["release_name"],
+            ["name"],
+            ondelete="CASCADE",
+        )
+        batch_op.drop_index(batch_op.f("ix_distribution_release_key"))
+        batch_op.create_index(batch_op.f("ix_distribution_release_name"), 
["release_name"], unique=False)
+        batch_op.drop_column("release_key")
+
+    # --- committee ---
+    op.add_column("committee", sa.Column("parent_committee_name", 
sa.VARCHAR(), nullable=True))
+    op.add_column("committee", sa.Column("full_name", sa.VARCHAR(), 
nullable=True))
+    op.execute(
+        sa.text("UPDATE committee SET full_name = name, name = key, 
parent_committee_name = parent_committee_key")
+    )
+    with op.batch_alter_table("committee", schema=None) as batch_op:
+        batch_op.drop_constraint(batch_op.f("pk_committee"), type_="primary")
+        batch_op.create_primary_key(batch_op.f("pk_committee"), ["name"])
+        
batch_op.drop_constraint(batch_op.f("fk_committee_parent_committee_key_committee"),
 type_="foreignkey")
+        batch_op.create_foreign_key(
+            batch_op.f("fk_committee_parent_committee_name_committee"), 
"committee", ["parent_committee_name"], ["name"]
+        )
+        batch_op.drop_constraint(batch_op.f("uq_committee_key"), 
type_="unique")
+        batch_op.create_unique_constraint(batch_op.f("uq_committee_name"), 
["name"])
+        batch_op.alter_column("name", existing_type=sa.VARCHAR(), 
nullable=False)
+        batch_op.drop_column("parent_committee_key")
+        batch_op.drop_column("key")
+
+    # --- checkresultignore ---
+    op.add_column("checkresultignore", sa.Column("project_name", sa.VARCHAR(), 
nullable=True))
+    op.execute(sa.text("UPDATE checkresultignore SET project_name = 
project_key"))
+    with op.batch_alter_table("checkresultignore", schema=None) as batch_op:
+        batch_op.alter_column("project_name", existing_type=sa.VARCHAR(), 
nullable=False)
+        
batch_op.drop_constraint(batch_op.f("fk_checkresultignore_project_key_project"),
 type_="foreignkey")
+        batch_op.create_foreign_key(
+            batch_op.f("fk_checkresultignore_project_name_project"), 
"project", ["project_name"], ["name"]
+        )
+        batch_op.drop_column("project_key")
+
+    # --- checkresult ---
+    op.add_column("checkresult", sa.Column("release_name", sa.VARCHAR(), 
nullable=True))
+    op.execute(sa.text("UPDATE checkresult SET release_name = release_key"))
+    with op.batch_alter_table("checkresult", schema=None) as batch_op:
+        batch_op.alter_column("release_name", existing_type=sa.VARCHAR(), 
nullable=False)
+        
batch_op.drop_constraint(batch_op.f("fk_checkresult_release_key_release"), 
type_="foreignkey")
+        batch_op.create_foreign_key(
+            batch_op.f("fk_checkresult_release_name_release"), "release", 
["release_name"], ["name"], ondelete="CASCADE"
+        )
+        batch_op.drop_index(batch_op.f("ix_checkresult_release_key"))
+        batch_op.create_index(batch_op.f("ix_checkresult_release_name"), 
["release_name"], unique=False)
+        batch_op.drop_column("release_key")


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to