iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 13
0

修改任務API

[PUT] api/task
參數

id int
name string

handler/api.go

// UpdateTask UpdateTask
func UpdateTask(c *gin.Context) {
	var params struct {
		ID       int    `json:"id" binding:"required"`
		TaskName string `json:"name" binding:"required"`
	}

	if err := c.ShouldBindJSON(&params); err != nil {
		res.BadRequest(c, res.ErrParamsCode, gin.H{
			"msg": err.Error(),
		})
		return
	}

	task := model.Task{
		Name: params.TaskName,
	}
	if err := model.TaskModel.Update(params.ID, c.GetString("user_id"), task); err != nil {
		log.WithFields(log.Fields{
			"origin_err": err.Error(),
		}).Error("db error")
		res.SystemError(c, res.ErrSystemCode, gin.H{})
		return
	}

    // 把快取都清掉
	redis.Conn.Del(context.Background(), redisGroupsKey(c.GetString("user_id")))
	redis.Conn.Del(context.Background(), redisTasksKey(c.GetString("user_id")))

	res.Success(c, gin.H{})
}

刪任務API

[PUT] api/task/{task_id}

handler/api.go

// DeleteTask DeleteTask
func DeleteTask(c *gin.Context) {
	taskID := c.Param("task_id")
	if c.Param("task_id") == "" {
		res.BadRequest(c, res.ErrParamsCode, gin.H{
			"msg": "id not found",
		})
		return
	}

	id, err := strconv.Atoi(taskID)
	if err != nil {
		res.BadRequest(c, res.ErrParamsCode, gin.H{
			"msg": "id error",
		})
		return
	}

	if err := model.TaskModel.Delete(id); err != nil {
		log.WithFields(log.Fields{
			"origin_err": err.Error(),
		}).Error("db error")
		res.SystemError(c, res.ErrSystemCode, gin.H{})
		return
	}

	redis.Conn.Del(context.Background(), redisGroupsKey(c.GetString("user_id")))
	redis.Conn.Del(context.Background(), redisTasksKey(c.GetString("user_id")))

	res.Success(c, gin.H{})
}

統計時間API

[POST] /api/pomo
參數

id int
time int // 完成時間

handler/api.go

// Pomo Pomo
func Pomo(c *gin.Context) {
	var params struct {
		ID   int `json:"id" binding:"required"`
		Time int `json:"time" binding:"required"`
	}

	if err := c.ShouldBindJSON(&params); err != nil {
		res.BadRequest(c, res.ErrParamsCode, gin.H{
			"msg": err.Error(),
		})
		return
	}

	userID := c.GetString("user_id")

	// 檢查任務存不存在
	task, err := model.TaskModel.GetByIDAndUserID(params.ID, userID)
	if err != nil || task.ID == 0 {
		res.BadRequest(c, res.ErrParamsCode, gin.H{
			"msg": "has no task",
		})
		return
	}

	nowTime := time.Now()
	record := model.Record{
		UserID:           userID,
		TaskID:           task.ID,
		ParentID:         task.ParentID,
		SpendTime:        params.Time,
		Date:             nowTime.Format(config.Val.TimeFormat),
		CreatedTimestamp: nowTime.UTC().Unix(),
	}
	if err := model.RecordsModel.Create(record); err != nil {
		log.WithFields(log.Fields{
			"origin_err": err.Error(),
		}).Error("db error")
		res.SystemError(c, res.ErrSystemCode, gin.H{})
		return
	}

	res.Success(c, gin.H{})
}

今天的commit

謝謝大家~~


上一篇
Day 12 查詢任務API
下一篇
Day14 統計報表API-1
系列文
Golang & Vue.js 30天從0打造服務30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言