一、code
package main
import (
//"fmt"
"github.com/gin-gonic/gin"
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
"time"
)
type Like struct {
ID int `gorm:"primary_key"`
Ip string `gorm:"type:varchar(20);not null;index:ip_idx"`
Ua string `gorm:"type:varchar(256);not null;"`
Title string `gorm:"type:varchar(128);not null;index:title_idx"`
Hash int64 `gorm:"unique_index:hash_idx;"`
CreatedAt time.Time
}
var db *gorm.DB
func init() {
var err error
db, err = gorm.Open("mysql", "root:123456@(127.0.0.1:3306)/test?charset=utf8&parseTime=True&loc=Local")
if err != nil {
panic(err)
}
}
func main() {
//fmt.Println("qwer");
//创建表
if !db.HasTable(&Like{}) {
if err := db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8").CreateTable(&Like{}).Error; err != nil {
panic(err)
}
}
//创建新数据
//createOne()
//更新数据
//modify()
//删除数据
//move()
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
r.GET("/zzz", func(c *gin.Context) {
c.JSON(200, gin.H{
"status":true,
"message": "ok",
"code":200001,
})
})
//我的喜欢列表
r.GET("/like/list", readById)
r.Run() // listen and serve on 0.0.0.0:8080
}
//插入数据。
func createOne() {
ip := "127.0.0.1"
ua := "mac"
title := "title"
var now time.Time
now = time.Now()
secs := now.Unix()
like := &Like{
Ip: ip,
Ua: ua,
Title: title,
Hash: secs,
CreatedAt: time.Now(),
}
if err := db.Create(like).Error; err != nil {
panic(err)
}
}
//更新数据。
func modify() bool {
//db.Model(&Like).Update("name", "hello")
if err := db.Model(&Like{}).Updates(&Like{Ua: "chrome", Title: "modify"}).Where(&Like{Hash: 5555}).Error;err != nil {
return false
}
return true
//db.Model(&Like).Updates(User{Name: "", Age: 0, Actived: false})
}
func move() bool {
if err := db.Where(&Like{Hash: 5555}).Delete(Like{}).Error; err != nil {
return false
}
return true
}
func readById(c *gin.Context) {
err := db.Find(&Like{}).First(&Like{}).Error
if err != nil {
panic(err)
}
results := make([]Like, 0)
rows, err := db.Model(&Like{}).Where("ua = ?", "mac").Select("id, ip, ua, title, hash, created_at").Rows() // (*sql.Rows, error)
defer rows.Close()
for rows.Next() {
var likesSimple Like
rows.Scan(&likesSimple.ID, &likesSimple.Ip, &likesSimple.Ua, &likesSimple.Title, &likesSimple.Hash, &likesSimple.CreatedAt)
results = append(results, likesSimple)
}
//return results
c.JSON(200, gin.H{
"status":true,
"message": "ok",
"code":200001,
"data":results,
})
}
二、资料说明:
1、gin参考:https://github.com/gin-gonic/gin
2、gorm参考: