新增修改更新api

This commit is contained in:
jiayuqi7813
2022-07-01 02:08:07 +08:00
parent d0b5c96f23
commit 99ae909180
5 changed files with 118 additions and 25 deletions

View File

@@ -6,25 +6,25 @@ import (
"main.go/api"
db "main.go/database"
. "main.go/type"
"strconv"
"strings"
)
// CrDb 专门用作给数据替换。
type CrDb struct {
Name string `json:"name" binding:"required"`
Score int `json:"score" binding:"required"`
Flag string `json:"flag"` // 暂时一个题只能一个flag
Description string `json:"description"`
Name string `json:"name" binding:"required"`
Score int `json:"score" binding:"required"`
Flag string `json:"flag"` // 暂时一个题只能一个flag
Description string `json:"description"`
Attachment string `json:"attachment"`
Category string `json:"category" binding:"required"`
Tags string `json:"tags"`
Category string `json:"category" binding:"required"`
Tags string `json:"tags"`
Hints string `json:"hints"`
Visible int `json:"visible"`
Visible int `json:"visible"`
}
//NewChallenge 新建一个题目
func NewChallenge(c *gin.Context){
func NewChallenge(c *gin.Context) {
var request ChallengeRequest
if err := c.ShouldBindJSON(&request); err != nil {
fmt.Println(err)
@@ -58,15 +58,15 @@ func addChallenge(c *Challenge) error {
attachmentString := strings.Join(c.Attachment, ",")
hintString := strings.Join(c.Hints, ",")
crdb := &CrDb{
Name: c.Name,
Score: c.Score,
Flag: c.Flag,
Name: c.Name,
Score: c.Score,
Flag: c.Flag,
Description: c.Description,
Attachment: attachmentString,
Category: c.Category,
Tags: c.Tags,
Hints: hintString,
Visible: c.Visible,
Attachment: attachmentString,
Category: c.Category,
Tags: c.Tags,
Hints: hintString,
Visible: c.Visible,
}
//插入数据
err := DB.Table("challenge").Create(crdb).Error
@@ -76,4 +76,49 @@ func addChallenge(c *Challenge) error {
return err
}
return nil
}
}
// DelChallenge 删除题目
func DelChallenge(c *gin.Context) {
api.Link()
DB := db.DBsnctf
id := c.Param("id")
err := DB.Table("challenge").Where("id = ?", id).Delete(&Challenge{}).Error
if err != nil {
c.JSON(400, gin.H{"code": 400, "msg": "Delete challenge failure!"})
return
}
c.JSON(200, gin.H{"code": 200, "msg": "Delete challenge success!"})
}
// EditChallenge 修改题目
func EditChallenge(c *gin.Context) {
api.Link()
DB := db.DBsnctf
id := c.Param("id")
cid, _ := strconv.Atoi(id)
var request ChallengeRequest
if err := c.ShouldBindJSON(&request); err != nil {
c.JSON(400, gin.H{"code": 400, "msg": "Request format wrong!"})
return
}
challenge := &Challenge{
ID: cid,
Name: request.Name,
Score: request.Score,
Flag: request.Flag,
Description: request.Description,
Attachment: request.Attachment,
Category: request.Category,
Tags: request.Tags,
Hints: request.Hints,
Visible: request.Visible,
}
err := DB.Table("challenge").Where("id = ?", cid).Updates(challenge).Error
if err != nil {
c.JSON(400, gin.H{"code": 400, "msg": "Update challenge failure!"})
return
}
c.JSON(200, gin.H{"code": 200, "msg": "Update challenge success!"})
}

View File

@@ -1,9 +1,11 @@
package api
import (
"fmt"
"github.com/gin-gonic/gin"
. "main.go/type"
db "main.go/database"
"main.go/tools"
. "main.go/type"
)
// GetAllNotices 获取所有的公告
@@ -17,7 +19,6 @@ func GetAllNotices(c *gin.Context) {
c.JSON(200, gin.H{"code": 200, "data": notices})
}
func getAllNotices(notices *[]Notice) error {
Link()
DB := db.DBsnctf
@@ -37,3 +38,41 @@ func getAllNotices(notices *[]Notice) error {
}
return rows.Err()
}
// AddNewNotices 新增公告
func AddNewNotices(c *gin.Context) {
Link()
DB := db.DBsnctf
var request NoticeRequest
if err := c.ShouldBindJSON(&request); err != nil {
fmt.Println(err)
c.JSON(400, gin.H{"code": 400, "msg": "Request format wrong!"})
return
}
addtime := tools.Timestamp()
notice := &Notice{
Title: request.Title,
Content: request.Content,
CreatedAt: addtime,
}
err := DB.Table("notice").Create(&notice).Error
if err != nil {
c.JSON(400, gin.H{"code": 400, "msg": "error for database"})
return
}
c.JSON(200, gin.H{"code": 200, "msg": "success!"})
}
// DelNotice 删除公告
func DelNotice(c *gin.Context) {
Link()
DB := db.DBsnctf
noticeid := c.Param("id")
err := DB.Table("notice").Where("id = ?", noticeid).Delete(&Notice{}).Error
if err != nil {
c.JSON(400, gin.H{"code": 400, "msg": "error for database"})
return
}
c.JSON(200, gin.H{"code": 200, "msg": "success!"})
}