feat(api-key): show last used IP

This commit is contained in:
wucm667
2026-07-08 15:26:54 +08:00
parent 6f43986c37
commit e0d149d511
12 changed files with 245 additions and 6 deletions
@@ -10,6 +10,7 @@ import (
func TestAPIKeyFromService_MapsLastUsedAt(t *testing.T) {
lastUsed := time.Now().UTC().Truncate(time.Second)
lastUsedIP := "203.0.113.10"
src := &service.APIKey{
ID: 1,
UserID: 2,
@@ -17,6 +18,7 @@ func TestAPIKeyFromService_MapsLastUsedAt(t *testing.T) {
Name: "Mapper",
Status: service.StatusActive,
LastUsedAt: &lastUsed,
LastUsedIP: &lastUsedIP,
CurrentConcurrency: 3,
}
@@ -24,6 +26,8 @@ func TestAPIKeyFromService_MapsLastUsedAt(t *testing.T) {
require.NotNil(t, out)
require.NotNil(t, out.LastUsedAt)
require.WithinDuration(t, lastUsed, *out.LastUsedAt, time.Second)
require.NotNil(t, out.LastUsedIP)
require.Equal(t, lastUsedIP, *out.LastUsedIP)
require.Equal(t, 3, out.CurrentConcurrency)
}
@@ -39,4 +43,5 @@ func TestAPIKeyFromService_MapsNilLastUsedAt(t *testing.T) {
out := APIKeyFromService(src)
require.NotNil(t, out)
require.Nil(t, out.LastUsedAt)
require.Nil(t, out.LastUsedIP)
}
+1
View File
@@ -89,6 +89,7 @@ func APIKeyFromService(k *service.APIKey) *APIKey {
IPWhitelist: k.IPWhitelist,
IPBlacklist: k.IPBlacklist,
LastUsedAt: k.LastUsedAt,
LastUsedIP: k.LastUsedIP,
Quota: k.Quota,
QuotaUsed: k.QuotaUsed,
ExpiresAt: k.ExpiresAt,
+1
View File
@@ -59,6 +59,7 @@ type APIKey struct {
IPWhitelist []string `json:"ip_whitelist"`
IPBlacklist []string `json:"ip_blacklist"`
LastUsedAt *time.Time `json:"last_used_at"`
LastUsedIP *string `json:"last_used_ip"`
Quota float64 `json:"quota"` // Quota limit in USD (0 = unlimited)
QuotaUsed float64 `json:"quota_used"` // Used quota amount in USD
ExpiresAt *time.Time `json:"expires_at"` // Expiration time (nil = never expires)