Use dedicated type for each order field

Signed-off-by: gearnode <bryan@frimin.fr>
This commit is contained in:
gearnode
2025-03-19 00:20:05 +01:00
parent c73e417e5c
commit 5a1f873d58
32 changed files with 518 additions and 119 deletions

View File

@@ -21,51 +21,6 @@ import (
type (
OrderField interface {
Column() string
fmt.Stringer
}
GenericOrderField string
)
const (
OrderFieldCreatedAt GenericOrderField = "CREATED_AT"
OrderFieldUpdatedAt GenericOrderField = "UPDATED_AT"
OrderFieldName GenericOrderField = "NAME"
)
func (of GenericOrderField) String() string {
return string(of)
}
func (of GenericOrderField) Column() string {
switch of {
case OrderFieldCreatedAt:
return "created_at"
case OrderFieldUpdatedAt:
return "updated_at"
case OrderFieldName:
return "name"
default:
return ""
}
}
func (of GenericOrderField) MarshalText() ([]byte, error) {
return []byte(of.String()), nil
}
func (of *GenericOrderField) UnmarshalText(data []byte) error {
val := string(data)
switch val {
case OrderFieldCreatedAt.String():
*of = OrderFieldCreatedAt
case OrderFieldUpdatedAt.String():
*of = OrderFieldUpdatedAt
case OrderFieldName.String():
*of = OrderFieldName
default:
return fmt.Errorf("invalid GenericOrderField value: %q", val)
}
return nil
}