]> git.ipfire.org Git - pbs.git/commitdiff
sessions: Rename valid_until into expires_at
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 22 Jan 2025 14:53:47 +0000 (14:53 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 22 Jan 2025 14:53:47 +0000 (14:53 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/sessions.py
src/database.sql

index 3ae5bae263400061bc63b7fc0b53e799b3ab9bac..b4ab565f50210013a7abb0761abde3acf1de54f1 100644 (file)
@@ -1,5 +1,6 @@
 #!/usr/bin/python
 
+import datetime
 import logging
 import sqlalchemy
 
@@ -13,6 +14,8 @@ from . import misc
 # Setup logging
 log = logging.getLogger("pbs.sessions")
 
+SESSION_LIFETIME = datetime.timedelta(days=14)
+
 class Sessions(base.Object):
        async def create(self, user, address, user_agent=None):
                """
@@ -42,7 +45,7 @@ class Sessions(base.Object):
                        .select(Session)
                        .where(
                                Session.session_id == session_id,
-                               Session.valid_until >= sqlalchemy.func.current_timestamp(),
+                               Session.expires_at > sqlalchemy.func.current_timestamp(),
                        )
                )
 
@@ -55,8 +58,19 @@ class Sessions(base.Object):
                """
                        Deletes all sessions that are not valid any more
                """
+               stmt = (
+                       sqlalchemy
+                       .delete(
+                               Session,
+                       )
+                       .where(
+                               Session.expires_at <= sqlalchemy.func.current_timestamp(),
+                       )
+               )
+
+               # Run the query
                async with await self.db.transaction():
-                       await self.db.execute("DELETE FROM sessions WHERE valid_until < CURRENT_TIMESTAMP")
+                       await self.db.execute(stmt)
 
 
 class Session(database.Base):
@@ -87,10 +101,10 @@ class Session(database.Base):
        created_at = Column(DateTime(timezone=False), nullable=False,
                server_default=sqlalchemy.func.current_timestamp())
 
-       # Valid Until
+       # Expires At
 
-       valid_until = Column(DateTime(timezone=False), nullable=False,
-               server_default=sqlalchemy.text("CURRENT_TIMESTAMP + INTERVAL '14 days'"))
+       expires_at = Column(DateTime(timezone=False), nullable=False,
+               server_default=sqlalchemy.func.current_timestamo() + SESSION_LIFETIME)
 
        # Address
 
index de203f335baf94acefff23860c4cc58594c06acc..5784516c3bae9b868fd094ba835dd951810b2011 100644 (file)
@@ -898,9 +898,9 @@ ALTER SEQUENCE public.repository_builds_id_seq OWNED BY public.repository_builds
 
 CREATE TABLE public.sessions (
     id integer NOT NULL,
-    session_id text NOT NULL,
-    created_at timestamp without time zone DEFAULT now() NOT NULL,
-    valid_until timestamp without time zone DEFAULT (now() + '7 days'::interval) NOT NULL,
+    session_id text DEFAULT gen_random_uuid() NOT NULL,
+    created_at timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
+    expires_at timestamp without time zone NOT NULL,
     user_id integer NOT NULL,
     address inet,
     user_agent text