整合数据
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"server/models"
|
||||
"server/pkg/tokenprobe"
|
||||
)
|
||||
|
||||
func poolTableName(module string) string {
|
||||
switch module {
|
||||
case "cursor":
|
||||
return new(models.PlatformAccountPoolCursor).TableName()
|
||||
case "windsurf":
|
||||
return new(models.PlatformAccountPoolWindsurf).TableName()
|
||||
case "krio":
|
||||
return new(models.PlatformAccountPoolKiro).TableName()
|
||||
default:
|
||||
return ""
|
||||
}
|
||||
}
|
||||
|
||||
// poolNeedsTokenProbe account 类型无 Token,无需探测;tk / account_tk 需探测。
|
||||
func poolNeedsTokenProbe(dataType, token string) bool {
|
||||
if strings.TrimSpace(token) == "" {
|
||||
return false
|
||||
}
|
||||
return dataType != "account"
|
||||
}
|
||||
|
||||
func poolSaveCursorIsUsed(id uint64, isUsed int8) {
|
||||
_, _ = models.Orm.QueryTable(new(models.PlatformAccountPoolCursor)).
|
||||
Filter("id", id).
|
||||
Update(map[string]interface{}{
|
||||
"is_used": isUsed,
|
||||
"update_time": time.Now(),
|
||||
})
|
||||
}
|
||||
|
||||
// poolProbeToken 探测 Token;cursor 模块会回写 is_used。
|
||||
func poolProbeToken(module, dataType, token string, rowID uint64) bool {
|
||||
if !poolNeedsTokenProbe(dataType, token) {
|
||||
return true
|
||||
}
|
||||
r := tokenprobe.ProbeOfficial(module, token)
|
||||
if module == "cursor" && rowID > 0 {
|
||||
var isUsed int8
|
||||
if r.OK {
|
||||
isUsed = 1
|
||||
}
|
||||
poolSaveCursorIsUsed(rowID, isUsed)
|
||||
}
|
||||
return r.OK
|
||||
}
|
||||
|
||||
// poolIsUsedAvailable 已有探测结论时:1=可用,0=不可用,nil=未探测。
|
||||
func poolIsUsedAvailable(isUsed *int8) (known bool, available bool) {
|
||||
if isUsed == nil {
|
||||
return false, false
|
||||
}
|
||||
return true, *isUsed == 1
|
||||
}
|
||||
Reference in New Issue
Block a user