timetable-extension #1
@ -40,6 +40,7 @@ func runTicker(cfg *helpers.Configuration, stop <-chan struct{}) {
 | 
			
		||||
			log.Debug("Running background tasks")
 | 
			
		||||
			go cif.CheckCif(cfg)
 | 
			
		||||
			go corpus.CheckCorpus(cfg)
 | 
			
		||||
			//go stations.Check()
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -2,6 +2,7 @@ package dbAccess
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
	"fmt"
 | 
			
		||||
 | 
			
		||||
	"git.fjla.uk/owlboard/go-types/pkg/database"
 | 
			
		||||
	"go.mongodb.org/mongo-driver/bson"
 | 
			
		||||
@ -80,3 +81,15 @@ func CreateCorpusIndexes() error {
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func GetTiplocFromCrs(crs string) (tiploc string, err error) {
 | 
			
		||||
	// Return TIPLOC from CRS code
 | 
			
		||||
	err = fmt.Errorf("not yet written")
 | 
			
		||||
	return "", err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func GetStanoxFromCrs(crs string) (stanox string, err error) {
 | 
			
		||||
	// Return STANOX from CRS code
 | 
			
		||||
	err = fmt.Errorf("not yet written")
 | 
			
		||||
	return "", err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										3
									
								
								main.go
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								main.go
									
									
									
									
									
								
							@ -16,6 +16,7 @@ import (
 | 
			
		||||
	"git.fjla.uk/owlboard/timetable-mgr/helpers"
 | 
			
		||||
	"git.fjla.uk/owlboard/timetable-mgr/log"
 | 
			
		||||
	"git.fjla.uk/owlboard/timetable-mgr/messaging"
 | 
			
		||||
	"git.fjla.uk/owlboard/timetable-mgr/stations"
 | 
			
		||||
	"git.fjla.uk/owlboard/timetable-mgr/vstp"
 | 
			
		||||
	"go.uber.org/zap"
 | 
			
		||||
)
 | 
			
		||||
@ -65,6 +66,8 @@ func main() {
 | 
			
		||||
	go cif.CheckCif(cfg)
 | 
			
		||||
	go corpus.CheckCorpus(cfg)
 | 
			
		||||
 | 
			
		||||
	stations.Check()
 | 
			
		||||
 | 
			
		||||
	if cfg.VstpOn {
 | 
			
		||||
		messaging.StompInit(cfg)
 | 
			
		||||
		vstp.Subscribe()
 | 
			
		||||
 | 
			
		||||
@ -12,5 +12,8 @@ func run() {
 | 
			
		||||
		fmt.Println(err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	parseData(data, data2)
 | 
			
		||||
	_, err = parseData(data, data2)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		fmt.Println(err)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -7,6 +7,7 @@ import (
 | 
			
		||||
 | 
			
		||||
	"git.fjla.uk/owlboard/go-types/pkg/database"
 | 
			
		||||
	"git.fjla.uk/owlboard/go-types/pkg/upstreamApi"
 | 
			
		||||
	"git.fjla.uk/owlboard/timetable-mgr/dbAccess"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Parses n number of XML byte arrays
 | 
			
		||||
@ -20,9 +21,16 @@ func parseData(data ...[]byte) ([]database.Station, error) {
 | 
			
		||||
		stations = append(stations, parsedStations...)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	fmt.Println(stations)
 | 
			
		||||
	return nil, nil
 | 
			
		||||
	// Transform from upstreamApi.Station to database.Station
 | 
			
		||||
	var output []database.Station
 | 
			
		||||
	for _, s := range stations {
 | 
			
		||||
		outputStation, err := convertApiToDatabase(s)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
		output = append(output, outputStation)
 | 
			
		||||
	}
 | 
			
		||||
	fmt.Println(output)
 | 
			
		||||
	return output, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Parses XML and converts to struct
 | 
			
		||||
@ -38,3 +46,37 @@ func parseXML(data []byte) ([]upstreamApi.Station, error) {
 | 
			
		||||
 | 
			
		||||
	return stationList.Stations, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Convert API type to Database type ready for insertion
 | 
			
		||||
func convertApiToDatabase(data upstreamApi.Station) (database.Station, error) {
 | 
			
		||||
	if data.CrsCode == "" {
 | 
			
		||||
		return database.Station{}, fmt.Errorf("CRS code is required but missing")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	tiploc, err := dbAccess.GetTiplocFromCrs(data.CrsCode)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return database.Station{}, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	stanox, err := dbAccess.GetStanoxFromCrs(data.CrsCode)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return database.Station{}, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	output := database.Station{
 | 
			
		||||
		CRS:     data.CrsCode,
 | 
			
		||||
		TIPLOC:  tiploc,
 | 
			
		||||
		STANOX:  stanox,
 | 
			
		||||
		NLCDESC: data.Name,
 | 
			
		||||
		Location: database.GeoJson{
 | 
			
		||||
			Type: "Point",
 | 
			
		||||
			Coordinates: []float64{
 | 
			
		||||
				data.Longitude,
 | 
			
		||||
				data.Latitude,
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		Operator: data.StationOperator,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return output, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user