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
b.Grow(len(accountIDs) * 6)
b.WriteString("accounts_today_stats:")
_, _ = b.WriteString("accounts_today_stats:")
for i, id := range accountIDs {
if i > 0 {
b.WriteByte(',')
_ = b.WriteByte(',')
}
b.WriteString(strconv.FormatInt(id, 10))
_, _ = b.WriteString(strconv.FormatInt(id, 10))
}
return b.String()
}

View File

@@ -90,7 +90,10 @@ func (h *UserHandler) List(c *gin.Context) {
Role: c.Query("role"),
Search: search,
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)

View File

@@ -243,7 +243,8 @@ func (r *userRepository) ListWithFilters(ctx context.Context, params pagination.
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.
subs, err := r.client.UserSubscription.Query().
Where(

View File

@@ -24,7 +24,8 @@ type UserListFilters struct {
Attributes map[int64]string // Custom attribute filters: attributeID -> value
// IncludeSubscriptions controls whether ListWithFilters should load active subscriptions.
// 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 {