feat: add global search across beneficiaries and drivers

This commit is contained in:
Arnaud Delcasse
2026-02-26 14:54:22 +01:00
parent bb525f174d
commit b79cc08b06
5 changed files with 103 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
package application
import (
"context"
mobilityaccountsstorage "git.coopgo.io/coopgo-platform/mobility-accounts/storage"
"github.com/rs/zerolog/log"
)
type GlobalSearchResult struct {
Beneficiaries []mobilityaccountsstorage.Account
SolidarityDrivers []mobilityaccountsstorage.Account
OrganizedCarpoolDrivers []mobilityaccountsstorage.Account
}
func (h *ApplicationHandler) GlobalSearch(ctx context.Context, query string) (*GlobalSearchResult, error) {
result := &GlobalSearchResult{}
if h.config.GetBool("modules.beneficiaries.enabled") {
beneficiaries, err := h.getBeneficiariesWithFilters(ctx, query, false)
if err != nil {
log.Error().Err(err).Msg("global search: error retrieving beneficiaries")
} else {
result.Beneficiaries = beneficiaries
}
}
if h.config.GetBool("modules.solidarity_transport.enabled") {
drivers, err := h.solidarityDrivers(ctx, query, false)
if err != nil {
log.Error().Err(err).Msg("global search: error retrieving solidarity drivers")
} else {
result.SolidarityDrivers = drivers
}
}
if h.config.GetBool("modules.organized_carpool.enabled") {
drivers, err := h.getOrganizedCarpoolDrivers(ctx, query, false)
if err != nil {
log.Error().Err(err).Msg("global search: error retrieving organized carpool drivers")
} else {
result.OrganizedCarpoolDrivers = drivers
}
}
return result, nil
}