Albirew/nyaa-pantsu
Albirew
/
nyaa-pantsu
Archivé
1
0
Bifurcation 0
Ce dépôt a été archivé le 2022-05-07. Vous pouvez voir ses fichiers ou le cloner, mais pas ouvrir de ticket ou de demandes d'ajout, ni soumettre de changements.
nyaa-pantsu/utils/search/sizebytes.go

53 lignes
940 B
Go

package search
import (
"math"
"strconv"
humanize "github.com/dustin/go-humanize"
)
// SizeBytes size in bytes
type SizeBytes uint64
func (sz *SizeBytes) Parse(s string, sizeType string) bool {
if s == "" {
*sz = 0
return false
}
var multiplier uint64
switch sizeType {
case "b":
multiplier = 1
case "k":
multiplier = uint64(math.Exp2(10))
case "m":
multiplier = uint64(math.Exp2(20))
case "g":
multiplier = uint64(math.Exp2(30))
}
size64, err := humanize.ParseBytes(s)
if err != nil {
*sz = 0
return false
}
*sz = SizeBytes(size64 * multiplier)
return true
}
// ToESQuery convert DateFilter type to ES query format
func (sz SizeBytes) ToESQuery() string {
if sz > 0 {
return strconv.FormatUint(uint64(sz), 10)
}
return "*"
}
// ToDBQuery convert DateFilter type to ES query format
func (sz SizeBytes) ToDBQuery() string {
if sz > 0 {
return strconv.FormatUint(uint64(sz), 10)
}
return ""
}