44 lines
1.0 KiB
Go
44 lines
1.0 KiB
Go
package models
|
|
|
|
import (
|
|
"database/sql/driver"
|
|
"encoding/json"
|
|
"fmt"
|
|
)
|
|
|
|
type Persons []Person
|
|
|
|
// --- Implement driver.Valuer (for saving to DB)
|
|
func (r Persons) Value() (driver.Value, error) {
|
|
return json.Marshal(r)
|
|
}
|
|
|
|
// --- Implement sql.Scanner (for reading from DB)
|
|
func (r *Persons) Scan(value any) error {
|
|
bytes, ok := value.([]byte)
|
|
if !ok {
|
|
return fmt.Errorf("failed to unmarshal Settings: %v", value)
|
|
}
|
|
return json.Unmarshal(bytes, r)
|
|
}
|
|
|
|
type Person struct {
|
|
Id int `gorm:"primaryKey" json:"id"`
|
|
FirstName string `gorm:"column:firstName" json:"firstName"`
|
|
LastName string `gorm:"column:lastName" json:"lastName"`
|
|
}
|
|
|
|
// --- Implement driver.Valuer (for saving to DB)
|
|
func (r Person) Value() (driver.Value, error) {
|
|
return json.Marshal(r)
|
|
}
|
|
|
|
// --- Implement sql.Scanner (for reading from DB)
|
|
func (r *Person) Scan(value any) error {
|
|
bytes, ok := value.([]byte)
|
|
if !ok {
|
|
return fmt.Errorf("failed to unmarshal Settings: %v", value)
|
|
}
|
|
return json.Unmarshal(bytes, r)
|
|
}
|