gin gorm

作者: hehehehe | 来源:发表于2022-10-09 11:14 被阅读0次

DB

package config

import (
    "gorm.io/driver/postgres"
    "gorm.io/gorm"
    "gorm.io/gorm/logger"
    "log"
    "os"
    "time"
)

// DB 数据库链接单例
var DB *gorm.DB

// Database 在中间件中初始化mysql链接
func InitDb(connString string) {
    // 初始化GORM日志配置
    newLogger := logger.New(
        log.New(os.Stdout, "\r\n", log.LstdFlags), // io writer
        logger.Config{
            SlowThreshold:             time.Second, // Slow SQL threshold
            LogLevel:                  logger.Info, // Log level(这里记得根据需求改一下)
            IgnoreRecordNotFoundError: true,        // Ignore ErrRecordNotFound error for logger
            Colorful:                  false,       // Disable color
        },
    )

    db, err := gorm.Open(postgres.Open(connString), &gorm.Config{
        Logger: newLogger,
    })
    if err != nil {
        log.Println("数据库连接失败", err)
        panic(err)
    }

    sqlDB, err := db.DB()
    //设置连接池
    //空闲
    sqlDB.SetMaxIdleConns(10)
    //打开
    sqlDB.SetMaxOpenConns(20)
    DB = db
}

server router

package server

import (
    "github.com/gin-gonic/gin"
    "hn-service/api"
)

// NewRouter 路由配置
func NewRouter() *gin.Engine {
    router := gin.Default()

    // Simple group: v1
    v1 := router.Group("/v1")
    {
        v1.GET("/ping", api.Ping)
        v1.POST("/product_query", api.ProductQuery)
    }

    // Simple group: v2
    v2 := router.Group("/v2")
    {
        v2.POST("/login", api.Ping)
    }
    return router
}

api handler

package api

import (
    "github.com/gin-gonic/gin"
    "hn-service/model"
    "hn-service/service"
    "hn-service/util"
)

// Ping 状态检查页面
func Ping(c *gin.Context) {
    c.JSON(200, util.Response{
        Code: 0,
        Msg:  "Pong",
    })
}

func ProductQuery(c *gin.Context) {
    var hnIdModel model.HnIdModel
    if err := c.ShouldBind(&hnIdModel); err == nil {
        poiHnEdits := service.QueryByHnIds(&hnIdModel)
        c.JSON(200, util.Response{
            Code: util.SUCCESS,
            Data: poiHnEdits,
            Msg:  "查询成功",
        })
    } else {
        c.JSON(200, util.Response{
            Code: util.FAIL,
            Msg:  "查询失败",
        })
    }

}


package util

// Response 基础序列化器
type Response struct {
    Code int         `json:"code"`
    Data interface{} `json:"data,omitempty"`
    Msg  string      `json:"msg"`
}

const (
    SUCCESS = 1
    FAIL    = 0
)

main

package main

import (
    "hn-service/config"
    "hn-service/server"
)

func main() {
    // 从配置文件读取配置
    config.Init()
    // 装载路由
    r := server.NewRouter()
    r.Run(":8012")
}

dockerfile

FROM golang:alpine

# 为我们的镜像设置必要的环境变量
ENV GO111MODULE=on \
    CGO_ENABLED=0 \
    GOOS=linux \
    GOARCH=amd64 \
    GOPROXY="https://goproxy.cn,direct"

# 移动到工作目录:/home/www/goWebBlog 这个目录 是你项目代码 放在linux上
# 这是我的代码跟目录
# 你们得修改成自己的
WORKDIR /app

# 将代码复制到容器中
COPY . .

# 将我们的代码编译成二进制可执行文件  可执行文件名为 app
RUN go build -o app .

EXPOSE 8012

# 启动容器时运行的命令
CMD ["./app"]

makefile

docker_tag_poi_worker=192.168.106.46:5000/go-hn-service:v1
# docker_tag_poi_worker=192.168.160.20:5000/poi-hn-service:v3
docker_build_worker:
    docker build -t $(docker_tag_poi_worker) -f Dockerfile .

docker_push_worker:
    docker push $(docker_tag_poi_worker)

docker_build_push_worker:
    make docker_build_worker
    make docker_push_worker



相关文章

  • 使用 Casbin 在 Golang 项目中授权

    JWT 认证 | GIN | GORM 你好开发者??。在本文中,我们将在 Golang(GIN+GORM) 项目...

  • gin gorm

    DB server router api handler main dockerfile makefile

  • gorm批量插入数据

    最近用 gin+mysql编写web工程,其中使用了gorm库对数据库进行操作。由于gorm目前暂未提供 批量插入...

  • logan

    logan是基于gin的web项目,集成了sentry、gorm、premetheus等工具,旨在高效快速的web...

  • golang gin gorm操作

    gorm.Model当设置表时,添加了gorm.Model,创建表会自动添加一下状态字段,比如create_at,...

  • Go后台项目实战

    本项目完全使用原生开发,没有使用任何WEB框架(如:gin,beego,Martini等),和ORM(如:gorm...

  • Gin 项目结构示例

    使用gorm访问数据库gin 为项目根目录main.go 为入口文件Router 为路由目录Middlewares...

  • GIN-Web入门

    这是个小案例返回一个图书列表,用到了gin和gorm Go版本:1.13,Go modules 目录结构 main...

  • 带你踩gorm v2的坑-模型关系

    最近在学习golang, 使用gin框架搭了个网站,于是在网上找golang的orm找到gorm使用了两天突然发现...

  • 如何简单粗暴快速的开发一款 Go 博客 - 记Milu博客1.0

    大家好,我在公司的岗位是前端,由于对Go的广泛兴趣到最后的挚爱,所以开发了这款基于`Go, Gin, Gorm, ...

网友评论

      本文标题:gin gorm

      本文链接:https://www.haomeiwen.com/subject/tbygartx.html