diff --git a/.gitignore b/.gitignore index 9685e1e..ab1ec7a 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,4 @@ yarn-error.log* # testing index.html +*.bak \ No newline at end of file diff --git a/db/schemas.go b/db/schemas.go index 4a82d0b..22f5238 100644 --- a/db/schemas.go +++ b/db/schemas.go @@ -11,7 +11,8 @@ type UserSchema struct { Session string `json:"session" bson:"session"` Balance money.Money `json:"balance" bson:"balance"` Budget money.Money `json:"budget" bson:"budget"` - Categories map[string]money.Money `json:"categories" bson:"categories"` + BudgetCategories map[string]money.Money `json:"categories" bson:"categories"` + Categories []string `json:"categories_list" bson:"categories_list"` Expenses []Transaction `json:"expenses" bson:"expenses"` Income []Transaction `json:"income" bson:"income"` RecurringExpenses []RecurringTransaction `json:"recurring_expenses" bson:"recurring_expenses"` diff --git a/package-lock.json b/package-lock.json index 076a8c1..90d2aac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4440,6 +4440,7 @@ "version": "9.2.0", "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.2.0.tgz", "integrity": "sha512-xTEnpUKiV/bMyEsE5bT4oYA0x0Z/colMtxzUY8bKyPXBNLn/e0V4ZjBZkEhms0xE4pv9QsPfSRu9AWS4y5wGvA==", + "peer": true, "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", @@ -4458,6 +4459,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -4491,28 +4493,64 @@ } }, "node_modules/@testing-library/react": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-14.0.0.tgz", - "integrity": "sha512-S04gSNJbYE30TlIMLTzv6QCTzt9AqIF5y6s6SzVFILNcNvbV/jU96GeiTPillGQo+Ny64M/5PV7klNYYgv5Dfg==", + "version": "13.4.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-13.4.0.tgz", + "integrity": "sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==", "dependencies": { "@babel/runtime": "^7.12.5", - "@testing-library/dom": "^9.0.0", + "@testing-library/dom": "^8.5.0", "@types/react-dom": "^18.0.0" }, "engines": { - "node": ">=14" + "node": ">=12" }, "peerDependencies": { "react": "^18.0.0", "react-dom": "^18.0.0" } }, + "node_modules/@testing-library/react/node_modules/@testing-library/dom": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.0.tgz", + "integrity": "sha512-d9ULIT+a4EXLX3UU8FBjauG9NnsZHkHztXoIcTsOKoOw030fyjheN9svkTULjJxtYag9DZz5Jz5qkWZDPxTFwA==", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "^5.0.0", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.4.4", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@testing-library/react/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/@testing-library/user-event": { - "version": "14.4.3", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.4.3.tgz", - "integrity": "sha512-kCUc5MEwaEMakkO5x7aoD+DLi02ehmEM2QCGWvNqAS1dV/fAvORWEjnjsEIvml59M7Y5kCkWN6fCCyPOe8OL6Q==", + "version": "13.5.0", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz", + "integrity": "sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==", + "dependencies": { + "@babel/runtime": "^7.12.5" + }, "engines": { - "node": ">=12", + "node": ">=10", "npm": ">=6" }, "peerDependencies": { @@ -9093,6 +9131,19 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -17277,6 +17328,19 @@ "is-typedarray": "^1.0.0" } }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", diff --git a/src/components/ViewBudget.js b/src/components/ViewBudget.js index a9de646..31fe56b 100644 --- a/src/components/ViewBudget.js +++ b/src/components/ViewBudget.js @@ -20,7 +20,7 @@ export default function FetchAPI() { async function getBalance() { try { - const response = await fetch('http://127.0.0.1:3030/w/balance', { + const response = await fetch('https://api.bb.gabefarrell.com/w/balance', { method: 'GET', headers: { 'x-session-key': getSessionKey(), @@ -71,7 +71,7 @@ export default function FetchAPI() { } formBody = formBody.join("&"); - fetch('http://127.0.0.1:3030/w/balance', { + fetch('https://api.bb.gabefarrell.com/w/balance', { method: 'POST', body: formBody, headers: { diff --git a/widgets/budget.go b/widgets/budget.go index 0204b41..ffbeed9 100644 --- a/widgets/budget.go +++ b/widgets/budget.go @@ -47,10 +47,10 @@ func GetBudget(w http.ResponseWriter, r *http.Request) { var response BudgetResponse response.Budget = user.Budget - response.BudgetCategories = user.Categories - cats := make([]string, len(user.Categories)) + response.BudgetCategories = user.BudgetCategories + cats := make([]string, len(user.BudgetCategories)) i := 0 - for k := range user.Categories { + for k := range user.BudgetCategories { cats[i] = k i++ } @@ -120,15 +120,16 @@ func SetCategoryBudget(w http.ResponseWriter, r *http.Request) { Decimal: newDecimal, } - if user.Categories == nil { - user.Categories = make(map[string]money.Money) + if user.BudgetCategories == nil { + user.BudgetCategories = make(map[string]money.Money) + user.Categories = append(user.Categories, cat) } - user.Categories[cat] = newBudget + user.BudgetCategories[cat] = newBudget filter := bson.D{primitive.E{Key: "session", Value: session}} opts := options.Update().SetUpsert(true) - update := bson.D{primitive.E{Key: "$set", Value: bson.D{primitive.E{Key: "categories", Value: user.Categories}}}} + update := bson.D{primitive.E{Key: "$set", Value: bson.D{primitive.E{Key: "categories", Value: user.BudgetCategories}}}} _, err = userCollection.UpdateOne(context.TODO(), filter, update, opts) if err != nil { w.WriteHeader(http.StatusUnauthorized)