beancount-gs/service/commodity.go

33 lines
990 B
Go
Raw Normal View History

2021-11-28 12:19:40 +00:00
package service
import (
"fmt"
"github.com/beancount-gs/script"
"github.com/gin-gonic/gin"
)
type SyncCommodityPriceForm struct {
Commodity string `form:"commodity" binding:"required" json:"commodity"`
Date string `form:"date" binding:"required" json:"date"`
Price string `form:"price" binding:"required" json:"price"`
}
func SyncCommodityPrice(c *gin.Context) {
var syncCommodityPriceForm SyncCommodityPriceForm
if err := c.ShouldBindJSON(&syncCommodityPriceForm); err != nil {
BadRequest(c, err.Error())
return
}
ledgerConfig := script.GetLedgerConfigFromContext(c)
filePath := script.GetLedgerPriceFilePath(ledgerConfig.DataPath)
line := fmt.Sprintf("%s price %s %s %s", syncCommodityPriceForm.Date, syncCommodityPriceForm.Commodity, syncCommodityPriceForm.Price, ledgerConfig.OperatingCurrency)
// 写入文件
err := script.AppendFileInNewLine(filePath, line)
if err != nil {
InternalError(c, err.Error())
return
}
OK(c, syncCommodityPriceForm)
}