fix(admin): resolve CI lint and user subscriptions regression

This commit is contained in:
xvhuan
2026-03-04 14:07:17 +08:00
parent 80ae592c23
commit f6fe5b552d
4 changed files with 15 additions and 10 deletions

View File

@@ -35,12 +35,12 @@ func buildAccountTodayStatsBatchCacheKey(accountIDs []int64) string {
} }
var b strings.Builder var b strings.Builder
b.Grow(len(accountIDs) * 6) b.Grow(len(accountIDs) * 6)
b.WriteString("accounts_today_stats:") _, _ = b.WriteString("accounts_today_stats:")
for i, id := range accountIDs { for i, id := range accountIDs {
if i > 0 { if i > 0 {
b.WriteByte(',') _ = b.WriteByte(',')
} }
b.WriteString(strconv.FormatInt(id, 10)) _, _ = b.WriteString(strconv.FormatInt(id, 10))
} }
return b.String() return b.String()
} }

View File

@@ -90,7 +90,10 @@ func (h *UserHandler) List(c *gin.Context) {
Role: c.Query("role"), Role: c.Query("role"),
Search: search, Search: search,
Attributes: parseAttributeFilters(c), Attributes: parseAttributeFilters(c),
IncludeSubscriptions: parseBoolQueryWithDefault(c.Query("include_subscriptions"), true), }
if raw, ok := c.GetQuery("include_subscriptions"); ok {
includeSubscriptions := parseBoolQueryWithDefault(raw, true)
filters.IncludeSubscriptions = &includeSubscriptions
} }
users, total, err := h.adminService.ListUsers(c.Request.Context(), page, pageSize, filters) users, total, err := h.adminService.ListUsers(c.Request.Context(), page, pageSize, filters)

View File

@@ -243,7 +243,8 @@ func (r *userRepository) ListWithFilters(ctx context.Context, params pagination.
userMap[u.ID] = &outUsers[len(outUsers)-1] userMap[u.ID] = &outUsers[len(outUsers)-1]
} }
if filters.IncludeSubscriptions { shouldLoadSubscriptions := filters.IncludeSubscriptions == nil || *filters.IncludeSubscriptions
if shouldLoadSubscriptions {
// Batch load active subscriptions with groups to avoid N+1. // Batch load active subscriptions with groups to avoid N+1.
subs, err := r.client.UserSubscription.Query(). subs, err := r.client.UserSubscription.Query().
Where( Where(

View File

@@ -24,7 +24,8 @@ type UserListFilters struct {
Attributes map[int64]string // Custom attribute filters: attributeID -> value Attributes map[int64]string // Custom attribute filters: attributeID -> value
// IncludeSubscriptions controls whether ListWithFilters should load active subscriptions. // IncludeSubscriptions controls whether ListWithFilters should load active subscriptions.
// For large datasets this can be expensive; admin list pages should enable it on demand. // For large datasets this can be expensive; admin list pages should enable it on demand.
IncludeSubscriptions bool // nil means not specified (default: load subscriptions for backward compatibility).
IncludeSubscriptions *bool
} }
type UserRepository interface { type UserRepository interface {