dev_sound_period.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package dao
  2. import (
  3. "database/sql/driver"
  4. "encoding/json"
  5. "fmt"
  6. "gorm.io/gorm"
  7. )
  8. type SoundPeriod struct {
  9. gorm.Model
  10. Time string `json:"time" gorm:"column:time;comment:'星期'"`
  11. Period0 IntArray `json:"period0" gorm:"column:period0;comment:'时间音量0';type:json"`
  12. Period1 IntArray `json:"period1" gorm:"column:period1;comment:'时间音量1';type:json"`
  13. Period2 IntArray `json:"period2" gorm:"column:period2;comment:'时间音量2';type:json"`
  14. Period3 IntArray `json:"period3" gorm:"column:period3;comment:'时间音量3';type:json"`
  15. Period4 IntArray `json:"period4" gorm:"column:period4;comment:'时间音量4';type:json"`
  16. Period5 IntArray `json:"period5" gorm:"column:period5;comment:'时间音量5';type:json"`
  17. Period6 IntArray `json:"period6" gorm:"column:period6;comment:'时间音量6';type:json"`
  18. Period7 IntArray `json:"period7" gorm:"column:period7;comment:'时间音量7';type:json"`
  19. }
  20. func (SoundPeriod) TableName() string {
  21. return "dev_sound_period"
  22. }
  23. type IntArray []int
  24. // Value 实现 driver.Valuer 接口,用于保存到数据库
  25. func (a IntArray) Value() (driver.Value, error) {
  26. return json.Marshal(a)
  27. }
  28. // Scan 实现 sql.Scanner 接口,用于从数据库读取值
  29. func (a *IntArray) Scan(value interface{}) error {
  30. b, ok := value.([]byte)
  31. if !ok {
  32. return fmt.Errorf("failed to unmarshal IntArray value")
  33. }
  34. return json.Unmarshal(b, &a)
  35. }