From 34dbbf222bd220b6764056ae7eb3826b246a84e2 Mon Sep 17 00:00:00 2001 From: malmans2 Date: Tue, 29 Oct 2024 16:42:20 +0100 Subject: [PATCH] add CacheFile --- cacholote/database.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/cacholote/database.py b/cacholote/database.py index 16d480c..f20fd8d 100644 --- a/cacholote/database.py +++ b/cacholote/database.py @@ -36,6 +36,13 @@ Base = sa.orm.declarative_base() +association_table = sa.Table( + "association_table", + Base.metadata, + sa.Column("left_id", sa.ForeignKey("cache_entries.id"), primary_key=True), + sa.Column("right_id", sa.ForeignKey("cache_files.id"), primary_key=True), +) + class CacheEntry(Base): __tablename__ = "cache_entries" @@ -48,6 +55,9 @@ class CacheEntry(Base): updated_at = sa.Column(sa.DateTime, default=utils.utcnow, onupdate=utils.utcnow) counter = sa.Column(sa.Integer) tag = sa.Column(sa.String) + cache_files: sa.orm.Mapped[list[CacheFile]] = sa.orm.relationship( + secondary=association_table, back_populates="cache_entries" + ) @property def _result_as_string(self) -> str: @@ -69,6 +79,15 @@ def __repr__(self) -> str: return f"CacheEntry({public_attrs_repr})" +class CacheFile(Base): + __tablename__ = "cache_files" + + id = sa.Column(sa.Integer(), primary_key=True) + cache_entries: sa.orm.Mapped[list[CacheEntry]] = sa.orm.relationship( + secondary=association_table, back_populates="cache_files" + ) + + @sa.event.listens_for(CacheEntry, "before_insert") def set_expiration_to_max( mapper: sa.orm.Mapper[CacheEntry],