diff --git a/postgres/queries/transactions.sql b/postgres/queries/transactions.sql index e210153..562b391 100644 --- a/postgres/queries/transactions.sql +++ b/postgres/queries/transactions.sql @@ -6,7 +6,7 @@ WHERE id = $1; INSERT INTO transactions (date, memo, amount, account_id, payee_id, category_id, group_id, status) VALUES ($1, $2, $3, $4, $5, $6, $7, $8) -RETURNING *; +RETURNING id; -- name: UpdateTransaction :exec UPDATE transactions diff --git a/postgres/transactions.sql.go b/postgres/transactions.sql.go index 3be2e9f..d238098 100644 --- a/postgres/transactions.sql.go +++ b/postgres/transactions.sql.go @@ -15,7 +15,7 @@ const createTransaction = `-- name: CreateTransaction :one INSERT INTO transactions (date, memo, amount, account_id, payee_id, category_id, group_id, status) VALUES ($1, $2, $3, $4, $5, $6, $7, $8) -RETURNING id, date, memo, amount, account_id, category_id, payee_id, group_id, status +RETURNING id ` type CreateTransactionParams struct { @@ -29,7 +29,7 @@ type CreateTransactionParams struct { Status TransactionStatus } -func (q *Queries) CreateTransaction(ctx context.Context, arg CreateTransactionParams) (Transaction, error) { +func (q *Queries) CreateTransaction(ctx context.Context, arg CreateTransactionParams) (uuid.UUID, error) { row := q.db.QueryRowContext(ctx, createTransaction, arg.Date, arg.Memo, @@ -40,19 +40,9 @@ func (q *Queries) CreateTransaction(ctx context.Context, arg CreateTransactionPa arg.GroupID, arg.Status, ) - var i Transaction - err := row.Scan( - &i.ID, - &i.Date, - &i.Memo, - &i.Amount, - &i.AccountID, - &i.CategoryID, - &i.PayeeID, - &i.GroupID, - &i.Status, - ) - return i, err + var id uuid.UUID + err := row.Scan(&id) + return id, err } const deleteAllTransactions = `-- name: DeleteAllTransactions :execrows diff --git a/server/reconcile.go b/server/reconcile.go index d2c44bf..7b9cd5a 100644 --- a/server/reconcile.go +++ b/server/reconcile.go @@ -89,12 +89,12 @@ func (*Handler) CreateReconcilationTransaction(amount numeric.Numeric, accountUU AccountID: accountUUID, Status: "Reconciled", } - newTransaction, err := db.CreateTransaction(c.Request.Context(), createTransaction) + transactionUUID, err := db.CreateTransaction(c.Request.Context(), createTransaction) if err != nil { return nil, fmt.Errorf("insert new transaction: %w", err) } - transaction, err := db.GetTransaction(c.Request.Context(), newTransaction.ID) + transaction, err := db.GetTransaction(c.Request.Context(), transactionUUID) if err != nil { return nil, fmt.Errorf("get created transaction: %w", err) } diff --git a/server/transaction.go b/server/transaction.go index 08917d7..6dc632f 100644 --- a/server/transaction.go +++ b/server/transaction.go @@ -70,11 +70,18 @@ func (h *Handler) newTransaction(c *gin.Context) { newTransaction.PayeeID = payeeID } - transaction, err := h.Service.CreateTransaction(c.Request.Context(), newTransaction) + transactionUUID, err := h.Service.CreateTransaction(c.Request.Context(), newTransaction) if err != nil { c.AbortWithError(http.StatusInternalServerError, fmt.Errorf("create transaction: %w", err)) return } + + transaction, err := h.Service.GetTransaction(c.Request.Context(), transactionUUID) + if err != nil { + c.AbortWithError(http.StatusInternalServerError, fmt.Errorf("get transaction: %w", err)) + return + } + c.JSON(http.StatusOK, transaction) } @@ -100,7 +107,16 @@ func (h *Handler) UpdateTransaction(payload NewTransactionPayload, amount numeri err := h.Service.UpdateTransaction(c.Request.Context(), editTransaction) if err != nil { c.AbortWithError(http.StatusInternalServerError, fmt.Errorf("edit transaction: %w", err)) + return } + + transaction, err := h.Service.GetTransaction(c.Request.Context(), transactionUUID) + if err != nil { + c.AbortWithError(http.StatusInternalServerError, fmt.Errorf("get transaction: %w", err)) + return + } + + c.JSON(http.StatusOK, transaction) } func (h *Handler) CreateTransferForOtherAccount(newTransaction postgres.CreateTransactionParams, amount numeric.Numeric, payload NewTransactionPayload, c *gin.Context) error { diff --git a/web/src/components/TransactionEditRow.vue b/web/src/components/TransactionEditRow.vue index b0bce81..e66a913 100644 --- a/web/src/components/TransactionEditRow.vue +++ b/web/src/components/TransactionEditRow.vue @@ -8,6 +8,8 @@ const props = defineProps<{ transactionid: string }>() +const emit = defineEmits(["save"]); + const accountStore = useAccountStore(); const TX = accountStore.Transactions.get(props.transactionid)!; const payeeType = ref(undefined); @@ -28,6 +30,7 @@ const payload = computed(() => JSON.stringify({ function saveTransaction(e: MouseEvent) { e.preventDefault(); accountStore.editTransaction(TX.ID, payload.value); + emit('save'); } diff --git a/web/src/components/TransactionRow.vue b/web/src/components/TransactionRow.vue index 197ac91..a022774 100644 --- a/web/src/components/TransactionRow.vue +++ b/web/src/components/TransactionRow.vue @@ -44,7 +44,7 @@ const Reconciling = computed(() => useAccountStore().Reconciling); - +