parent
0b9822ecd4
commit
ca080fc758
@ -0,0 +1,69 @@
|
||||
package ent
|
||||
|
||||
import (
|
||||
"github.com/cloudreve/Cloudreve/v4/inventory/types"
|
||||
"github.com/samber/lo"
|
||||
)
|
||||
|
||||
func (u *User) AnyGroup(predict func(*Group) bool) bool {
|
||||
return !lo.NoneBy(u.Edges.Group, predict)
|
||||
}
|
||||
|
||||
func (u *User) EnforceGroupPermission(perm types.GroupPermission) bool {
|
||||
return !lo.NoneBy(u.Edges.Group, func(item *Group) bool {
|
||||
return item.Permissions.Enabled(int(perm))
|
||||
})
|
||||
}
|
||||
|
||||
func (u *User) GroupMaxStorage() int64 {
|
||||
return lo.MaxBy(u.Edges.Group, func(a *Group, b *Group) bool {
|
||||
return a.MaxStorage > b.MaxStorage
|
||||
}).MaxStorage
|
||||
}
|
||||
|
||||
func (u *User) GroupMaxWalkedFiles() int {
|
||||
return max(lo.MaxBy(u.Edges.Group, func(a *Group, b *Group) bool {
|
||||
return a.Settings.MaxWalkedFiles > b.Settings.MaxWalkedFiles
|
||||
}).Settings.MaxWalkedFiles, 1)
|
||||
}
|
||||
|
||||
func (u *User) GroupMaxTrashRetention() int {
|
||||
return lo.MaxBy(u.Edges.Group, func(a *Group, b *Group) bool {
|
||||
return a.Settings.TrashRetention > b.Settings.TrashRetention
|
||||
}).Settings.TrashRetention
|
||||
}
|
||||
|
||||
func (u *User) GroupMaxDecompressSize() int64 {
|
||||
return lo.MaxBy(u.Edges.Group, func(a *Group, b *Group) bool {
|
||||
return a.Settings.DecompressSize > b.Settings.DecompressSize
|
||||
}).Settings.DecompressSize
|
||||
}
|
||||
|
||||
func (u *User) GroupMaxCompressSize() int64 {
|
||||
return lo.MaxBy(u.Edges.Group, func(a *Group, b *Group) bool {
|
||||
return a.Settings.CompressSize > b.Settings.CompressSize
|
||||
}).Settings.CompressSize
|
||||
}
|
||||
|
||||
func (u *User) GroupMaxSpeedLimit() int {
|
||||
return lo.MaxBy(u.Edges.Group, func(a *Group, b *Group) bool {
|
||||
return a.SpeedLimit > b.SpeedLimit
|
||||
}).SpeedLimit
|
||||
}
|
||||
|
||||
func (u *User) GroupMaxSourceBatchSize() int {
|
||||
return lo.MaxBy(u.Edges.Group, func(a *Group, b *Group) bool {
|
||||
return a.Settings.SourceBatchSize > b.Settings.SourceBatchSize
|
||||
}).Settings.SourceBatchSize
|
||||
}
|
||||
|
||||
func (u *User) GroupMaxAria2BatchSize() int {
|
||||
return lo.MaxBy(u.Edges.Group, func(a *Group, b *Group) bool {
|
||||
return a.Settings.Aria2BatchSize > b.Settings.Aria2BatchSize
|
||||
}).Settings.Aria2BatchSize
|
||||
}
|
||||
|
||||
func (u *User) GetPrimaryGroup() *Group {
|
||||
// TODO: design user primary group
|
||||
panic("implement me")
|
||||
}
|
Loading…
Reference in new issue