|
4 | 4 | "context" |
5 | 5 | "crypto/tls" |
6 | 6 | "log" |
| 7 | + "strconv" |
7 | 8 |
|
8 | 9 | "go.mongodb.org/mongo-driver/bson" |
9 | 10 | "go.mongodb.org/mongo-driver/mongo" |
@@ -86,9 +87,21 @@ func (r *MongoDBOrderRepo) GetPendingOrders() ([]Order, error) { |
86 | 87 | func (r *MongoDBOrderRepo) GetOrder(id string) (Order, error) { |
87 | 88 | var ctx = context.TODO() |
88 | 89 |
|
89 | | - singleResult := r.db.FindOne(ctx, bson.M{"orderid": id}) |
| 90 | + var sanitizedId string |
| 91 | + // ensure id is a valid orderId that can be converted to int |
| 92 | + _, err := strconv.Atoi(id) |
| 93 | + if err != nil { |
| 94 | + log.Printf("Invalid order id: %s", err) |
| 95 | + return Order{}, err |
| 96 | + } else { |
| 97 | + sanitizedId = id |
| 98 | + } |
| 99 | + |
| 100 | + filter := bson.M{"orderid": bson.M{"$eq": sanitizedId}} |
| 101 | + singleResult := r.db.FindOne(ctx, filter) |
| 102 | + |
90 | 103 | var order Order |
91 | | - err := singleResult.Decode(&order) |
| 104 | + err = singleResult.Decode(&order) |
92 | 105 | if err != nil { |
93 | 106 | log.Printf("Failed to decode order: %s", err) |
94 | 107 | return order, err |
@@ -123,12 +136,23 @@ func (r *MongoDBOrderRepo) InsertOrders(orders []Order) error { |
123 | 136 | func (r *MongoDBOrderRepo) UpdateOrder(order Order) error { |
124 | 137 | var ctx = context.TODO() |
125 | 138 |
|
126 | | - log.Printf("Updating order: %v", order) |
| 139 | + var sanitizedId string |
| 140 | + // ensure id can be converted to int |
| 141 | + _, err := strconv.Atoi(order.OrderID) |
| 142 | + if err != nil { |
| 143 | + log.Printf("Invalid order id: %s", err) |
| 144 | + return err |
| 145 | + } else { |
| 146 | + sanitizedId = order.OrderID |
| 147 | + } |
| 148 | + |
| 149 | + filter := bson.M{"orderid": bson.M{"$eq": sanitizedId}} |
127 | 150 |
|
128 | 151 | // Update the order |
| 152 | + log.Printf("Updating order: %v", order) |
129 | 153 | updateResult, err := r.db.UpdateMany( |
130 | 154 | ctx, |
131 | | - bson.M{"orderid": order.OrderID}, |
| 155 | + filter, |
132 | 156 | bson.D{ |
133 | 157 | {Key: "$set", Value: bson.D{{Key: "status", Value: order.Status}}}, |
134 | 158 | }, |
|
0 commit comments