package bus import ( "strings" query "github.com/tgckpg/golifehk/query" ) func Query( lang string, message string ) query.IQueryResult { var qBusStops *query.QueryObject var err error qr := QueryResult{ Lang: lang } busStops, err := getBusStops() if err != nil { qr.Error = err goto qrReturn } qBusStops, err = query.Parse( strings.ToUpper( message ), busStops ) if err != nil { qr.Error = err goto qrReturn } qr.Query = qBusStops if 0 < len( *qBusStops.Results ) && 1 < len( *qBusStops.SearchTerms ) { schedules, err := getSchedule( lang, qBusStops.Key ) if err != nil { qr.Error = err goto qrReturn } if len( schedules.BusStops ) == 0 { qr.Schedules = &map[*BusStop] *BusStopBuses{} goto qrReturn } matches := map[*BusStop] *BusStopBuses{} for _, entry := range *qBusStops.Results { busStop := any( entry ).( *BusStop ) for _, busStopSch := range schedules.BusStops { if busStopSch.BusStopId == busStop.StationId { matches[busStop] = &busStopSch break } } } qr.Schedules = &matches } qrReturn: var iqr query.IQueryResult iqr = &qr return iqr }