fix(admin): resolve CI lint and user subscriptions regression
This commit is contained in:
@@ -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()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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(
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user