История изменений
Исправление alnkapa, (текущая версия) :
Более предметно. К примеру дано такое. (Код не мой ИИ нагенерил)
package main
import (
"gorm.io/gorm"
"gorm.io/driver/postgres"
)
type User struct {
ID uint
Name string
Age int
City string
}
func main() {
dsn := "host=localhost user=gorm password=gorm dbname=gorm port=9920 sslmode=disable"
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
if err != nil {
panic(err)
}
// GROUP BY с подсчетом количества
var results []struct {
City string
Count int
}
db.Model(&User{}).
Select("city, COUNT(*) as count").
Group("city").
Find(&results)
}
Все хорошо и понятно. И работает. Появляется задача. Теперь Name это структура.
// Структура для имени
type FullName struct {
Title string `gorm:"size:10"` // Mr, Mrs, Dr
FirstName string `gorm:"size:100"`
LastName string `gorm:"size:100"`
MiddleName string `gorm:"size:100"`
}
И вот тут, уже надо писать свой. Value() (driver.Value, error) А дальше больше.
Исходная версия alnkapa, :
Более предметно. К примеру дано такое. (Код не мой ИИ нагенерил)
package main
import (
"gorm.io/gorm"
"gorm.io/driver/postgres"
)
type User struct {
ID uint
Name string
Age int
City string
}
func main() {
dsn := "host=localhost user=gorm password=gorm dbname=gorm port=9920 sslmode=disable"
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
if err != nil {
panic(err)
}
// GROUP BY с подсчетом количества
var results []struct {
City string
Count int
}
db.Model(&User{}).
Select("city, COUNT(*) as count").
Group("city").
Find(&results)
}
Все хорошо и понятно. И работает. Появляется задача. Теперь Name это структура.
// Структура для имени
type FullName struct {
Title string `gorm:"size:10"` // Mr, Mrs, Dr
FirstName string `gorm:"size:100"`
LastName string `gorm:"size:100"`
MiddleName string `gorm:"size:100"`
}