add filter author and time #6
			
				
			
		
		
		
	| 
						 | 
				
			
			@ -3,6 +3,7 @@ package audit
 | 
			
		|||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
	"sync"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"go.mongodb.org/mongo-driver/bson"
 | 
			
		||||
	"go.mongodb.org/mongo-driver/mongo/options"
 | 
			
		||||
| 
						 | 
				
			
			@ -12,6 +13,13 @@ import (
 | 
			
		|||
type AllQuery struct {
 | 
			
		||||
	Target   string
 | 
			
		||||
	TargetID string
 | 
			
		||||
 | 
			
		||||
	// Additional filter
 | 
			
		||||
	Author         string
 | 
			
		||||
	CreateTimeFrom time.Time
 | 
			
		||||
	CreateTimeTo   time.Time
 | 
			
		||||
 | 
			
		||||
	// Pagination
 | 
			
		||||
	Page  int64
 | 
			
		||||
	Limit int64
 | 
			
		||||
	Sort  interface{}
 | 
			
		||||
| 
						 | 
				
			
			@ -25,10 +33,7 @@ func (s Service) All(query AllQuery) (result []Audit, total int64) {
 | 
			
		|||
		skip    = query.Page * query.Limit
 | 
			
		||||
		wg      sync.WaitGroup
 | 
			
		||||
	)
 | 
			
		||||
	cond := bson.D{
 | 
			
		||||
		{"target", query.Target},
 | 
			
		||||
		{"targetId", query.TargetID},
 | 
			
		||||
	}
 | 
			
		||||
	cond := s.getQueryCondition(query)
 | 
			
		||||
	wg.Add(1)
 | 
			
		||||
	go func() {
 | 
			
		||||
		defer wg.Done()
 | 
			
		||||
| 
						 | 
				
			
			@ -54,3 +59,30 @@ func (s Service) All(query AllQuery) (result []Audit, total int64) {
 | 
			
		|||
	wg.Wait()
 | 
			
		||||
	return result, total
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s Service) getQueryCondition(query AllQuery) bson.D {
 | 
			
		||||
	cond := bson.D{
 | 
			
		||||
		{"target", query.Target},
 | 
			
		||||
		{"targetId", query.TargetID},
 | 
			
		||||
	}
 | 
			
		||||
	if query.Author != "" {
 | 
			
		||||
		cond = append(cond, bson.E{
 | 
			
		||||
			Key:   "author.id",
 | 
			
		||||
			Value: query.Author,
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
	if !query.CreateTimeFrom.IsZero() || !query.CreateTimeTo.IsZero() {
 | 
			
		||||
		v := bson.M{}
 | 
			
		||||
		if !query.CreateTimeFrom.IsZero() {
 | 
			
		||||
			v["$gte"] = query.CreateTimeFrom
 | 
			
		||||
		}
 | 
			
		||||
		if !query.CreateTimeTo.IsZero() {
 | 
			
		||||
			v["$lt"] = query.CreateTimeTo
 | 
			
		||||
		}
 | 
			
		||||
		cond = append(cond, bson.E{
 | 
			
		||||
			Key:   "createdAt",
 | 
			
		||||
			Value: v,
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
	return cond
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue