From af1c393fd8bb277b1bceab2604fee1d9d237b408 Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Fri, 21 Aug 2020 09:19:06 -0400 Subject: [PATCH] artifacts: add constraint on (repo_id, filename) --- ...5dcd_add_unique_constraint_to_artifacts.py | 23 +++++++++++++++++++ gitsrht/types/artifact.py | 5 ++++ 2 files changed, 28 insertions(+) create mode 100644 gitsrht/alembic/versions/d42e577c5dcd_add_unique_constraint_to_artifacts.py diff --git a/gitsrht/alembic/versions/d42e577c5dcd_add_unique_constraint_to_artifacts.py b/gitsrht/alembic/versions/d42e577c5dcd_add_unique_constraint_to_artifacts.py new file mode 100644 index 0000000..fee8d93 --- /dev/null +++ b/gitsrht/alembic/versions/d42e577c5dcd_add_unique_constraint_to_artifacts.py @@ -0,0 +1,23 @@ +"""Add unique constraint to artifacts + +Revision ID: d42e577c5dcd +Revises: 01412986a44d +Create Date: 2020-08-21 09:17:34.605895 + +""" + +# revision identifiers, used by Alembic. +revision = 'd42e577c5dcd' +down_revision = '01412986a44d' + +from alembic import op +import sqlalchemy as sa + + +def upgrade(): + op.create_unique_constraint("repo_artifact_filename_unique", + "artifact", ["repo_id", "filename"]) + + +def downgrade(): + op.drop_constraint("repo_artifact_filename_unique", "artifact", type_="unique") diff --git a/gitsrht/types/artifact.py b/gitsrht/types/artifact.py index e49254c..c46547c 100644 --- a/gitsrht/types/artifact.py +++ b/gitsrht/types/artifact.py @@ -6,6 +6,11 @@ from srht.database import Base class Artifact(Base): __tablename__ = 'artifacts' + __table_args__ = ( + sa.UniqueConstraint("repo_id", "filename", + name="repo_artifact_filename_unique"), + ) + id = sa.Column(sa.Integer, primary_key=True) created = sa.Column(sa.DateTime, nullable=False) user_id = sa.Column(sa.Integer, sa.ForeignKey('user.id'), nullable=False) -- 2.38.4