mirror of
https://git.mirrors.martin98.com/https://github.com/SigNoz/signoz
synced 2025-07-29 11:41:58 +08:00
75 lines
1.3 KiB
Go
75 lines
1.3 KiB
Go
package valuer
|
|
|
|
import (
|
|
"database/sql/driver"
|
|
"encoding/json"
|
|
"fmt"
|
|
"reflect"
|
|
"strings"
|
|
)
|
|
|
|
var _ Valuer = (*String)(nil)
|
|
|
|
type String struct {
|
|
val string
|
|
}
|
|
|
|
func NewString(val string) String {
|
|
return String{val: strings.ToLower(strings.TrimSpace(val))}
|
|
}
|
|
|
|
func (enum String) IsZero() bool {
|
|
return enum.val == ""
|
|
}
|
|
|
|
func (enum String) StringValue() string {
|
|
return enum.val
|
|
}
|
|
|
|
func (enum String) String() string {
|
|
return enum.val
|
|
}
|
|
|
|
func (enum String) MarshalJSON() ([]byte, error) {
|
|
return json.Marshal(enum.StringValue())
|
|
}
|
|
|
|
func (enum *String) UnmarshalJSON(data []byte) error {
|
|
var str string
|
|
if err := json.Unmarshal(data, &str); err != nil {
|
|
return err
|
|
}
|
|
|
|
*enum = NewString(str)
|
|
return nil
|
|
}
|
|
|
|
func (enum String) Value() (driver.Value, error) {
|
|
return enum.StringValue(), nil
|
|
}
|
|
|
|
func (enum *String) Scan(val interface{}) error {
|
|
if enum == nil {
|
|
return fmt.Errorf("string: (nil \"%s\")", reflect.TypeOf(enum).String())
|
|
}
|
|
|
|
if val == nil {
|
|
// Return an empty string
|
|
*enum = NewString("")
|
|
return nil
|
|
}
|
|
|
|
str, ok := val.(string)
|
|
if !ok {
|
|
return fmt.Errorf("string: (non-string \"%s\")", reflect.TypeOf(val).String())
|
|
}
|
|
|
|
*enum = NewString(str)
|
|
return nil
|
|
}
|
|
|
|
func (enum *String) UnmarshalText(text []byte) error {
|
|
*enum = NewString(string(text))
|
|
return nil
|
|
}
|