You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
bog/dataswamp/namespace/valueobjects.go

60 lines
901 B
Go

package namespace
type FileSizeQuota struct {
AllowanceKB int64
CurrentUsage int64
}
func (f *FileSizeQuota) Allows(size int64) bool {
return f.Remaining() >= size
}
func (f *FileSizeQuota) Remaining() int64 {
return f.AllowanceKB - f.CurrentUsage
}
func (f *FileSizeQuota) Add(size int64) error {
if !f.Allows(size) {
return ErrExceedQuota
}
f.CurrentUsage += size
return nil
}
func (f *FileSizeQuota) Remove(size int64) error {
if size > f.CurrentUsage {
return ErrQuotaInvalid
}
f.CurrentUsage -= size
return nil
}
type Usage struct {
Uploads int64
UploadB int64
Downloads int64
DownloadB int64
}
func (u Usage) Uploaded(size int64) Usage {
return Usage{
u.Uploads + 1,
u.UploadB + size,
u.Downloads,
u.DownloadB,
}
}
func (u Usage) Downloaded(size int64) Usage {
return Usage{
u.Uploads,
u.UploadB,
u.Downloads + 1,
u.DownloadB + size,
}
}