mirror of
https://github.com/gabehf/BudgetBuddy.git
synced 2026-03-14 17:56:01 -07:00
add GET /w/income
This commit is contained in:
parent
a65f6f09b1
commit
0d0cbc4e79
2 changed files with 42 additions and 0 deletions
|
|
@ -13,6 +13,11 @@ import (
|
||||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type IBCResponse struct {
|
||||||
|
Status int `json:"status"`
|
||||||
|
IncomeByCategory map[string]money.Money `json:"income_by_category"`
|
||||||
|
}
|
||||||
|
|
||||||
func GetMonthIncome(w http.ResponseWriter, r *http.Request) {
|
func GetMonthIncome(w http.ResponseWriter, r *http.Request) {
|
||||||
// get session key from request
|
// get session key from request
|
||||||
session := r.Header.Get("x-session-key")
|
session := r.Header.Get("x-session-key")
|
||||||
|
|
@ -53,3 +58,39 @@ func GetMonthIncome(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
||||||
w.Write(ret)
|
w.Write(ret)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func IncomeByCategory(w http.ResponseWriter, r *http.Request) {
|
||||||
|
// get session key from request
|
||||||
|
session := r.Header.Get("x-session-key")
|
||||||
|
|
||||||
|
// get collection handle from db
|
||||||
|
var userCollection = db.Client.Database("budgetbuddy").Collection("users")
|
||||||
|
|
||||||
|
var user = db.UserSchema{}
|
||||||
|
|
||||||
|
err := userCollection.FindOne(context.Background(), bson.D{primitive.E{Key: "session", Value: session}}).Decode(&user)
|
||||||
|
if err != nil {
|
||||||
|
w.WriteHeader(http.StatusUnauthorized)
|
||||||
|
fmt.Fprintf(w, "{\"error\":\"invalid session key\"}")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var response IBCResponse
|
||||||
|
|
||||||
|
response.IncomeByCategory = make(map[string]money.Money)
|
||||||
|
for _, e := range user.Income {
|
||||||
|
response.IncomeByCategory[e.Category] = money.Add(e.Amount, response.IncomeByCategory[e.Category])
|
||||||
|
}
|
||||||
|
|
||||||
|
response.Status = 200
|
||||||
|
|
||||||
|
ret, err := json.Marshal(response)
|
||||||
|
if err != nil {
|
||||||
|
w.WriteHeader(http.StatusInternalServerError)
|
||||||
|
fmt.Fprintf(w, "{\"error\":\"problem marshalling response\"}")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
w.Write(ret)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@ func Router() *chi.Mux {
|
||||||
|
|
||||||
// income
|
// income
|
||||||
r.Get("/income/month", GetMonthIncome)
|
r.Get("/income/month", GetMonthIncome)
|
||||||
|
r.Get("/income", IncomeByCategory)
|
||||||
|
|
||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue