From f839cffc32111594bea8ba35dff79a2bc9883d2e Mon Sep 17 00:00:00 2001
From: Maximilian Moser <maximilian.moser@tuwien.ac.at>
Date: Wed, 31 Jul 2024 14:23:57 +0200
Subject: [PATCH] Add a unique constraint for filenames per record

---
 formatscaper/models.py | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/formatscaper/models.py b/formatscaper/models.py
index 631c3ec..bcb9a69 100644
--- a/formatscaper/models.py
+++ b/formatscaper/models.py
@@ -1,7 +1,7 @@
 import dataclasses
 from typing import List, Optional
 
-from sqlalchemy import ForeignKey, create_engine
+from sqlalchemy import ForeignKey, UniqueConstraint, create_engine
 from sqlalchemy.orm import DeclarativeBase, Mapped, Session, mapped_column, relationship
 
 
@@ -98,6 +98,9 @@ class Result(ModelBase):
     format_id: Mapped[Optional[int]] = mapped_column(ForeignKey("format.id"))
     format: Mapped[Format] = relationship(back_populates="results")
 
+    # filenames are unique per record
+    __table_args__ = (UniqueConstraint("record", "filename"),)
+
     @property
     def risk(self):
         """Calculate the risk assessment for the file."""
-- 
GitLab