You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
1.4 KiB

package widgets
import (
"context"
"github.com/jacobmveber-01839764/BudgetBuddy/db"
"github.com/jacobmveber-01839764/BudgetBuddy/money"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo/options"
)
func addToBalance(user db.UserSchema, amount money.Money) bool {
newBalance := money.Add(amount, user.Balance)
// get collection handle from db
var userCollection = db.Client.Database("budgetbuddy").Collection("users")
filter := bson.D{primitive.E{Key: "session", Value: user.Session}}
opts := options.Update().SetUpsert(true)
update := bson.D{primitive.E{Key: "$set", Value: bson.D{primitive.E{Key: "balance", Value: newBalance}}}}
_, err := userCollection.UpdateOne(context.TODO(), filter, update, opts)
return err == nil
}
func subtractFromBalance(user db.UserSchema, amount money.Money) bool {
// create money object to store in db
newBalance := money.Subtract(amount, user.Balance)
// get collection handle from db
var userCollection = db.Client.Database("budgetbuddy").Collection("users")
filter := bson.D{primitive.E{Key: "session", Value: user.Session}}
opts := options.Update().SetUpsert(true)
update := bson.D{primitive.E{Key: "$set", Value: bson.D{primitive.E{Key: "balance", Value: newBalance}}}}
_, err := userCollection.UpdateOne(context.TODO(), filter, update, opts)
return err == nil
}