Skip to content

migrate

go
var instance *gorm.DB

func InitDB(dsn string) {
	var err error
	instance, err = gorm.Open(postgres.Open(dsn), &gorm.Config{})
	if err != nil {
		panic("failed to connect database")
	}

	instance.AutoMigrate(&model.User{})
	instance.AutoMigrate(&model.UserAuth{})
	instance.AutoMigrate(&model.UserLinkGroup{})
	instance.AutoMigrate(&model.UserGroup{})
	instance.AutoMigrate(&model.UserGroupLinkApp{})
	instance.AutoMigrate(&model.App{})
	instance.AutoMigrate(&model.InvitationCode{})
}

func GetInstance() *gorm.DB {
	return instance
}

快速开始

go
package main

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

type Product struct {
  gorm.Model
  Code  string
  Price uint
}

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

  ctx := context.Background()

  // Migrate the schema
  db.AutoMigrate(&Product{})

  // Create
  err = gorm.G[Product](db).Create(ctx, &Product{Code: "D42", Price: 100})

  // Read
  product, err := gorm.G[Product](db).Where("id = ?", 1).First(ctx) // find product with integer primary key
  products, err := gorm.G[Product](db).Where("code = ?", "D42").Find(ctx) // find product with code D42

  // Update - update product's price to 200
  err = gorm.G[Product](db).Where("id = ?", product.ID).Update(ctx, "Price", 200)
  // Update - update multiple fields
  err = gorm.G[Product](db).Where("id = ?", product.ID).Updates(ctx, Product{Code: "D42", Price: 100})

  // Delete - delete product
  err = gorm.G[Product](db).Where("id = ?", product.ID).Delete(ctx)
}