48 lines
1.4 KiB
Go
48 lines
1.4 KiB
Go
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
|
|
}
|