From 9f5a24c1074f84f7a5209c09b17a112e5ef4af56 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 22 Jan 2025 14:53:47 +0000 Subject: [PATCH] sessions: Rename valid_until into expires_at Signed-off-by: Michael Tremer --- src/buildservice/sessions.py | 24 +++++++++++++++++++----- src/database.sql | 6 +++--- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/buildservice/sessions.py b/src/buildservice/sessions.py index 3ae5bae2..b4ab565f 100644 --- a/src/buildservice/sessions.py +++ b/src/buildservice/sessions.py @@ -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 diff --git a/src/database.sql b/src/database.sql index de203f33..5784516c 100644 --- a/src/database.sql +++ b/src/database.sql @@ -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 -- 2.47.2