"""
Returns the total disk usage of this user
"""
+ source_packages = sqlalchemy.orm.aliased(packages.Package)
+ binary_packages = sqlalchemy.orm.aliased(packages.Package)
+
# Uploads
upload_disk_usage = (
sqlalchemy
source_package_disk_usage = (
sqlalchemy
.select(
- packages.Package.filesize
+ source_packages.filesize
+ )
+ .select_from(
+ builds.Build,
+ )
+ .join(
+ source_packages,
+ source_packages.id == builds.Build.pkg_id,
)
- .select_from(builds.Build)
- .join(builds.Build.pkg)
.where(
# All objects must exist
- packages.Package.deleted_at == None,
+ source_packages.deleted_at == None,
builds.Build.deleted_at == None,
- jobs.Job.deleted_at == None,
# Don't consider test builds
builds.Build.test == False,
+
+ # The build must be owned by the user
+ builds.Build.owner == self,
)
)
binary_package_disk_usage = (
sqlalchemy
.select(
- packages.Package.filesize,
+ binary_packages.filesize,
+ )
+ .select_from(
+ builds.Build,
+ )
+ .join(
+ jobs.Job,
+ jobs.Job.build_id == builds.Build.id,
+ )
+ .join(
+ jobs.JobPackage,
+ jobs.JobPackage.job_id == jobs.Job.id,
+ )
+ .join(
+ binary_packages,
+ binary_packages.id == jobs.JobPackage.pkg_id,
)
- .select_from(builds.Build)
- .join(jobs.Job)
- #.join(jobs.JobPackages)
.where(
# All objects must exist
- packages.Package.deleted_at == None,
+ binary_packages.deleted_at == None,
builds.Build.deleted_at == None,
jobs.Job.deleted_at == None,
.select(
jobs.Job.log_size
)
- .select_from(builds.Build)
- .join(jobs.Job)
+ .select_from(
+ builds.Build,
+ )
+ .join(
+ jobs.Job,
+ jobs.Job.build_id == builds.Build.id,
+ )
.where(
# All objects must exist
builds.Build.deleted_at == None,
)
# Run the query
- return await self.db.select_one(stmt, "disk_usage")
+ return await self.db.select_one(stmt, "disk_usage") or 0
# Stats