mirror of
https://codeberg.org/shroff/phylum.git
synced 2026-01-06 11:39:42 -06:00
38 lines
776 B
Go
38 lines
776 B
Go
package core
|
|
|
|
import (
|
|
"github.com/doug-martin/goqu/v9"
|
|
)
|
|
|
|
type DiskUsageInfo struct {
|
|
TotalSize int64
|
|
Entities int64
|
|
Files int64
|
|
Dirs int64
|
|
}
|
|
|
|
func (f filesystem) DiskUsage(r Resource) (DiskUsageInfo, error) {
|
|
// TODO: #versions This is broken
|
|
_, n, q := selectResourceTree(r.id, false, false, false, "content_length", "dir")
|
|
|
|
q = q.
|
|
From(n).
|
|
ClearWhere().
|
|
Select(
|
|
goqu.SUM(n.Col("content_length")),
|
|
goqu.COUNT("*"),
|
|
goqu.L("COUNT(CASE ? WHEN TRUE THEN 1 ELSE NULL END)", n.Col("dir")))
|
|
|
|
query, args, _ := q.ToSQL()
|
|
|
|
row := f.db.QueryRow(query, args...)
|
|
var size, count, dirs int64
|
|
err := row.Scan(&size, &count, &dirs)
|
|
return DiskUsageInfo{
|
|
TotalSize: size,
|
|
Entities: count,
|
|
Files: count - dirs,
|
|
Dirs: dirs,
|
|
}, err
|
|
}
|