Go Fiber 및 PlanetScale로 REST API 구축 - 2부

5311 단어 apiplanetscalego

모델


User 모델을 만들고 user.go 디렉토리 안에 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


새 터미널 탭을 열고 add-users-table 분기 내부의 데이터베이스에 연결하고 3309 PORT를 수신합니다. 더 보기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() {
    r := gin.Default()
    models.ConnectDatabase() // New
    // ....
}


그런 다음 앱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에서 연결을 중지합니다.

좋은 웹페이지 즐겨찾기