用GO纤维和行星尺度构建REST API-第2部分
#api #go #planetscale

楷模

创建一个User模型并创建一个名为user.go ins in models目录的文件,并用gorm定义结构。

package models

import "gorm.io/gorm"

// User struct
type User struct {
    gorm.Model
    Name    string `json:"name"`
    Email   string `json:"email"`
    Website string `json:"website"`
}

连接到数据库

创建一个名为add-users-table的开发数据库分支。

$ pscale branch create fiber-pscale add-users-table

打开一个新的终端选项卡,我们将连接到附加用户台上分支中的数据库,然后收听3309端口。查看更多Connect using client certificates

$ pscale connect fiber-pscale add-users-table --port 3309

在模型目录中创建一个名为database.go的文件,并添加一个函数以连接到数据库。

package models

import (
    "gorm.io/driver/mysql"
    "gorm.io/gorm"
)

var DB *gorm.DB

func ConnectDatabase() {
    // refer https://github.com/go-sql-driver/mysql#dsn-data-source-name for details
    dsn := "root:@tcp(127.0.0.1:3309)/fiber-pscale?charset=utf8mb4&parseTime=True&loc=Local"
    database, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
    if err != nil {
        panic("failed to connect database")
    }
    // Migrate the users table
    database.AutoMigrate(&User{})
    DB = database
}

打开您的main.go,并致电ConnectDatabase函数以迁移表并连接到数据库。

import (
    // ...
    "github.com/maful/fiber-pscale/models"
)

func main() {
    // ...
    models.ConnectDatabase() // New

    //
    app.Use(logger.New())
}

然后运行App go run cmd/main.go,Gorm将自动将表迁移到add-users-table分支中。如何知道迁移是否成功?您可以在Planetscale仪表板中检查以下分支,或使用CLI查看add-users-table分支的模式。

$ pscale branch schema fiber-pscale add-users-table
-- users --
CREATE TABLE `users` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
  `created_at` datetime(3) DEFAULT NULL,
  `updated_at` datetime(3) DEFAULT NULL,
  `deleted_at` datetime(3) DEFAULT NULL,
  `name` longtext,
  `email` longtext,
  `website` longtext,
  PRIMARY KEY (`id`),
  KEY `idx_users_deleted_at` (`deleted_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

在您创建部署请求之前,该架构不会适用于主分支。最后,停止从add-users-table分支或ctrl+c。

停止连接