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