8 Commits

Author SHA1 Message Date
45af54d995 Add bass.build
Some checks failed
continuous-integration/drone/push Build is failing
2024-08-21 20:42:14 +00:00
a241298170 Merge pull request 'Use accounts transactions instead of global (Fixes #65)' (#78) from add-new-to-top into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #78
2022-09-10 23:26:13 +02:00
9248c12aab Use accounts transactions instead of global
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2022-09-10 21:24:02 +00:00
8817e665e9 Merge pull request 'Migrate from gin to echo framework' (#77) from migrate-to-echo into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #77
2022-08-21 22:04:28 +02:00
0b36048f47 use null instead of undefined
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2022-08-21 20:03:04 +00:00
0c2438373d js lint
Some checks failed
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is failing
2022-08-21 20:00:13 +00:00
2f636b5f9c Wrap some errors
Some checks failed
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is failing
2022-08-21 19:56:55 +00:00
4ef0b759ef Fix linter errors
Some checks failed
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is failing
2022-08-21 19:51:56 +00:00
10 changed files with 40 additions and 21 deletions

View File

@@ -29,6 +29,8 @@ linters-settings:
wrapcheck:
ignoreSigs:
- .JSON(
- .Redirect(
- .String(
- .Errorf(
- errors.New(
- errors.Unwrap(

12
bass.build Normal file
View 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)))

View File

@@ -40,6 +40,7 @@ func TestRegisterUser(t *testing.T) {
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)

View File

@@ -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)

View File

@@ -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)

View File

@@ -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 || "");

View File

@@ -16,9 +16,9 @@ const TX = ref<Transaction>({
Memo: "",
Amount: 0,
Payee: "",
PayeeID: undefined,
PayeeID: null,
Category: "",
CategoryID: undefined,
CategoryID: null,
CategoryGroup: "",
GroupID: "",
ID: "",

View File

@@ -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()

View File

@@ -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(

View File

@@ -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[] {