A gitsrht/alembic/versions/d42e577c5dcd_add_unique_constraint_to_artifacts.py => gitsrht/alembic/versions/d42e577c5dcd_add_unique_constraint_to_artifacts.py +23 -0
@@ 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")
M gitsrht/types/artifact.py => gitsrht/types/artifact.py +5 -0
@@ 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)