feat: sync deployed v1.0.0-rc.38-custom.67
This commit is contained in:
1 parent
d09216bbde
commit
8e6ed0317b
154 files changed
+39540
-20509
No files matched your search
@@ -0,0 +1,33 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"context"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/QuantumNous/new-api/model"
|
||||
)
|
||||
|
||||
var groupModelCostSnapshot struct {
|
||||
sync.Mutex
|
||||
updated time.Time
|
||||
values map[string]map[string]model.GroupModelCost
|
||||
}
|
||||
|
||||
// Immutable snapshots are shared by status display and automatic routing.
|
||||
func GroupModelCosts(ctx context.Context) (map[string]map[string]model.GroupModelCost, error) {
|
||||
groupModelCostSnapshot.Lock()
|
||||
defer groupModelCostSnapshot.Unlock()
|
||||
now := time.Now()
|
||||
if groupModelCostSnapshot.values != nil && now.Sub(groupModelCostSnapshot.updated) < time.Minute {
|
||||
return groupModelCostSnapshot.values, nil
|
||||
}
|
||||
queryCtx, cancel := context.WithTimeout(ctx, 3*time.Second)
|
||||
defer cancel()
|
||||
values, err := model.GetGroupModelCosts(queryCtx, now.Add(-24*time.Hour), now)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
groupModelCostSnapshot.values, groupModelCostSnapshot.updated = values, now
|
||||
return values, nil
|
||||
}
|
||||
Reference in new issue
Block a user