refactor: domain - generic newSortFromString
This commit is contained in:
parent
02108fcb00
commit
07f18c8aab
|
@ -4,7 +4,6 @@ import (
|
|||
"fmt"
|
||||
"math"
|
||||
"slices"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
|
@ -231,23 +230,6 @@ const (
|
|||
EnnoblementSortServerKeyDESC
|
||||
)
|
||||
|
||||
func newEnnoblementSortFromString(s string) (EnnoblementSort, error) {
|
||||
allowed := []EnnoblementSort{
|
||||
EnnoblementSortCreatedAtASC,
|
||||
EnnoblementSortCreatedAtDESC,
|
||||
}
|
||||
|
||||
for _, a := range allowed {
|
||||
if strings.EqualFold(a.String(), s) {
|
||||
return a, nil
|
||||
}
|
||||
}
|
||||
|
||||
return 0, UnsupportedSortStringError{
|
||||
Sort: s,
|
||||
}
|
||||
}
|
||||
|
||||
// IsInConflict returns true if two sorts can't be used together (e.g. EnnoblementSortIDASC and EnnoblementSortIDDESC).
|
||||
func (s EnnoblementSort) IsInConflict(s2 EnnoblementSort) bool {
|
||||
ss := []EnnoblementSort{s, s2}
|
||||
|
@ -539,7 +521,11 @@ func (params *ListEnnoblementsParams) PrependSortString(sort []string) error {
|
|||
toPrepend := make([]EnnoblementSort, 0, len(sort))
|
||||
|
||||
for i, s := range sort {
|
||||
converted, err := newEnnoblementSortFromString(s)
|
||||
converted, err := newSortFromString(
|
||||
s,
|
||||
EnnoblementSortCreatedAtASC,
|
||||
EnnoblementSortCreatedAtDESC,
|
||||
)
|
||||
if err != nil {
|
||||
return SliceElementValidationError{
|
||||
Model: listEnnoblementsParamsModelName,
|
||||
|
|
|
@ -6,7 +6,6 @@ import (
|
|||
"math"
|
||||
"net/url"
|
||||
"slices"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
|
@ -541,33 +540,6 @@ const (
|
|||
PlayerSortDeletedAtDESC
|
||||
)
|
||||
|
||||
func newPlayerSortFromString(s string) (PlayerSort, error) {
|
||||
allowed := []PlayerSort{
|
||||
PlayerSortODScoreAttASC,
|
||||
PlayerSortODScoreAttDESC,
|
||||
PlayerSortODScoreDefASC,
|
||||
PlayerSortODScoreDefDESC,
|
||||
PlayerSortODScoreSupASC,
|
||||
PlayerSortODScoreSupDESC,
|
||||
PlayerSortODScoreTotalASC,
|
||||
PlayerSortODScoreTotalDESC,
|
||||
PlayerSortPointsASC,
|
||||
PlayerSortPointsDESC,
|
||||
PlayerSortDeletedAtASC,
|
||||
PlayerSortDeletedAtDESC,
|
||||
}
|
||||
|
||||
for _, a := range allowed {
|
||||
if strings.EqualFold(a.String(), s) {
|
||||
return a, nil
|
||||
}
|
||||
}
|
||||
|
||||
return 0, UnsupportedSortStringError{
|
||||
Sort: s,
|
||||
}
|
||||
}
|
||||
|
||||
// IsInConflict returns true if two sorts can't be used together (e.g. PlayerSortIDASC and PlayerSortIDDESC).
|
||||
func (s PlayerSort) IsInConflict(s2 PlayerSort) bool {
|
||||
ss := []PlayerSort{s, s2}
|
||||
|
@ -991,7 +963,21 @@ func (params *ListPlayersParams) PrependSortString(sort []string) error {
|
|||
toPrepend := make([]PlayerSort, 0, len(sort))
|
||||
|
||||
for i, s := range sort {
|
||||
converted, err := newPlayerSortFromString(s)
|
||||
converted, err := newSortFromString(
|
||||
s,
|
||||
PlayerSortODScoreAttASC,
|
||||
PlayerSortODScoreAttDESC,
|
||||
PlayerSortODScoreDefASC,
|
||||
PlayerSortODScoreDefDESC,
|
||||
PlayerSortODScoreSupASC,
|
||||
PlayerSortODScoreSupDESC,
|
||||
PlayerSortODScoreTotalASC,
|
||||
PlayerSortODScoreTotalDESC,
|
||||
PlayerSortPointsASC,
|
||||
PlayerSortPointsDESC,
|
||||
PlayerSortDeletedAtASC,
|
||||
PlayerSortDeletedAtDESC,
|
||||
)
|
||||
if err != nil {
|
||||
return SliceElementValidationError{
|
||||
Model: listPlayersParamsModelName,
|
||||
|
|
|
@ -6,7 +6,6 @@ import (
|
|||
"math"
|
||||
"net/url"
|
||||
"slices"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
|
@ -469,33 +468,6 @@ const (
|
|||
TribeSortDeletedAtDESC
|
||||
)
|
||||
|
||||
func newTribeSortFromString(s string) (TribeSort, error) {
|
||||
allowed := []TribeSort{
|
||||
TribeSortODScoreAttASC,
|
||||
TribeSortODScoreAttDESC,
|
||||
TribeSortODScoreDefASC,
|
||||
TribeSortODScoreDefDESC,
|
||||
TribeSortODScoreTotalASC,
|
||||
TribeSortODScoreTotalDESC,
|
||||
TribeSortPointsASC,
|
||||
TribeSortPointsDESC,
|
||||
TribeSortDominanceASC,
|
||||
TribeSortDominanceDESC,
|
||||
TribeSortDeletedAtASC,
|
||||
TribeSortDeletedAtDESC,
|
||||
}
|
||||
|
||||
for _, a := range allowed {
|
||||
if strings.EqualFold(a.String(), s) {
|
||||
return a, nil
|
||||
}
|
||||
}
|
||||
|
||||
return 0, UnsupportedSortStringError{
|
||||
Sort: s,
|
||||
}
|
||||
}
|
||||
|
||||
// IsInConflict returns true if two sorts can't be used together (e.g. TribeSortIDASC and TribeSortIDDESC).
|
||||
func (s TribeSort) IsInConflict(s2 TribeSort) bool {
|
||||
ss := []TribeSort{s, s2}
|
||||
|
@ -878,7 +850,21 @@ func (params *ListTribesParams) PrependSortString(sort []string) error {
|
|||
toPrepend := make([]TribeSort, 0, len(sort))
|
||||
|
||||
for i, s := range sort {
|
||||
converted, err := newTribeSortFromString(s)
|
||||
converted, err := newSortFromString(
|
||||
s,
|
||||
TribeSortODScoreAttASC,
|
||||
TribeSortODScoreAttDESC,
|
||||
TribeSortODScoreDefASC,
|
||||
TribeSortODScoreDefDESC,
|
||||
TribeSortODScoreTotalASC,
|
||||
TribeSortODScoreTotalDESC,
|
||||
TribeSortPointsASC,
|
||||
TribeSortPointsDESC,
|
||||
TribeSortDominanceASC,
|
||||
TribeSortDominanceDESC,
|
||||
TribeSortDeletedAtASC,
|
||||
TribeSortDeletedAtDESC,
|
||||
)
|
||||
if err != nil {
|
||||
return SliceElementValidationError{
|
||||
Model: listTribesParamsModelName,
|
||||
|
|
|
@ -5,7 +5,6 @@ import (
|
|||
"fmt"
|
||||
"math"
|
||||
"slices"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
|
@ -264,23 +263,6 @@ const (
|
|||
TribeChangeSortServerKeyDESC
|
||||
)
|
||||
|
||||
func newTribeChangeSortFromString(s string) (TribeChangeSort, error) {
|
||||
allowed := []TribeChangeSort{
|
||||
TribeChangeSortCreatedAtASC,
|
||||
TribeChangeSortCreatedAtDESC,
|
||||
}
|
||||
|
||||
for _, a := range allowed {
|
||||
if strings.EqualFold(a.String(), s) {
|
||||
return a, nil
|
||||
}
|
||||
}
|
||||
|
||||
return 0, UnsupportedSortStringError{
|
||||
Sort: s,
|
||||
}
|
||||
}
|
||||
|
||||
// IsInConflict returns true if two sorts can't be used together (e.g. TribeChangeSortIDASC and TribeChangeSortIDDESC).
|
||||
func (s TribeChangeSort) IsInConflict(s2 TribeChangeSort) bool {
|
||||
ss := []TribeChangeSort{s, s2}
|
||||
|
@ -592,7 +574,11 @@ func (params *ListTribeChangesParams) PrependSortString(sort []string) error {
|
|||
toPrepend := make([]TribeChangeSort, 0, len(sort))
|
||||
|
||||
for i, s := range sort {
|
||||
converted, err := newTribeChangeSortFromString(s)
|
||||
converted, err := newSortFromString(
|
||||
s,
|
||||
TribeChangeSortCreatedAtASC,
|
||||
TribeChangeSortCreatedAtDESC,
|
||||
)
|
||||
if err != nil {
|
||||
return SliceElementValidationError{
|
||||
Model: listTribeChangesParamsModelName,
|
||||
|
|
|
@ -185,3 +185,17 @@ func (c decodedCursor) time(k string) (time.Time, error) {
|
|||
|
||||
return val, nil
|
||||
}
|
||||
|
||||
func newSortFromString[T interface {
|
||||
String() string
|
||||
}](s string, allowed ...T) (T, error) {
|
||||
for _, a := range allowed {
|
||||
if strings.EqualFold(a.String(), s) {
|
||||
return a, nil
|
||||
}
|
||||
}
|
||||
var zero T
|
||||
return zero, UnsupportedSortStringError{
|
||||
Sort: s,
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue