penguin/golifehk

@golifehk bot in Telegram

datasources/kmb/query.go

raw ยท 932 bytes

package kmb

import (
	query "github.com/tgckpg/golifehk/query"
	"log"
	"strings"
)

func Query(q query.QueryMessage) query.IQueryResult {

	lang := q.Lang
	message := q.Text

	var qo *query.QueryObject
	var err error

	qr := QueryResult{Lang: lang}
	routeStops, err := getRouteStops()
	if err != nil {
		qr.Error = err
		goto qrReturn
	}

	qo, err = query.MatchKeys(strings.ToUpper(message), routeStops)
	if err != nil {
		qr.Error = err
		goto qrReturn
	}

	qr.Query = qo

	if 0 < len(*qo.Results) && 1 < len(*qo.SearchTerms) {

		rSchedules := map[*RouteStop]*[]*Schedule{}
		for _, item := range *qo.Results {
			var r *RouteStop
			r = any(item).(*RouteStop)
			schedules, err := getSchedule(r)
			if err != nil {
				qr.Error = err
				break
			}

			rSchedules[r] = schedules
		}
		qr.Schedules = &rSchedules
	}

qrReturn:
	if qr.Error != nil {
		log.Println(qr.Error)
	}
	var iqr query.IQueryResult
	iqr = &qr
	return iqr
}