Add filtering options to the list

This commit is contained in:
Liujian
2024-12-26 18:06:54 +08:00
parent 1bdd4720bb
commit 8a589982d1
7 changed files with 82 additions and 11 deletions
+23
View File
@@ -23,6 +23,29 @@ type imlAIKeyService struct {
universally.IServiceDelete
}
func (i *imlAIKeyService) SearchUnExpiredByPage(ctx context.Context, w map[string]interface{}, page, pageSize int, order string) ([]*Key, int64, error) {
sql := "(expire_time = 0 || expire_time > ?)"
args := []interface{}{time.Now().Unix()}
for k, v := range w {
switch v.(type) {
case []int:
sql += fmt.Sprintf(" and `%s` in (?)", k)
default:
sql += fmt.Sprintf(" and `%s` = ?", k)
}
args = append(args, v)
}
list, total, err := i.store.ListPage(ctx, sql, page, pageSize, args, order)
if err != nil {
return nil, 0, err
}
var result []*Key
for _, item := range list {
result = append(result, FromEntity(item))
}
return result, total, nil
}
func (i *imlAIKeyService) KeysAfterPriority(ctx context.Context, providerId string, priority int) ([]*Key, error) {
list, err := i.store.ListQuery(ctx, "sort > ? and provider = ?", []interface{}{priority, providerId}, "sort asc")
if err != nil {
+1
View File
@@ -20,6 +20,7 @@ type IKeyService interface {
SortBefore(ctx context.Context, provider string, originID string, targetID string) ([]*Key, error)
SortAfter(ctx context.Context, provider string, originID string, targetID string) ([]*Key, error)
KeysAfterPriority(ctx context.Context, providerId string, priority int) ([]*Key, error)
SearchUnExpiredByPage(ctx context.Context, w map[string]interface{}, page, pageSize int, order string) ([]*Key, int64, error)
}
func init() {