40 lines
825 B
Go
40 lines
825 B
Go
|
package types
|
||
|
|
||
|
import (
|
||
|
"database/sql/driver"
|
||
|
"encoding/json"
|
||
|
)
|
||
|
|
||
|
type Rule struct {
|
||
|
Min int `json:"min"`
|
||
|
Max int `json:"max"`
|
||
|
Type string `json:"type"`
|
||
|
Unique bool `json:"unique"`
|
||
|
Required []string `json:"required"`
|
||
|
Regular string `json:"regular"`
|
||
|
}
|
||
|
|
||
|
// Value implements the driver Valuer interface.
|
||
|
func (n Scenarios) Value() (driver.Value, error) {
|
||
|
return json.Marshal(n)
|
||
|
}
|
||
|
|
||
|
// Scan implements the Scanner interface.
|
||
|
func (n *Rule) Scan(value interface{}) error {
|
||
|
if value == nil {
|
||
|
return nil
|
||
|
}
|
||
|
switch s := value.(type) {
|
||
|
case string:
|
||
|
return json.Unmarshal([]byte(s), n)
|
||
|
case []byte:
|
||
|
return json.Unmarshal(s, n)
|
||
|
}
|
||
|
return ErrDbTypeUnsupported
|
||
|
}
|
||
|
|
||
|
// Value implements the driver Valuer interface.
|
||
|
func (n Rule) Value() (driver.Value, error) {
|
||
|
return json.Marshal(n)
|
||
|
}
|