File tree Expand file tree Collapse file tree 2 files changed +53
-0
lines changed Expand file tree Collapse file tree 2 files changed +53
-0
lines changed Original file line number Diff line number Diff line change 1+ package fqbn
2+
3+ import (
4+ "encoding/json"
5+ "fmt"
6+ )
7+
8+ // UnmarshalJSON implements the json.Unmarshaler interface for the FQBN type.
9+ func (f * FQBN ) UnmarshalJSON (data []byte ) error {
10+ var fqbnStr string
11+ if err := json .Unmarshal (data , & fqbnStr ); err != nil {
12+ return fmt .Errorf ("failed to unmarshal FQBN: %w" , err )
13+ }
14+
15+ fqbn , err := Parse (fqbnStr )
16+ if err != nil {
17+ return fmt .Errorf ("invalid FQBN: %w" , err )
18+ }
19+
20+ * f = * fqbn
21+ return nil
22+ }
23+
24+ // MarshalJSON implements the json.Marshaler interface for the FQBN type.
25+ func (f FQBN ) MarshalJSON () ([]byte , error ) {
26+ return json .Marshal (f .String ())
27+ }
Original file line number Diff line number Diff line change 1+ package fqbn
2+
3+ import "fmt"
4+
5+ // Value implements the driver.Valuer interface for the FQBN type.
6+ func (f FQBN ) Value () (any , error ) {
7+ return f .String (), nil
8+ }
9+
10+ // Scan implements the sql.Scanner interface for the FQBN type.
11+ func (f * FQBN ) Scan (value any ) error {
12+ if value == nil {
13+ return nil
14+ }
15+
16+ if v , ok := value .(string ); ok {
17+ ParsedFQBN , err := Parse (v )
18+ if err != nil {
19+ return fmt .Errorf ("failed to parse FQBN: %w" , err )
20+ }
21+ * f = * ParsedFQBN
22+ return nil
23+ }
24+
25+ return fmt .Errorf ("unsupported type: %T" , value )
26+ }
You can’t perform that action at this time.
0 commit comments