Files
gemini-banlancer/internal/models/dto.go
2025-11-23 22:42:58 +08:00

86 lines
3.1 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package models
import "time"
// ========= ViewModel / DTOs for Dashboard API =========
type StatCard struct {
Value float64 `json:"value"`
SubValue any `json:"sub_value,omitempty"`
SubValueTip string `json:"sub_value_tip,omitempty"`
Trend float64 `json:"trend"`
TrendIsGrowth bool `json:"trend_is_growth"`
}
type DashboardStatsResponse struct {
KeyCount StatCard `json:"key_count"`
RPM StatCard `json:"rpm"`
RequestCount24h StatCard `json:"request_count_24h"`
ErrorRate24h StatCard `json:"error_rate_24h"`
KeyStatusCount map[APIKeyStatus]int64 `json:"key_status_count"`
MasterStatusCount map[MasterAPIKeyStatus]int64 `json:"master_status_count"`
TokenCount map[string]any `json:"token_count"`
UpstreamHealthStatus map[string]string `json:"upstream_health_status,omitempty"`
RequestCounts map[string]int64 `json:"request_counts"`
}
type ChartDataset struct {
Label string `json:"label"`
Data []int64 `json:"data"`
Color string `json:"color"`
}
type ChartData struct {
Labels []string `json:"labels"`
Datasets []ChartDataset `json:"datasets"`
}
// TokenUpdateRequest DTO for binding the PUT /admin/tokens request
type TokenUpdateRequest struct {
ID uint `json:"ID"`
Token string `json:"Token"`
Description string `json:"Description"`
Tag string `json:"Tag"`
Status string `json:"Status"`
IsAdmin bool `json:"IsAdmin"`
AllowedGroupIDs []uint `json:"AllowedGroupIDs"`
}
// 数据传输对象(DTO)表示单个Key的测试结果。
// ===================================================================
type KeyTestResult struct {
Key string `json:"key"`
Status string `json:"status"` // "valid", "invalid", "error"
Message string `json:"message"`
}
// APIKeyQueryParams defines the parameters for listing/searching keys.
type APIKeyQueryParams struct {
KeyGroupID uint `form:"-"`
Page int `form:"page"`
PageSize int `form:"limit"`
Status string `form:"status"`
Keyword string `form:"keyword"`
IDs string `form:"ids"`
}
// APIKeyDetails is a DTO that combines APIKey info with its contextual status from the mapping.
type APIKeyDetails struct {
// Embedded APIKey fields
ID uint `json:"id"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
APIKey string `json:"api_key"`
MasterStatus MasterAPIKeyStatus `json:"master_status"`
// Mapping-specific fields
Status APIKeyStatus `json:"status"`
LastError string `json:"last_error"`
ConsecutiveErrorCount int `json:"consecutive_error_count"`
LastUsedAt *time.Time `json:"last_used_at"`
CooldownUntil *time.Time `json:"cooldown_until"`
EncryptedKey string
}
// SettingsManager 定义了系统设置管理器的抽象接口。
type SettingsManager interface {
GetSettings() *SystemSettings
}