Gorm接口

发布时间 2023-09-28 11:19:25作者: 青烟绕指柔
package main

import (
"encoding/json"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"net/http"
"strconv"
)

// 新闻结构体
type News struct {
Id int `json:"id"`
Title string `json:"title"`
Content string `json:"content"`
Cate string `json:"cate"`
Author string `json:"author"`
Status string `json:"status"`
}

// 接口三要素 1。状态 2 提示信息 3数据
type JsonResponse struct {
Code int `json:"code"`
Message string `json:"message"`
Data interface{} `json:"data"`
}

func main() {
http.HandleFunc("/news/add", NewsAdd) //添加
http.HandleFunc("/news/list", NewsList) //列表
http.HandleFunc("/news/delete", NewsDelete) //删除
http.HandleFunc("/news/search", NewsSearch) // 搜索
http.ListenAndServe(":8080", nil)
}

// 新闻添加接口
func NewsAdd(w http.ResponseWriter, r *http.Request) {
title := r.FormValue("title")
content := r.FormValue("content")
cate := r.FormValue("cate")
author := r.FormValue("author")
status := r.FormValue("status")

dsn := "root:root@tcp(127.0.0.1:8889)/week3?charset=utf8"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic("数据库连接失败")
}
news := News{
Title: title,
Content: content,
Cate: cate,
Author: author,
Status: status,
}
// 添加方法
err = db.Create(&news).Error
if err != nil {
result := JsonResponse{
Code: 500,
Message: "添加失败",
}
json.NewEncoder(w).Encode(result)
} else {
result := JsonResponse{
Code: 200,
Message: "添加成功",
}
json.NewEncoder(w).Encode(result)
}
}

// 列表接口
func NewsList(w http.ResponseWriter, r *http.Request) {
dsn := "root:root@tcp(127.0.0.1:8889)/week3?charset=utf8"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic("数据库连接失败")
}
var news []News
//查询
err = db.Limit(5).Find(&news).Error
if err != nil {
panic("数据库连接失败")
}
result := JsonResponse{
Code: 200,
Message: "success",
Data: news,
}
json.NewEncoder(w).Encode(result)
}

// 删除接口
func NewsDelete(w http.ResponseWriter, r *http.Request) {
dsn := "root:root@tcp(127.0.0.1:8889)/week3?charset=utf8"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic("数据库连接失败")
}
id, _ := strconv.Atoi(r.FormValue("id"))

news := News{
Id: id,
}
//删除
err = db.Delete(&news).Error
if err != nil {
result := JsonResponse{
Code: 500,
Message: "删除失败",
}
json.NewEncoder(w).Encode(result)
} else {
result := JsonResponse{
Code: 200,
Message: "删除成功",
}
json.NewEncoder(w).Encode(result)
}
}

func NewsSearch(w http.ResponseWriter, r *http.Request) {
keywords := r.FormValue("keywords")
if keywords == "" {
result := JsonResponse{
Code: 500,
Message: "参数不能为空",
}
json.NewEncoder(w).Encode(result)
}
dsn := "root:root@tcp(127.0.0.1:8889)/week3?charset=utf8"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic("数据库连接失败")
}
var news []News
err = db.Where("title like ? or content like ? ", "%"+keywords+"%", "%"+keywords+"%").Find(&news).Error
if err != nil {
result := JsonResponse{
Code: 404,
Message: "数据未查到",
}
json.NewEncoder(w).Encode(result)
} else {
result := JsonResponse{
Code: 200,
Message: "success",
Data: news,
}
json.NewEncoder(w).Encode(result)
}

}