/
gen_student_api_list.go
61 lines (54 loc) · 1.59 KB
/
gen_student_api_list.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package gen
import (
"github.com/gohade/hade/framework/contract"
"github.com/gohade/hade/framework/gin"
"github.com/gohade/hade/framework/provider/orm"
"strconv"
)
// List 获取学生列表
// @Summary 获取学生列表
// @Description 获取分页的学生信息列表
// @Produce json
// @Tags students
// @Param offset query int true "偏移量,从0开始"
// @Param size query int true "每页大小"
// @Success 200 {array} Student
// @Failure 400 {object} ErrorResponse
// @Failure 500 {object} ErrorResponse
// @Router /students/list [get]
func (api *StudentApi) List(c *gin.Context) {
// 获取offset和size参数
offset, err := strconv.Atoi(c.Query("offset"))
if err != nil {
c.JSON(400, gin.H{"error": "Invalid parameter"})
return
}
size, err := strconv.Atoi(c.Query("size"))
if err != nil {
c.JSON(400, gin.H{"error": "Invalid parameter"})
return
}
logger := c.MustMakeLog()
// 初始化一个orm.DB
gormService := c.MustMake(contract.ORMKey).(contract.ORMService)
db, err := gormService.GetDB(orm.WithConfigPath("database.default"))
if err != nil {
logger.Error(c, err.Error(), nil)
_ = c.AbortWithError(50001, err)
return
}
// 获取学生总数
var total int64
if err := db.Model(&StudentModel{}).Count(&total).Error; err != nil {
c.JSON(500, gin.H{"error": "Server error"})
return
}
// 从数据库中查找学生列表
var students []StudentModel
if err := db.Offset(offset).Limit(size).Find(&students).Error; err != nil {
c.JSON(500, gin.H{"error": "Server error"})
return
}
// 返回结果
c.JSON(200, gin.H{"total": total, "students": students})
}