Minor fixes for evchargers (#220)

This commit is contained in:
Dominic Wong
2021-10-02 00:00:54 +01:00
committed by GitHub
parent 6c2579b0fd
commit 684d5aa041
10 changed files with 265 additions and 239 deletions

View File

@@ -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