gorm example onerealation golang

package main

import (
    "fmt"
    "gorm.io/driver/sqlite"
    "gorm.io/gorm"
)

type User struct {
    ID   uint
    Name string
    Age  int
}

type Email struct {
    ID     uint
    UserID uint
    Email  string
}

func main() {
    db, err := gorm.Open(sqlite.Open("example.db"), &gorm.Config{})
    if err != nil {
        panic("failed to connect database")
    }

    // Auto Migrate
    db.AutoMigrate(&User{}, &Email{})

    // Create
    user := User{Name: "John", Age: 25}
    result := db.Create(&user)
    fmt.Println(result.RowsAffected)

    // One-to-One relation
    email := Email{UserID: user.ID, Email: "[email protected]"}
    db.Create(&email)

    // Read
    var readUser User
    db.First(&readUser, user.ID)
    var readEmail Email
    db.Model(&readUser).Association("Email").Find(&readEmail)
    fmt.Println(readUser)
    fmt.Println(readEmail)
}