# Releases
- releases = sqlalchemy.orm.relationship("Release", back_populates="distro",
- order_by="Release.published_at", lazy="selectin")
+ async def get_releases(self, limit=None, offset=None):
+ """
+ Fetches all releases of this distribution
+ """
+ stmt = (
+ sqlalchemy
+ .select(
+ releases.Release,
+ )
+ .where(
+ releases.Release.deleted_at == None,
+ releases.Release.distro == self,
+ )
+ .order_by(
+ releases.Release.published_at.desc(),
+ releases.Release.created_at.desc(),
+ )
+ )
+
+ return await self.db.fetch_as_list(stmt)
+
+ async def get_release(self, slug):
+ stmt = (
+ sqlalchemy
+ .select(
+ releases.Release,
+ )
+ .where(
+ releases.Release.deleted_at == None,
+ releases.Release.distro == self,
+ releases.Release.slug == slug,
+ )
+ )
+
+ return await self.db.fetch_one(stmt)
# Latest Release
return await self.db.fetch_one(stmt)
- # Releases
-
- def get_release(self, slug):
- return self.backend.distros.releases._get_release("""
- SELECT
- *
- FROM
- releases
- WHERE
- distro_id = %s
- AND
- slug = %s
- AND
- deleted_at IS NULL
- """, self.id, slug,
- )
-
async def create_release(self, name, user, stable=False):
"""
Creates a new release