diff --git a/internal/company/repository.go b/internal/company/repository.go index 85ec6dc..c511d58 100644 --- a/internal/company/repository.go +++ b/internal/company/repository.go @@ -3,6 +3,9 @@ package company import ( "context" "errors" + "regexp" + "strconv" + "strings" "time" "tm/pkg/logger" orm "tm/pkg/mongo" @@ -210,7 +213,19 @@ func (r *companyRepository) Search(ctx context.Context, form *SearchForm, pagina filter := bson.M{} if form.Search != nil { - filter["$text"] = bson.M{"$search": *form.Search} + search := strings.TrimSpace(*form.Search) + if search != "" { + pattern := regexp.QuoteMeta(search) + orConditions := []bson.M{ + {"name": bson.M{"$regex": pattern, "$options": "i"}}, + {"email": bson.M{"$regex": pattern, "$options": "i"}}, + {"phone": bson.M{"$regex": pattern, "$options": "i"}}, + } + if employeeCount, err := strconv.Atoi(search); err == nil { + orConditions = append(orConditions, bson.M{"employee_count": employeeCount}) + } + filter["$or"] = orConditions + } } if form.Type != nil {