Compare commits
9 Commits
1c003486ca
...
master
Author | SHA1 | Date | |
---|---|---|---|
45af54d995 | |||
a241298170 | |||
9248c12aab | |||
8817e665e9 | |||
0b36048f47 | |||
0c2438373d | |||
2f636b5f9c | |||
4ef0b759ef | |||
08fbacc7e6 |
@ -14,6 +14,7 @@ linters:
|
||||
- gci # not working, shows errors on freshly formatted file
|
||||
- varnamelen
|
||||
- lll
|
||||
|
||||
linters-settings:
|
||||
errcheck:
|
||||
exclude-functions:
|
||||
@ -25,3 +26,18 @@ linters-settings:
|
||||
varnamelen:
|
||||
ignore-decls:
|
||||
- c *gin.Context
|
||||
wrapcheck:
|
||||
ignoreSigs:
|
||||
- .JSON(
|
||||
- .Redirect(
|
||||
- .String(
|
||||
- .Errorf(
|
||||
- errors.New(
|
||||
- errors.Unwrap(
|
||||
- .Wrap(
|
||||
- .Wrapf(
|
||||
- .WithMessage(
|
||||
- .WithMessagef(
|
||||
- .WithStack(
|
||||
ignorePackageGlobs:
|
||||
- git.javil.eu/jacob1123/budgeteer/postgres
|
12
bass.build
Normal file
12
bass.build
Normal file
@ -0,0 +1,12 @@
|
||||
(def go
|
||||
(from (linux/alpine)
|
||||
($ apk add go)))
|
||||
|
||||
(-> ($ go mod download)
|
||||
(with-image go)
|
||||
(with-mount *dir*/go.mod ./go.mod)
|
||||
(with-mount *dir*/go.sum ./go.sum))
|
||||
|
||||
(def go-mods
|
||||
(from go
|
||||
($ go mod download)))
|
@ -1,6 +1,7 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
@ -35,17 +36,23 @@ func TestRegisterUser(t *testing.T) {
|
||||
|
||||
t.Run("RegisterUser", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
request, err := http.NewRequest(
|
||||
request, err := http.NewRequestWithContext(context.Background(),
|
||||
http.MethodPost,
|
||||
"/api/v1/user/register",
|
||||
strings.NewReader(`{"password":"pass","email":"info@example.com","name":"Test"}`))
|
||||
request.Header.Set("Content-Type", "application/json")
|
||||
context := engine.NewContext(request, recorder)
|
||||
if err != nil {
|
||||
t.Errorf("error creating request: %s", err)
|
||||
return
|
||||
}
|
||||
|
||||
h.registerPost(context)
|
||||
err = h.registerPost(context)
|
||||
if err != nil {
|
||||
t.Error(err.Error())
|
||||
t.Error("Error registering")
|
||||
return
|
||||
}
|
||||
|
||||
if recorder.Code != http.StatusOK {
|
||||
t.Errorf("handler returned wrong status code: got %v want %v", recorder.Code, http.StatusOK)
|
||||
|
@ -41,7 +41,7 @@ func (h *Handler) budgetingForMonth(c echo.Context) error {
|
||||
|
||||
month, err := getDate(c)
|
||||
if err != nil {
|
||||
c.Redirect(http.StatusTemporaryRedirect, "/budget/"+budget.ID.String())
|
||||
return c.Redirect(http.StatusTemporaryRedirect, "/budget/"+budget.ID.String())
|
||||
}
|
||||
|
||||
data, err := h.getBudgetingViewForMonth(c.Request().Context(), budget, month)
|
||||
|
@ -35,7 +35,7 @@ func (h *Handler) verifyLogin(c echo.Context) (budgeteer.Token, error) { //nolin
|
||||
tokenString = tokenString[7:]
|
||||
token, err := h.TokenVerifier.VerifyToken(tokenString)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("verify token '%s': %s", tokenString, err)
|
||||
return nil, fmt.Errorf("verify token '%s': %w", tokenString, err)
|
||||
}
|
||||
|
||||
return token, nil
|
||||
@ -63,7 +63,7 @@ func (h *Handler) loginPost(c echo.Context) error {
|
||||
var login loginInformation
|
||||
err := c.Bind(&login)
|
||||
if err != nil {
|
||||
return err
|
||||
return fmt.Errorf("parse payload: %w", err)
|
||||
}
|
||||
|
||||
user, err := h.Service.GetUserByUsername(c.Request().Context(), login.User)
|
||||
@ -72,12 +72,12 @@ func (h *Handler) loginPost(c echo.Context) error {
|
||||
}
|
||||
|
||||
if err = h.CredentialsVerifier.Verify(login.Password, user.Password); err != nil {
|
||||
return err
|
||||
return fmt.Errorf("verify password: %w", err)
|
||||
}
|
||||
|
||||
token, err := h.TokenVerifier.CreateToken(&user)
|
||||
if err != nil {
|
||||
return err
|
||||
return fmt.Errorf("create token: %w", err)
|
||||
}
|
||||
|
||||
go h.UpdateLastLogin(user.ID)
|
||||
@ -120,7 +120,7 @@ func (h *Handler) registerPost(c echo.Context) error {
|
||||
|
||||
hash, err := h.CredentialsVerifier.Hash(register.Password)
|
||||
if err != nil {
|
||||
return err
|
||||
return fmt.Errorf("hash password: %w", err)
|
||||
}
|
||||
|
||||
createUser := postgres.CreateUserParams{
|
||||
@ -135,7 +135,7 @@ func (h *Handler) registerPost(c echo.Context) error {
|
||||
|
||||
token, err := h.TokenVerifier.CreateToken(&user)
|
||||
if err != nil {
|
||||
return err
|
||||
return fmt.Errorf("create token: %w", err)
|
||||
}
|
||||
|
||||
go h.UpdateLastLogin(user.ID)
|
||||
|
@ -1,6 +1,7 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
||||
"git.javil.eu/jacob1123/budgeteer/postgres"
|
||||
@ -26,12 +27,12 @@ func (h *Handler) importYNAB(c echo.Context) error {
|
||||
|
||||
transactionsFile, err := c.FormFile("transactions")
|
||||
if err != nil {
|
||||
return err
|
||||
return fmt.Errorf("get transactions: %w", err)
|
||||
}
|
||||
|
||||
transactions, err := transactionsFile.Open()
|
||||
if err != nil {
|
||||
return err
|
||||
return fmt.Errorf("open transactions: %w", err)
|
||||
}
|
||||
|
||||
err = ynab.ImportTransactions(c.Request().Context(), transactions)
|
||||
@ -41,12 +42,12 @@ func (h *Handler) importYNAB(c echo.Context) error {
|
||||
|
||||
assignmentsFile, err := c.FormFile("assignments")
|
||||
if err != nil {
|
||||
return err
|
||||
return fmt.Errorf("get assignments: %w", err)
|
||||
}
|
||||
|
||||
assignments, err := assignmentsFile.Open()
|
||||
if err != nil {
|
||||
return err
|
||||
return fmt.Errorf("open assignments: %w", err)
|
||||
}
|
||||
|
||||
err = ynab.ImportAssignments(c.Request().Context(), assignments)
|
||||
|
@ -11,10 +11,10 @@ export interface Suggestion {
|
||||
}
|
||||
|
||||
const props = defineProps<{
|
||||
text: string,
|
||||
id: string | undefined,
|
||||
text: string | null,
|
||||
id: string | null,
|
||||
model: string,
|
||||
type?: string | undefined,
|
||||
type?: string | null,
|
||||
}>();
|
||||
|
||||
const SearchQuery = ref(props.text || "");
|
||||
|
@ -16,9 +16,9 @@ const TX = ref<Transaction>({
|
||||
Memo: "",
|
||||
Amount: 0,
|
||||
Payee: "",
|
||||
PayeeID: undefined,
|
||||
PayeeID: null,
|
||||
Category: "",
|
||||
CategoryID: undefined,
|
||||
CategoryID: null,
|
||||
CategoryGroup: "",
|
||||
GroupID: "",
|
||||
ID: "",
|
||||
|
@ -42,7 +42,7 @@ const filters = ref({
|
||||
ToDate: new Date(2999,11,32),
|
||||
});
|
||||
|
||||
watch(() => filters.value.AccountID
|
||||
watch(() => (filters.value.AccountID ?? "")
|
||||
+ filters.value.PayeeID
|
||||
+ filters.value.CategoryID
|
||||
+ filters.value.FromDate?.toISOString()
|
||||
|
@ -2,7 +2,7 @@ import { defineStore } from "pinia";
|
||||
import { GET, POST } from "../api";
|
||||
import { useBudgetsStore } from "./budget";
|
||||
import { useSessionStore } from "./session";
|
||||
import { useTransactionsStore } from "./transactions";
|
||||
import { Transaction, useTransactionsStore } from "./transactions";
|
||||
|
||||
interface State {
|
||||
Accounts: Map<string, Account>;
|
||||
@ -200,6 +200,7 @@ export const useAccountStore = defineStore("budget/account", {
|
||||
transactionsStore.AddTransactions(
|
||||
response.Transactions
|
||||
);
|
||||
account.Transactions = response.Transactions.map((x : Transaction) =>x.ID);
|
||||
},
|
||||
async FetchMonthBudget(budgetid: string, year: number, month: number) {
|
||||
const result = await GET(
|
||||
|
@ -17,12 +17,12 @@ export interface Transaction {
|
||||
TransferAccount: string;
|
||||
CategoryGroup: string;
|
||||
Category: string;
|
||||
CategoryID: string | undefined;
|
||||
CategoryID: string | null;
|
||||
Memo: string;
|
||||
Status: string;
|
||||
GroupID: string;
|
||||
Payee: string;
|
||||
PayeeID: string | undefined;
|
||||
PayeeID: string | null;
|
||||
Amount: number;
|
||||
Reconciled: boolean;
|
||||
Account: string;
|
||||
@ -47,10 +47,12 @@ export const useTransactionsStore = defineStore("budget/transactions", {
|
||||
}
|
||||
return reconciledBalance;
|
||||
},
|
||||
TransactionsByDate(state) : Record<string, Transaction[]> {
|
||||
TransactionsByDate(state) : Record<string, Transaction[]>|undefined{
|
||||
const accountsStore = useAccountStore();
|
||||
const accountID = accountsStore.CurrentAccountID;
|
||||
const allTransactions = [...this.Transactions.values()].filter(x => x.AccountID == accountID);
|
||||
const account = accountsStore.CurrentAccount;
|
||||
if(account === undefined)
|
||||
return undefined;
|
||||
const allTransactions = account!.Transactions.map(x => this.Transactions.get(x) ?? {} as Transaction);
|
||||
return groupBy(allTransactions, x => formatDate(x.Date));
|
||||
},
|
||||
TransactionsList(state) : Transaction[] {
|
||||
|
Reference in New Issue
Block a user