fix: Add db scanner methods for SpaceDelimitedArray (#194)
This commit is contained in:
parent
8dd5c87faa
commit
5fb36bf4c2
3 changed files with 76 additions and 0 deletions
|
@ -1,7 +1,9 @@
|
|||
package oidc
|
||||
|
||||
import (
|
||||
"database/sql/driver"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
|
@ -95,6 +97,34 @@ func (s *SpaceDelimitedArray) UnmarshalJSON(data []byte) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (s *SpaceDelimitedArray) Scan(src interface{}) error {
|
||||
if src == nil {
|
||||
*s = nil
|
||||
return nil
|
||||
}
|
||||
switch v := src.(type) {
|
||||
case string:
|
||||
if len(v) == 0 {
|
||||
*s = SpaceDelimitedArray{}
|
||||
return nil
|
||||
}
|
||||
*s = strings.Split(v, " ")
|
||||
case []byte:
|
||||
if len(v) == 0 {
|
||||
*s = SpaceDelimitedArray{}
|
||||
return nil
|
||||
}
|
||||
*s = strings.Split(string(v), " ")
|
||||
default:
|
||||
return fmt.Errorf("cannot convert %T to SpaceDelimitedArray", src)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s SpaceDelimitedArray) Value() (driver.Value, error) {
|
||||
return strings.Join(s, " "), nil
|
||||
}
|
||||
|
||||
type Time time.Time
|
||||
|
||||
func (t *Time) UnmarshalJSON(data []byte) error {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue