Merge pull request #1397 from weak-fox/fix/active-filter-excludes-rate-limited

解决账号管理中“正常”筛选包含限流中账号
This commit is contained in:
Wesley Liddick
2026-04-07 08:26:51 +08:00
committed by GitHub
2 changed files with 24 additions and 0 deletions

View File

@@ -468,6 +468,14 @@ func (r *accountRepository) ListWithFilters(ctx context.Context, params paginati
}
if status != "" {
switch status {
case service.StatusActive:
q = q.Where(
dbaccount.StatusEQ(status),
dbaccount.Or(
dbaccount.RateLimitResetAtIsNil(),
dbaccount.RateLimitResetAtLTE(time.Now()),
),
)
case "rate_limited":
q = q.Where(dbaccount.RateLimitResetAtGT(time.Now()))
case "temp_unschedulable":

View File

@@ -255,6 +255,22 @@ func (s *AccountRepoSuite) TestListWithFilters() {
s.Require().Equal(service.StatusDisabled, accounts[0].Status)
},
},
{
name: "filter_by_status_active_excludes_rate_limited",
setup: func(client *dbent.Client) {
mustCreateAccount(s.T(), client, &service.Account{Name: "active-normal", Status: service.StatusActive})
rateLimited := mustCreateAccount(s.T(), client, &service.Account{Name: "active-rate-limited", Status: service.StatusActive})
err := client.Account.UpdateOneID(rateLimited.ID).
SetRateLimitResetAt(time.Now().Add(10 * time.Minute)).
Exec(context.Background())
s.Require().NoError(err)
},
status: service.StatusActive,
wantCount: 1,
validate: func(accounts []service.Account) {
s.Require().Equal("active-normal", accounts[0].Name)
},
},
{
name: "filter_by_search",
setup: func(client *dbent.Client) {