mirror of
https://github.com/kevin-DL/services.git
synced 2026-01-11 19:04:35 +00:00
Minor fixes for evchargers (#220)
This commit is contained in:
@@ -112,19 +112,23 @@ func New() *Evchargers {
|
||||
|
||||
func (e *Evchargers) Search(ctx context.Context, request *evchargers.SearchRequest, response *evchargers.SearchResponse) error {
|
||||
|
||||
toInt := func(in []string) []interface{} {
|
||||
res := make([]interface{}, len(in))
|
||||
for i, v := range in {
|
||||
res[i], _ = strconv.Atoi(v)
|
||||
addFilter := func(filters bson.D, key, op string, in []string) bson.D {
|
||||
vals := bson.A{}
|
||||
for _, v := range in {
|
||||
if v == "" {
|
||||
continue
|
||||
}
|
||||
r, _ := strconv.Atoi(v)
|
||||
vals = append(vals, r)
|
||||
}
|
||||
return res
|
||||
if len(vals) == 0 {
|
||||
return filters
|
||||
}
|
||||
|
||||
filters = append(filters, bson.E{key, bson.D{{op, vals}}})
|
||||
return filters
|
||||
}
|
||||
filters := bson.D{}
|
||||
if len(request.ConnectionTypes) > 0 {
|
||||
vals := bson.A{}
|
||||
vals = append(vals, toInt(request.ConnectionTypes)...)
|
||||
filters = append(filters, bson.E{"Connections.ConnectionTypeID", bson.D{{"$in", vals}}})
|
||||
}
|
||||
|
||||
if request.Location != nil {
|
||||
distance := defaultDistance
|
||||
@@ -150,10 +154,12 @@ func (e *Evchargers) Search(ctx context.Context, request *evchargers.SearchReque
|
||||
filters = append(filters, bson.E{"AddressInfo.CountryID", i})
|
||||
}
|
||||
|
||||
if len(request.ConnectionTypes) > 0 {
|
||||
filters = addFilter(filters, "Connections.ConnectionTypeID", "$in", request.ConnectionTypes)
|
||||
}
|
||||
|
||||
if len(request.Levels) > 0 {
|
||||
vals := bson.A{}
|
||||
vals = append(vals, toInt(request.Levels)...)
|
||||
filters = append(filters, bson.E{"Connections.LevelID", bson.D{{"$in", vals}}})
|
||||
filters = addFilter(filters, "Connections.LevelID", "$in", request.Levels)
|
||||
}
|
||||
|
||||
if request.MinPower > 0 {
|
||||
@@ -161,15 +167,11 @@ func (e *Evchargers) Search(ctx context.Context, request *evchargers.SearchReque
|
||||
}
|
||||
|
||||
if len(request.Operators) > 0 {
|
||||
vals := bson.A{}
|
||||
vals = append(vals, toInt(request.Operators)...)
|
||||
filters = append(filters, bson.E{"OperatorID", bson.D{{"$in", vals}}})
|
||||
filters = addFilter(filters, "OperatorID", "$in", request.Operators)
|
||||
}
|
||||
|
||||
if len(request.UsageTypes) > 0 {
|
||||
vals := bson.A{}
|
||||
vals = append(vals, toInt(request.UsageTypes)...)
|
||||
filters = append(filters, bson.E{"UsageTypeID", bson.D{{"$in", vals}}})
|
||||
filters = addFilter(filters, "UsageTypeID", "$in", request.UsageTypes)
|
||||
}
|
||||
|
||||
maxLim := int64(100)
|
||||
@@ -246,11 +248,17 @@ func marshalConnections(in []Connection) []*evchargers.Connection {
|
||||
IsObsolete: v.Type.IsObsolete,
|
||||
},
|
||||
Reference: v.Reference,
|
||||
Level: strconv.Itoa(int(v.LevelID)),
|
||||
Amps: float32(v.Amps),
|
||||
Voltage: float32(v.Voltage),
|
||||
Power: float32(v.Power),
|
||||
Current: strconv.Itoa(int(v.CurrentTypeID)),
|
||||
LevelId: strconv.Itoa(int(v.LevelID)),
|
||||
Level: &evchargers.ChargerType{
|
||||
Id: strconv.Itoa(int(v.Level.ID)),
|
||||
Title: v.Level.Title,
|
||||
Comments: v.Level.Comments,
|
||||
IsFastChargeCapable: v.Level.IsFastChargeCapable,
|
||||
},
|
||||
Amps: float32(v.Amps),
|
||||
Voltage: float32(v.Voltage),
|
||||
Power: float32(v.Power),
|
||||
Current: strconv.Itoa(int(v.CurrentTypeID)),
|
||||
}
|
||||
}
|
||||
return res
|
||||
|
||||
Reference in New Issue
Block a user