mirror of
https://gitee.com/wanwujie/sub2api
synced 2026-05-04 21:20:51 +08:00
feat(admin): add account privacy mode filter
This commit is contained in:
@@ -443,10 +443,10 @@ func (r *accountRepository) Delete(ctx context.Context, id int64) error {
|
||||
}
|
||||
|
||||
func (r *accountRepository) List(ctx context.Context, params pagination.PaginationParams) ([]service.Account, *pagination.PaginationResult, error) {
|
||||
return r.ListWithFilters(ctx, params, "", "", "", "", 0)
|
||||
return r.ListWithFilters(ctx, params, "", "", "", "", 0, "")
|
||||
}
|
||||
|
||||
func (r *accountRepository) ListWithFilters(ctx context.Context, params pagination.PaginationParams, platform, accountType, status, search string, groupID int64) ([]service.Account, *pagination.PaginationResult, error) {
|
||||
func (r *accountRepository) ListWithFilters(ctx context.Context, params pagination.PaginationParams, platform, accountType, status, search string, groupID int64, privacyMode string) ([]service.Account, *pagination.PaginationResult, error) {
|
||||
q := r.client.Account.Query()
|
||||
|
||||
if platform != "" {
|
||||
@@ -479,6 +479,20 @@ func (r *accountRepository) ListWithFilters(ctx context.Context, params paginati
|
||||
} else if groupID > 0 {
|
||||
q = q.Where(dbaccount.HasAccountGroupsWith(dbaccountgroup.GroupIDEQ(groupID)))
|
||||
}
|
||||
if privacyMode != "" {
|
||||
q = q.Where(dbpredicate.Account(func(s *entsql.Selector) {
|
||||
path := sqljson.Path("privacy_mode")
|
||||
switch privacyMode {
|
||||
case service.AccountPrivacyModeUnsetFilter:
|
||||
s.Where(entsql.Or(
|
||||
entsql.Not(sqljson.HasKey(dbaccount.FieldExtra, path)),
|
||||
sqljson.ValueEQ(dbaccount.FieldExtra, "", path),
|
||||
))
|
||||
default:
|
||||
s.Where(sqljson.ValueEQ(dbaccount.FieldExtra, privacyMode, path))
|
||||
}
|
||||
}))
|
||||
}
|
||||
|
||||
total, err := q.Count(ctx)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user