51 lines
889 B
Go
51 lines
889 B
Go
package param
|
|
|
|
import (
|
|
"encoding"
|
|
"ruben/inventory2/internal/domains/accounts"
|
|
"strconv"
|
|
)
|
|
|
|
// encoding.TextUnmarshaler instances for Spec
|
|
|
|
func Text(dst *string) encoding.TextUnmarshaler {
|
|
return (*rawText)(dst)
|
|
}
|
|
|
|
func Int(dst *int) encoding.TextUnmarshaler {
|
|
return (*intText)(dst)
|
|
}
|
|
|
|
func Platform(dst *accounts.Platform) encoding.TextUnmarshaler {
|
|
return (*platformText)(dst)
|
|
}
|
|
|
|
type (
|
|
rawText string
|
|
intText int
|
|
platformText accounts.Platform
|
|
)
|
|
|
|
func (t *rawText) UnmarshalText(text []byte) error {
|
|
*t = rawText(text)
|
|
return nil
|
|
}
|
|
|
|
func (n *intText) UnmarshalText(text []byte) error {
|
|
i, err := strconv.Atoi(string(text))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
*n = intText(i)
|
|
return nil
|
|
}
|
|
|
|
func (p *platformText) UnmarshalText(text []byte) error {
|
|
v, err := accounts.NewPlatform(string(text))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
*p = platformText(v)
|
|
return nil
|
|
}
|