]> git.ipfire.org Git - dbl.git/commitdiff
lists: Store the timestamp when we optimized the list
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 27 Feb 2026 13:42:01 +0000 (13:42 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 27 Feb 2026 13:42:01 +0000 (13:42 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/database.sql
src/dbl/lists.py

index 629d39cb98c55128d9568ef9ecd59cb4a99a261a..3bab54248f0370ae4b1a61de725103cd8b03a6ab 100644 (file)
@@ -2,7 +2,7 @@
 -- PostgreSQL database dump
 --
 
-\restrict g17YBf4lli4s7tEbGaZCAN5jdVrZH0FZC9n71ikclDKr9c5DPwjSBWlT6huk57h
+\restrict ZeEQIdrFtt8lZBacF2YikE2NldALCViC5aH05xXVTjf5DSP1ITtfKT3w9cYoumo
 
 -- Dumped from database version 17.7 (Debian 17.7-0+deb13u1)
 -- Dumped by pg_dump version 17.7 (Debian 17.7-0+deb13u1)
@@ -213,7 +213,8 @@ CREATE TABLE public.lists (
     total_domains integer DEFAULT 0 NOT NULL,
     pending_reports integer DEFAULT 0 NOT NULL,
     priority integer DEFAULT 0 NOT NULL,
-    subsumed_domains integer DEFAULT 0 NOT NULL
+    subsumed_domains integer DEFAULT 0 NOT NULL,
+    optimized_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL
 );
 
 
@@ -642,5 +643,5 @@ ALTER TABLE ONLY public.sources
 -- PostgreSQL database dump complete
 --
 
-\unrestrict g17YBf4lli4s7tEbGaZCAN5jdVrZH0FZC9n71ikclDKr9c5DPwjSBWlT6huk57h
+\unrestrict ZeEQIdrFtt8lZBacF2YikE2NldALCViC5aH05xXVTjf5DSP1ITtfKT3w9cYoumo
 
index 80edaa48d4064e44077ec6f07649258d7d813981..38a919e30a0194761a0c744b444fff8c7c79bbd1 100644 (file)
@@ -773,6 +773,13 @@ class List(sqlmodel.SQLModel, database.BackendMixin, table=True):
 
                return self.backend.db.fetch(stmt)
 
+       # Optimized At
+       optimized_at: datetime.datetime = sqlmodel.Field(
+               sa_column_kwargs = {"server_default" : sqlmodel.text("CURRENT_TIMESTAMP")}
+       )
+
+       # Optimize!
+
        async def optimize(self, update_stats=True):
                """
                        Optimizes this list
@@ -921,6 +928,10 @@ class List(sqlmodel.SQLModel, database.BackendMixin, table=True):
                log.info(_("Identified %s redunduant domain(s)") % len(redundant_names))
                log.info(_("De-listed %s domain(s)") % len(delisted_names))
 
+               # Mark as optimized
+               self.updated_at = self.optimized_at = sqlmodel.func.current_timestamp()
+               await self.backend.db.flush_and_refresh(self)
+
                # Update all stats afterwards
                if update_stats:
                        await self.update_stats()