With the following model:
type User struct {
UUID string `gorm:"primary_key"`
Name string `gorm:"NOT NULL"`
CreatedAt time.Time
UpdatedAt time.Time
}
If you do the following query with go-gorm for a user that does NOT exist:
var user User
db.First(&user)
You end up receiving an empty struct with the date fields populated. Is there a way to instead just receive a nil
struct back or am I thinking about this in the wrong way?
In gorm you are supposed to check if the record is empty, with a method call:
if db.First(&user, 77).RecordNotFound() {
log.Println("UUID:", 77, err)
}
Add a Pointer function
func (user User) Pointer() *User {
var t time.Time
if user.UUID == "" && user.Name == "" && user.CreatedAt == t && user.UpdatedAt == t {
return nil
}
return &user
}
and pass it
var user User
db.First(user.Pointer())