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