func (av *AcesVehicle) getCurtVehicles(configMap map[int]interface{}) (products.Lookup, error) { //get CURT vehicles var l products.Lookup var err error db, err := sql.Open("mysql", database.ConnectionString()) if err != nil { return l, err } defer db.Close() stmt, err := db.Prepare(getCurtVehiclesPreConfig) if err != nil { return l, err } defer stmt.Close() res, err := stmt.Query(av.AAIABaseVehicleID, av.AAIASubmodelID) if err != nil { return l, err } var sub, configKey, configValue *string var subID, configKeyID, configValueID, acesConfigValID *int var cv CurtVehicle // var pco products.ConfigurationOption var vehicleConfig products.Configuration // pcoMap := make(map[string][]string) for res.Next() { err = res.Scan( &cv.ID, &cv.BaseVehicle.ModelID, &cv.BaseVehicle.ModelName, &cv.BaseVehicle.MakeID, &cv.BaseVehicle.MakeName, &cv.BaseVehicle.YearID, &subID, &sub, &configKey, &configKeyID, &configValue, &configValueID, &acesConfigValID, ) if subID != nil { cv.Submodel.ID = *subID } if sub != nil { cv.Submodel.Name = *sub } if configKey != nil { cv.Configuration.Type = *configKey } if configValue != nil { cv.Configuration.Value = *configValue } if configKeyID != nil { cv.Configuration.TypeID = *configKeyID } if configValueID != nil { cv.Configuration.ValueID = *configValueID } if acesConfigValID != nil { cv.Configuration.AcesValueID = *acesConfigValID } // log.Print(configMap) // //configs - assign to map, flag // configValFlag := true // if vs, ok := pcoMap[cv.Configuration.Type]; ok { // for _, v := range vs { // if v == cv.Configuration.Value { // configValFlag = false // } // } // } // if configValFlag == true { // if name, ok := configMap[cv.Configuration.TypeID]; ok { // //configMap contains this config type // if cv.Configuration.AcesValueID == name { // pcoMap[cv.Configuration.Type] = append(pcoMap[cv.Configuration.Type], cv.Configuration.Value) // //vehicleConfigs (not l.ConfugurationOption) // vehicleConfig.Key = cv.Configuration.Type // vehicleConfig.Value = cv.Configuration.Value // l.Vehicle.Configurations = append(l.Vehicle.Configurations, vehicleConfig) // } // } else { // pcoMap[cv.Configuration.Type] = append(pcoMap[cv.Configuration.Type], cv.Configuration.Value) // //vehicleConfigs (not l.ConfugurationOption) // vehicleConfig.Key = cv.Configuration.Type // vehicleConfig.Value = cv.Configuration.Value // l.Vehicle.Configurations = append(l.Vehicle.Configurations, vehicleConfig) // } // } l.Vehicle.Base.Make = cv.BaseVehicle.MakeName l.Vehicle.Base.Model = cv.BaseVehicle.ModelName l.Vehicle.Base.Year = cv.BaseVehicle.YearID l.Vehicle.Submodel = cv.Submodel.Name } //end scan loop defer res.Close() //assign configs // for key, val := range pcoMap { // pco.Type = key // pco.Options = val // l.Configurations = append(l.Configurations, pco) // } //NEW curtConfigMap, err := getCurtConfigMapFromAcesConfigMap(configMap) if err != nil { return l, err } for configType, config := range curtConfigMap { vehicleConfig.Key = configType vehicleConfig.Value = config l.Vehicle.Configurations = append(l.Vehicle.Configurations, vehicleConfig) } l.Makes = append(l.Makes, l.Vehicle.Base.Make) l.Models = append(l.Models, l.Vehicle.Base.Model) l.Years = append(l.Years, l.Vehicle.Base.Year) l.Submodels = append(l.Submodels, l.Vehicle.Submodel) return l, err }