This commit is contained in:
Sakurasan
2023-04-24 22:44:03 +08:00
parent 365bc37487
commit 5ce5466723
5 changed files with 183 additions and 35 deletions

View File

@@ -1,7 +1,10 @@
package store
import (
"log"
"time"
"github.com/Sakurasan/to"
)
type DailyUsage struct {
@@ -23,12 +26,12 @@ type Usage struct {
ID int `gorm:"column:id"`
PromptHash string `gorm:"column:prompt_hash"`
UserID int `gorm:"column:user_id"`
Date time.Time `gorm:"column:date"`
SKU string `gorm:"column:sku"`
PromptUnits int `gorm:"column:prompt_units"`
CompletionUnits int `gorm:"column:completion_units"`
TotalUnit int `gorm:"column:total_unit"`
Cost string `gorm:"column:cost"`
Date time.Time `gorm:"column:date"`
}
func (Usage) TableName() string {
@@ -64,18 +67,49 @@ func QueryUsage(from, to string) ([]CalcUsage, error) {
return results, nil
}
type Tokens struct {
UserID int
PromptCount int
CompletionCount int
TotalTokens int
Cost float64
Model string
PromptHash string
}
func Record(chatlog *Tokens) (err error) {
u := &Usage{
UserID: chatlog.UserID,
SKU: chatlog.Model,
PromptHash: chatlog.PromptHash,
PromptUnits: chatlog.PromptCount,
CompletionUnits: chatlog.CompletionCount,
TotalUnit: chatlog.TotalTokens,
Cost: to.String(chatlog.Cost),
Date: time.Now(),
}
err = usage.Create(u).Error
return
}
func SumDaily(userid string) ([]Summary, error) {
var count int64
err := usage.Model(&DailyUsage{}).Where("user_id = ? and date = ?", userid, time.Date(time.Now().Year(), time.Now().Month(), time.Now().Day(), 0, 0, 0, 0, time.UTC)).Count(&count).Error
if err != nil {
log.Println(err)
}
if count == 0 {
} else {
}
return nil, nil
}
func SumDailyV2(uid string) error {
// err := usage.Model(&DailyUsage{}).
// Select("user_id, '2023-04-18' as date, sku, SUM(prompt_units) as sum_prompt_units, SUM(completion_units) as sum_completion_units, SUM(total_unit) as sum_total_unit, SUM(cost) as sum_cost").
// Where("date >= ?", "2023-04-18").
// Where("user_id = ?", 2).
// Create(&DailyUsage{}).Error
nowstr := time.Now().Format("2006-01-02")
func insertSumDaily(uid string) error {
nowstr := time.Date(time.Now().Year(), time.Now().Month(), time.Now().Day(), 0, 0, 0, 0, time.UTC)
err := usage.Exec(`INSERT INTO daily_usages
(user_id, date, sku, prompt_units, completion_units, total_unit, cost)
SELECT
@@ -94,3 +128,26 @@ func SumDailyV2(uid string) error {
}
return nil
}
func updateSumDaily(uid string, date time.Time) error {
var u = Usage{}
err := usage.Exec(`SELECT
user_id,
?,
sku,
SUM(prompt_units) AS prompt_units,
SUM(completion_units) AS completion_units,
SUM(total_unit) AS total_unit,
SUM(cost) AS cost
FROM usages
WHERE date >= ?
AND user_id = ?`, date, date, uid).First(&u).Error
if err != nil {
return err
}
err = usage.Model(&DailyUsage{}).Where("user_id = ? and date = ?", uid, date).Updates(u).Error
if err != nil {
return err
}
return nil
}

View File

@@ -73,6 +73,15 @@ func GetUserByName(name string) (*User, error) {
return &user, nil
}
func GetUserID(authkey string) (int, error) {
var user User
result := db.Where(&User{Token: authkey}).First(&user)
if result.Error != nil {
return 0, result.Error
}
return int(user.ID), nil
}
func GetAllUsers() ([]*User, error) {
var users []*User
result := db.Find(&users)