gin CRUD

gin CRUD

复制代码
// units
package dal

//cxg 2022-7-29
import (
    "net/url"
    "svrGIN/db"
    "svrGIN/model"

    "github.com/gin-gonic/gin/binding"

    "strings"
    "svrGIN/log"

    "github.com/gin-gonic/gin"
)

func SelectUnits(ctx *gin.Context) {
    var arr model.TunitArray
    var r model.Res
    d := db.GetPG()
    where := ctx.Param("where")
    where, _ = url.QueryUnescape(where)
    where = strings.Trim(where, "/")
    if where != "" {
        where = " where " + where
    }
    rows, err := d.Query("select * from tunit" + where)
    if err != nil {
        r.Status = 500
        r.Message = "fail"
        r.Exception = err.Error()
        ctx.JSON(500, &r)
        log.Log("SelectUnits()", err)
        return
    }
    defer d.Close()
    for rows.Next() {
        var row model.Tunit
        rows.Scan(&row.Unitid, &row.Unitname)
        arr.Tunits = append(arr.Tunits, &row)
    }
    arr.Status = 200
    arr.Message = "success"
    ctx.JSON(200, &arr)
}

func InsertUnits(ctx *gin.Context) {
    var arr model.TunitArray
    var r model.Res
    ctx.ShouldBindBodyWith(&arr, binding.JSON)
    d := db.GetPG()
    tx, _ := d.Begin()
    for _, row := range arr.Tunits {
        s := "insert into tunit(unitid,unitname) values ('"
        s += row.Unitid + "','" + row.Unitname + "')"
        _, err := tx.Exec(s)
        if err != nil {
            tx.Rollback()
            r.Status = 500
            r.Message = "fail"
            r.Exception = err.Error()
            ctx.JSON(500, &r)
            log.Log("InsertUnits()", err)
            return
        }
    }
    tx.Commit()
    r.Status = 200
    r.Message = "success"
    ctx.JSON(200, &r)
}

func UpdateUnits(ctx *gin.Context) {
    var arr model.TunitArray
    var r model.Res
    ctx.ShouldBindBodyWith(&arr, binding.JSON)
    d := db.GetPG()
    tx, _ := d.Begin()
    for _, row := range arr.Tunits {
        s := "update tunit set unitid='" + row.Unitid + "',unitname='"
        s += row.Unitname + "' where unitid='" + row.Unitid + "'"
        _, err := tx.Exec(s)
        if err != nil {
            tx.Rollback()
            r.Status = 500
            r.Message = "fail"
            r.Exception = err.Error()
            ctx.JSON(500, &r)
            log.Log("UpdateUnits()", err)
            return
        }
    }
    tx.Commit()
    r.Status = 200
    r.Message = "success"
    ctx.JSON(200, &r)
}

func DeleteUnits(ctx *gin.Context) {
    var r model.Res
    d := db.GetPG()
    where := ctx.Param("where")
    where = strings.Trim(where, "/")
    s := "delete from tunit where " + where
    _, err := d.Exec(s)
    if err != nil {
        r.Status = 500
        r.Message = "fail"
        r.Exception = err.Error()
        ctx.JSON(500, &r)
        log.Log("DeleteUnits()", err)
        return
    }
    r.Status = 200
    r.Message = "success"
    ctx.JSON(200, &r)
}
复制代码

 

posted @   delphi中间件  阅读(76)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2019-07-29 IdHTTPServer开发https服务器
2019-07-29 IdHTTPServer允许跨域访问
点击右上角即可分享
微信分享提示