From: Michael Tremer Date: Wed, 22 Jan 2025 13:51:06 +0000 (+0000) Subject: packages: Don't fetch all builds all of the time X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=25635009e9010fb6410557271fae8b10a3c8876b;p=pbs.git packages: Don't fetch all builds all of the time Signed-off-by: Michael Tremer --- diff --git a/src/buildservice/builds.py b/src/buildservice/builds.py index 496ada8a..57688a80 100644 --- a/src/buildservice/builds.py +++ b/src/buildservice/builds.py @@ -415,8 +415,7 @@ class Build(database.Base, database.BackendMixin, database.SoftDeleteMixin): # Package - pkg = sqlalchemy.orm.relationship("Package", - foreign_keys=[pkg_id], back_populates="builds", lazy="selectin") + pkg = sqlalchemy.orm.relationship("Package", foreign_keys=[pkg_id], lazy="selectin") @property def name(self): diff --git a/src/buildservice/packages.py b/src/buildservice/packages.py index 33fc3468..ea5f78cc 100644 --- a/src/buildservice/packages.py +++ b/src/buildservice/packages.py @@ -283,10 +283,6 @@ class Package(database.Base, database.BackendMixin, database.SoftDeleteMixin): uuid = Column(UUID, nullable=False) - # Build - - builds = sqlalchemy.orm.relationship("Build", back_populates="pkg", lazy="selectin") - # Created At created_at = Column( @@ -506,23 +502,24 @@ class Package(database.Base, database.BackendMixin, database.SoftDeleteMixin): } for file in filelist), ) - @lazy_property - async def XXXbuilds(self): - builds = await self.backend.builds._get_builds(""" - SELECT - * - FROM - builds - WHERE - deleted_at IS NULL - AND - pkg_id = %s - ORDER BY - created_at DESC""", - self.id, + async def get_builds(self, limit=None, offset=None): + stmt = ( + sqlalchemy + .select( + builds.Build, + ) + .where( + builds.Build.deleted_at == None, + builds.Build.pkg == self, + ) + .order_by( + builds.Build.created_at.desc(), + ) + .limit(limit) + .offset(offset) ) - return list(builds) + return await self.db.fetch_as_list(stmt) @lazy_property def job(self):