快速開始api開發(二)model 程式碼生成 與 依賴注入

wuyan94zl發表於2022-08-19

model 程式碼生成 與 依賴注入

本文需要介紹 gotools 工具

需要使用的工具命令:gotools grom -h
程式碼地址:github.com/wuyan94zl/gotools

建立檔案:models/user.sql

CREATE TABLE `users`
(
    `id`          int(11) NOT NULL,
    `nickname`    varchar(255) NOT NULL COMMENT '使用者暱稱',
    `login_id`    varchar(255) NOT NULL COMMENT '登入ID',
    `password`    varchar(255) NOT NULL COMMENT '登入密碼',
    `head_img`    varchar(255) NOT NULL COMMENT '使用者頭像',
    `create_time` timestamp    NOT NULL DEFAULT CURRENT_TIMESTAMP,
    `update_time` timestamp    NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

生成 model 程式碼

進入models資料夾:cd models
執行:gotools gorm --src user.sql --dir user --cache false
生成目錄結構(程式碼基於 gorm + mysql + redis) –cache 為 true 時使用redis做快取代理

models
    |-- user
        |-- model.go
        |-- model_gen.go
    |-- user.sql

model 依賴注入,修改container.go

修改: container/container.go

package container

import (
    "github.com/go-redis/redis/v9"
    "gorm.io/gorm"

    "github.com/wuyan94zl/example-api/models/user" // 增加程式碼
)

type Config struct {
    DB    GormConfig
    Redis RedisConfig
}

type Container struct {
    DB        *gorm.DB
    Redis     *redis.Client
    UserModel user.UsersModel  // 增加程式碼
}

func NewContainer(c Config) {
    dbConn, redisConn := dbConn(c.DB), redisConn(c.Redis)
    container = &Container{
        DB:        dbConn,
        Redis:     redisConn,
        UserModel: user.NewUsersModel(dbConn),  // 增加程式碼
    }
}

下一篇,介面註冊實現

本作品採用《CC 協議》,轉載必須註明作者和本文連結
沒有造飛機的格局,怎麼能擰得好螺絲。

相關文章