refactor: domain - generic newSortFromString
This commit is contained in:
parent
02108fcb00
commit
07f18c8aab
|
@ -4,7 +4,6 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"math"
|
"math"
|
||||||
"slices"
|
"slices"
|
||||||
"strings"
|
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -231,23 +230,6 @@ const (
|
||||||
EnnoblementSortServerKeyDESC
|
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).
|
// IsInConflict returns true if two sorts can't be used together (e.g. EnnoblementSortIDASC and EnnoblementSortIDDESC).
|
||||||
func (s EnnoblementSort) IsInConflict(s2 EnnoblementSort) bool {
|
func (s EnnoblementSort) IsInConflict(s2 EnnoblementSort) bool {
|
||||||
ss := []EnnoblementSort{s, s2}
|
ss := []EnnoblementSort{s, s2}
|
||||||
|
@ -539,7 +521,11 @@ func (params *ListEnnoblementsParams) PrependSortString(sort []string) error {
|
||||||
toPrepend := make([]EnnoblementSort, 0, len(sort))
|
toPrepend := make([]EnnoblementSort, 0, len(sort))
|
||||||
|
|
||||||
for i, s := range sort {
|
for i, s := range sort {
|
||||||
converted, err := newEnnoblementSortFromString(s)
|
converted, err := newSortFromString(
|
||||||
|
s,
|
||||||
|
EnnoblementSortCreatedAtASC,
|
||||||
|
EnnoblementSortCreatedAtDESC,
|
||||||
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return SliceElementValidationError{
|
return SliceElementValidationError{
|
||||||
Model: listEnnoblementsParamsModelName,
|
Model: listEnnoblementsParamsModelName,
|
||||||
|
|
|
@ -6,7 +6,6 @@ import (
|
||||||
"math"
|
"math"
|
||||||
"net/url"
|
"net/url"
|
||||||
"slices"
|
"slices"
|
||||||
"strings"
|
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -541,33 +540,6 @@ const (
|
||||||
PlayerSortDeletedAtDESC
|
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).
|
// IsInConflict returns true if two sorts can't be used together (e.g. PlayerSortIDASC and PlayerSortIDDESC).
|
||||||
func (s PlayerSort) IsInConflict(s2 PlayerSort) bool {
|
func (s PlayerSort) IsInConflict(s2 PlayerSort) bool {
|
||||||
ss := []PlayerSort{s, s2}
|
ss := []PlayerSort{s, s2}
|
||||||
|
@ -991,7 +963,21 @@ func (params *ListPlayersParams) PrependSortString(sort []string) error {
|
||||||
toPrepend := make([]PlayerSort, 0, len(sort))
|
toPrepend := make([]PlayerSort, 0, len(sort))
|
||||||
|
|
||||||
for i, s := range 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 {
|
if err != nil {
|
||||||
return SliceElementValidationError{
|
return SliceElementValidationError{
|
||||||
Model: listPlayersParamsModelName,
|
Model: listPlayersParamsModelName,
|
||||||
|
|
|
@ -6,7 +6,6 @@ import (
|
||||||
"math"
|
"math"
|
||||||
"net/url"
|
"net/url"
|
||||||
"slices"
|
"slices"
|
||||||
"strings"
|
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -469,33 +468,6 @@ const (
|
||||||
TribeSortDeletedAtDESC
|
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).
|
// IsInConflict returns true if two sorts can't be used together (e.g. TribeSortIDASC and TribeSortIDDESC).
|
||||||
func (s TribeSort) IsInConflict(s2 TribeSort) bool {
|
func (s TribeSort) IsInConflict(s2 TribeSort) bool {
|
||||||
ss := []TribeSort{s, s2}
|
ss := []TribeSort{s, s2}
|
||||||
|
@ -878,7 +850,21 @@ func (params *ListTribesParams) PrependSortString(sort []string) error {
|
||||||
toPrepend := make([]TribeSort, 0, len(sort))
|
toPrepend := make([]TribeSort, 0, len(sort))
|
||||||
|
|
||||||
for i, s := range 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 {
|
if err != nil {
|
||||||
return SliceElementValidationError{
|
return SliceElementValidationError{
|
||||||
Model: listTribesParamsModelName,
|
Model: listTribesParamsModelName,
|
||||||
|
|
|
@ -5,7 +5,6 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"math"
|
"math"
|
||||||
"slices"
|
"slices"
|
||||||
"strings"
|
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -264,23 +263,6 @@ const (
|
||||||
TribeChangeSortServerKeyDESC
|
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).
|
// IsInConflict returns true if two sorts can't be used together (e.g. TribeChangeSortIDASC and TribeChangeSortIDDESC).
|
||||||
func (s TribeChangeSort) IsInConflict(s2 TribeChangeSort) bool {
|
func (s TribeChangeSort) IsInConflict(s2 TribeChangeSort) bool {
|
||||||
ss := []TribeChangeSort{s, s2}
|
ss := []TribeChangeSort{s, s2}
|
||||||
|
@ -592,7 +574,11 @@ func (params *ListTribeChangesParams) PrependSortString(sort []string) error {
|
||||||
toPrepend := make([]TribeChangeSort, 0, len(sort))
|
toPrepend := make([]TribeChangeSort, 0, len(sort))
|
||||||
|
|
||||||
for i, s := range sort {
|
for i, s := range sort {
|
||||||
converted, err := newTribeChangeSortFromString(s)
|
converted, err := newSortFromString(
|
||||||
|
s,
|
||||||
|
TribeChangeSortCreatedAtASC,
|
||||||
|
TribeChangeSortCreatedAtDESC,
|
||||||
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return SliceElementValidationError{
|
return SliceElementValidationError{
|
||||||
Model: listTribeChangesParamsModelName,
|
Model: listTribeChangesParamsModelName,
|
||||||
|
|
|
@ -185,3 +185,17 @@ func (c decodedCursor) time(k string) (time.Time, error) {
|
||||||
|
|
||||||
return val, nil
|
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