mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-01-26 06:28:35 -06:00
104 lines
3.3 KiB
Go
104 lines
3.3 KiB
Go
package svc
|
|
|
|
import (
|
|
"strings"
|
|
|
|
libregraph "github.com/owncloud/libre-graph-api-go"
|
|
)
|
|
|
|
type spacesSlice []*libregraph.Drive
|
|
|
|
// Len is the number of elements in the collection.
|
|
func (d spacesSlice) Len() int { return len(d) }
|
|
|
|
// Swap swaps the elements with indexes i and j.
|
|
func (d spacesSlice) Swap(i, j int) { d[i], d[j] = d[j], d[i] }
|
|
|
|
type spacesByName struct {
|
|
spacesSlice
|
|
}
|
|
type spacesByLastModifiedDateTime struct {
|
|
spacesSlice
|
|
}
|
|
|
|
// Less reports whether the element with index i
|
|
// must sort before the element with index j.
|
|
func (s spacesByName) Less(i, j int) bool {
|
|
return strings.ToLower(*s.spacesSlice[i].Name) < strings.ToLower(*s.spacesSlice[j].Name)
|
|
}
|
|
|
|
// Less reports whether the element with index i
|
|
// must sort before the element with index j.
|
|
func (s spacesByLastModifiedDateTime) Less(i, j int) bool {
|
|
// compare the items when both dates are set
|
|
if s.spacesSlice[i].LastModifiedDateTime != nil && s.spacesSlice[j].LastModifiedDateTime != nil {
|
|
return s.spacesSlice[i].LastModifiedDateTime.Before(*s.spacesSlice[j].LastModifiedDateTime)
|
|
}
|
|
// an item without a timestamp is considered "less than" an item with a timestamp
|
|
if s.spacesSlice[i].LastModifiedDateTime == nil && s.spacesSlice[j].LastModifiedDateTime != nil {
|
|
return true
|
|
}
|
|
// an item without a timestamp is considered "less than" an item with a timestamp
|
|
if s.spacesSlice[i].LastModifiedDateTime != nil && s.spacesSlice[j].LastModifiedDateTime == nil {
|
|
return false
|
|
}
|
|
// fallback to name if no dateTime is set on both items
|
|
return strings.ToLower(*s.spacesSlice[i].Name) < strings.ToLower(*s.spacesSlice[j].Name)
|
|
}
|
|
|
|
type userSlice []*libregraph.User
|
|
|
|
// Len is the number of elements in the collection.
|
|
func (d userSlice) Len() int { return len(d) }
|
|
|
|
// Swap swaps the elements with indexes i and j.
|
|
func (d userSlice) Swap(i, j int) { d[i], d[j] = d[j], d[i] }
|
|
|
|
type usersByDisplayName struct {
|
|
userSlice
|
|
}
|
|
|
|
type usersByMail struct {
|
|
userSlice
|
|
}
|
|
|
|
type usersByOnPremisesSamAccountName struct {
|
|
userSlice
|
|
}
|
|
|
|
// Less reports whether the element with index i
|
|
// must sort before the element with index j.
|
|
func (u usersByDisplayName) Less(i, j int) bool {
|
|
return strings.ToLower(u.userSlice[i].GetDisplayName()) < strings.ToLower(u.userSlice[j].GetDisplayName())
|
|
}
|
|
|
|
// Less reports whether the element with index i
|
|
// must sort before the element with index j.
|
|
func (u usersByMail) Less(i, j int) bool {
|
|
return strings.ToLower(u.userSlice[i].GetMail()) < strings.ToLower(u.userSlice[j].GetMail())
|
|
}
|
|
|
|
// Less reports whether the element with index i
|
|
// must sort before the element with index j.
|
|
func (u usersByOnPremisesSamAccountName) Less(i, j int) bool {
|
|
return strings.ToLower(u.userSlice[i].GetOnPremisesSamAccountName()) < strings.ToLower(u.userSlice[j].GetOnPremisesSamAccountName())
|
|
}
|
|
|
|
type groupSlice []*libregraph.Group
|
|
|
|
// Len is the number of elements in the collection.
|
|
func (d groupSlice) Len() int { return len(d) }
|
|
|
|
// Swap swaps the elements with indexes i and j.
|
|
func (d groupSlice) Swap(i, j int) { d[i], d[j] = d[j], d[i] }
|
|
|
|
type groupsByDisplayName struct {
|
|
groupSlice
|
|
}
|
|
|
|
// Less reports whether the element with index i
|
|
// must sort before the element with index j.
|
|
func (g groupsByDisplayName) Less(i, j int) bool {
|
|
return strings.ToLower(g.groupSlice[i].GetDisplayName()) < strings.ToLower(g.groupSlice[j].GetDisplayName())
|
|
}
|