From 7e5f8b6c8a75ee3785d8dcfc40a7c76e501747ac Mon Sep 17 00:00:00 2001 From: Oscar Krause Date: Mon, 12 Jun 2023 10:48:00 +0200 Subject: [PATCH] implemented endpoint to remove expired leases --- app/main.py | 6 ++++++ app/orm.py | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/app/main.py b/app/main.py index f5388c8..45b53aa 100644 --- a/app/main.py +++ b/app/main.py @@ -186,6 +186,12 @@ async def _leases(request: Request, origin: bool = False): return JSONr(response) +@app.delete('/-/leases/expired', summary='* Leases') +async def _lease_delete_expired(request: Request): + Lease.delete_expired(db) + return Response(status_code=201) + + @app.delete('/-/lease/{lease_ref}', summary='* Lease') async def _lease_delete(request: Request, lease_ref: str): if Lease.delete(db, lease_ref) == 1: diff --git a/app/orm.py b/app/orm.py index c78ca95..0b19e92 100644 --- a/app/orm.py +++ b/app/orm.py @@ -160,6 +160,14 @@ class Lease(Base): session.close() return deletions + @staticmethod + def delete_expired(engine: Engine) -> int: + session = sessionmaker(bind=engine)() + deletions = session.query(Lease).filter(Lease.lease_expires <= datetime.utcnow()).delete() + session.commit() + session.close() + return deletions + @staticmethod def calculate_renewal(renewal_period: float, delta: timedelta) -> timedelta: """