api/internal/api/merch/origins.go
2025-10-05 15:31:00 +03:00

44 lines
687 B
Go

package merch
import (
"database/sql/driver"
"encoding/json"
"strings"
)
type Origin int
const (
surugaya = (iota + 1) * 1000
mandarake
)
var Origins = [...]string{
"surugaya",
"mandarake",
}
func (o Origin) String() string {
index := (int(o) / 1000) - 1
if index < 0 || index >= len(Origins) {
return "unknown"
}
return Origins[index]
}
func (o Origin) MarshalJSON() ([]byte, error) {
return json.Marshal(o.String())
}
func parseOrigin(s string) (Origin, bool) {
for i, name := range Origins {
if name == strings.ToLower(s) {
return Origin((i + 1) * 1000), true
}
}
return 0, false
}
func (o Origin) Value() (driver.Value, error) {
return int(o), nil
}