fix: Add db scanner methods for SpaceDelimitedArray (#194)

This commit is contained in:
David Sharnoff 2022-07-20 06:36:17 -07:00 committed by GitHub
parent 8dd5c87faa
commit 5fb36bf4c2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 76 additions and 0 deletions

View file

@ -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 {