2
0

basetypes.go 743 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package common
  2. import (
  3. "database/sql/driver"
  4. "encoding/json"
  5. "errors"
  6. )
  7. type JSONMap map[string]interface{}
  8. func (m JSONMap) Value() (driver.Value, error) {
  9. if m == nil {
  10. return nil, nil
  11. }
  12. return json.Marshal(m)
  13. }
  14. func (m *JSONMap) Scan(value interface{}) error {
  15. if value == nil {
  16. *m = make(map[string]interface{})
  17. return nil
  18. }
  19. var err error
  20. switch value.(type) {
  21. case []byte:
  22. err = json.Unmarshal(value.([]byte), m)
  23. case string:
  24. err = json.Unmarshal([]byte(value.(string)), m)
  25. default:
  26. err = errors.New("basetypes.JSONMap.Scan: invalid value type")
  27. }
  28. if err != nil {
  29. return err
  30. }
  31. return nil
  32. }
  33. type TreeNode[T any] interface {
  34. GetChildren() []T
  35. SetChildren(children T)
  36. GetID() int
  37. GetParentID() int
  38. }