builds.deleted_at IS NULL
AND
repository_builds.repo_id = %s
+ AND
+ repository_builds.removed_at IS NULL
ORDER BY
packages.name, packages.evr""",
self.id,
return list(builds)
+ @lazy_property
+ def total_builds(self):
+ res = self.db.get("""
+ SELECT
+ COUNT(*) AS count
+ FROM
+ repository_builds
+ LEFT JOIN
+ builds ON repository_builds.build_id = builds.id
+ WHERE
+ builds.deleted_at IS NULL
+ AND
+ repository_builds.repo_id = %s
+ AND
+ repository_builds.removed_at IS NULL
+ """, self.id,
+ )
+
+ return res.count
+
def get_builds_by_name(self, name):
"""
Returns an ordered list of all builds that match this name
return { row.arch : row.size for row in res if row.arch in self.distro.arches }
+ @lazy_property
+ def total_size(self):
+ res = self.db.get("""
+ WITH packages AS (
+ -- Source Packages
+ SELECT
+ packages.filesize AS size
+ FROM
+ repository_builds
+ LEFT JOIN
+ builds ON repository_builds.build_id = builds.id
+ LEFT JOIN
+ packages ON builds.pkg_id = packages.id
+ WHERE
+ builds.deleted_at IS NULL
+ AND
+ packages.deleted_at IS NULL
+ AND
+ repository_builds.repo_id = %s
+ AND
+ repository_builds.removed_at IS NULL
+
+ UNION ALL
+
+ -- Binary Packages
+ SELECT
+ packages.filesize AS size
+ FROM
+ repository_builds
+ LEFT JOIN
+ builds ON repository_builds.build_id = builds.id
+ LEFT JOIN
+ jobs ON builds.id = jobs.build_id
+ LEFT JOIN
+ job_packages ON jobs.id = job_packages.job_id
+ LEFT JOIN
+ packages ON job_packages.pkg_id = packages.id
+ WHERE
+ builds.deleted_at IS NULL
+ AND
+ jobs.deleted_at IS NULL
+ AND
+ packages.deleted_at IS NULL
+ AND
+ repository_builds.repo_id = %s
+ AND
+ repository_builds.removed_at IS NULL
+ )
+
+ SELECT
+ SUM(packages.size) AS size
+ FROM
+ packages
+ """, self.id, self.id,
+ )
+
+ if res:
+ return res.size
+
+ return 0
+
# Pakfire
def pakfire(self, **kwargs):
{# Description #}
{% if repo.description %}
{% module Text(repo.description) %}
+
+ <hr>
{% end %}
<nav class="level">
- <div class="level-left">
- {# Sizes #}
- {% for arch, size in sorted(repo.size.items()) %}
- <div class="level-item has-text-centered">
- <div>
- <p class="heading">
- {{ _("Size") }} <span class="tag">{{ arch }}</span>
- </p>
- <p class="title">
- {{ format_size(size) }}
- </p>
- </div>
- </div>
- {% end %}
+ <div class="level-item has-text-centered">
+ <div>
+ <p class="heading">
+ {{ _("Total Builds") }}
+ </p>
+ <p class="title">
+ {{ repo.total_builds }}
+ </p>
+ </div>
+ </div>
+
+ <div class="level-item has-text-centered">
+ <div>
+ <p class="heading">
+ {{ _("Total Size") }}
+ </p>
+ <p class="title">
+ {{ format_size(repo.total_size) }}
+ </p>
+ </div>
</div>
</nav>
</div>