From cd39c654f33ba4e56c54a771a2ee2d0a62f2439f Mon Sep 17 00:00:00 2001 From: Marco Donadoni Date: Fri, 24 Nov 2023 16:19:13 +0100 Subject: [PATCH] models: add missing foreign key to workflow_uuid of Job Closes #210 --- ...ae_foreign_key_for_workflow_uuid_of_job.py | 50 +++++++++++++++++++ reana_db/models.py | 6 ++- 2 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 reana_db/alembic/versions/20231124_1509_ef26a208a3ae_foreign_key_for_workflow_uuid_of_job.py diff --git a/reana_db/alembic/versions/20231124_1509_ef26a208a3ae_foreign_key_for_workflow_uuid_of_job.py b/reana_db/alembic/versions/20231124_1509_ef26a208a3ae_foreign_key_for_workflow_uuid_of_job.py new file mode 100644 index 0000000..b33297a --- /dev/null +++ b/reana_db/alembic/versions/20231124_1509_ef26a208a3ae_foreign_key_for_workflow_uuid_of_job.py @@ -0,0 +1,50 @@ +"""Foreign key for workflow_uuid of Job. + +Revision ID: ef26a208a3ae +Revises: 126601b69c78 +Create Date: 2023-11-24 15:09:49.671968 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision = "ef26a208a3ae" +down_revision = "126601b69c78" +branch_labels = None +depends_on = None + + +def upgrade(): + """Upgrade to ef26a208a3ae.""" + op.alter_column( + "job", + "workflow_uuid", + existing_type=postgresql.UUID(), + nullable=False, + schema="__reana", + ) + op.create_foreign_key( + "_job_workflow_uuid_fk", + "job", + "workflow", + ["workflow_uuid"], + ["id_"], + source_schema="__reana", + referent_schema="__reana", + ) + + +def downgrade(): + """Downgrade to 126601b69c78.""" + op.drop_constraint( + "_job_workflow_uuid_fk", "job", schema="__reana", type_="foreignkey" + ) + op.alter_column( + "job", + "workflow_uuid", + existing_type=postgresql.UUID(), + nullable=True, + schema="__reana", + ) diff --git a/reana_db/models.py b/reana_db/models.py index 598e29c..5a6ff21 100644 --- a/reana_db/models.py +++ b/reana_db/models.py @@ -813,7 +813,11 @@ class Job(Base, Timestamp): id_ = Column(UUIDType, primary_key=True, default=generate_uuid) backend_job_id = Column(String(256)) - workflow_uuid = Column(UUIDType) + workflow_uuid = Column( + UUIDType, + ForeignKey("__reana.workflow.id_", name="_job_workflow_uuid_fk"), + nullable=False, + ) status = Column(Enum(JobStatus), default=JobStatus.created) compute_backend = Column(String(30)) cvmfs_mounts = Column(Text)