fix new tr

This commit is contained in:
thatscringebro
2026-03-12 09:19:54 -04:00
parent 7065a085a9
commit 30880ed104
3 changed files with 24 additions and 13 deletions

View File

@@ -72,9 +72,12 @@ impl App {
} }
pub fn save_new_tr(&mut self) { pub fn save_new_tr(&mut self) {
self.next_tr_input();
let tr = data_layer::upsert_transaction(&self.connection, self.new_transaction.clone()); let tr = data_layer::upsert_transaction(&self.connection, self.new_transaction.clone());
self.trx_table.add_tr(tr); self.trx_table.add_tr(tr);
self.new_transaction = Transaction::new_empty(); self.new_transaction = Transaction::new_empty();
self.current_input = String::new();
self.selected_transaction_input = TransactionInput::Type;
} }
pub fn next_tr_input(&mut self) { pub fn next_tr_input(&mut self) {

View File

@@ -174,27 +174,32 @@ pub fn get_transaction_types(con: &Connection) -> Vec<TransactionType> {
} }
pub fn upsert_transaction(con: &Connection, tr: Transaction) -> Transaction { pub fn upsert_transaction(con: &Connection, tr: Transaction) -> Transaction {
println!("{}", tr.get_desc());
let query; let query;
if tr.get_id() == 0 { if tr.get_id() == 0 {
query = "INSERT INTO Transactions query = "INSERT INTO Transactions
(account_id, type_id, amount, date, description) (account_id, type_id, amount, date, description)
VALUES (?, ?, ?, ?, ?) VALUES (:ac_id, :type_id, :amnt, :date, :desc)
RETURNING id;"; RETURNING id;";
} else { } else {
query = "UPDATE Transactions query = "UPDATE Transactions
SET account_id = ?, type_id = ?, amount = ?, date = ?, description = ? SET account_id = :ac_id, type_id = :type_id, amount = :amnt, date = :date, description = :desc
WHERE id = ? RETURNING id;"; WHERE id = :id RETURNING id;";
} }
let mut statement = con.prepare(query).unwrap(); let mut statement = con.prepare(query).unwrap();
statement.bind((1, tr.get_account_id())).unwrap(); statement.bind((":ac_id", tr.get_account_id())).unwrap();
statement.bind((2, tr.get_type().get_id())).unwrap(); statement
statement.bind((3, tr.get_amount())).unwrap(); .bind((":type_id", tr.get_type().get_id()))
statement.bind((4, tr.get_date().timestamp())).unwrap(); .unwrap();
statement.bind((5, &tr.get_desc() as &str)).unwrap(); statement.bind((":amnt", tr.get_amount())).unwrap();
statement
.bind((":date", tr.get_date().timestamp()))
.unwrap();
statement.bind((":desc", &tr.get_desc() as &str)).unwrap();
if tr.get_id() != 0 { if tr.get_id() != 0 {
statement.bind((6, tr.get_id())).unwrap(); statement.bind((":id", tr.get_id())).unwrap();
} }
let id; let id;
@@ -216,9 +221,9 @@ pub fn upsert_transaction(con: &Connection, tr: Transaction) -> Transaction {
} }
pub fn get_transaction(con: &Connection, id: i64) -> Transaction { pub fn get_transaction(con: &Connection, id: i64) -> Transaction {
let query = "SELECT * FROM Transactions WHERE id = ?"; let query = "SELECT * FROM Transactions WHERE id = :id";
let mut statement = con.prepare(query).unwrap(); let mut statement = con.prepare(query).unwrap();
statement.bind((1, id)).unwrap(); statement.bind((":id", id)).unwrap();
if let Ok(State::Row) = statement.next() { if let Ok(State::Row) = statement.next() {
return Transaction::new( return Transaction::new(

View File

@@ -5,8 +5,8 @@ use ratatui::{
style::{Color, Modifier, Style, palette::tailwind::SLATE}, style::{Color, Modifier, Style, palette::tailwind::SLATE},
text::{Line, Text}, text::{Line, Text},
widgets::{ widgets::{
Block, Borders, HighlightSpacing, List, ListItem, Paragraph, Row, StatefulWidget, Table, Block, Borders, Clear, HighlightSpacing, List, ListItem, Paragraph, Row, StatefulWidget,
Wrap, Table, Wrap,
}, },
}; };
@@ -110,6 +110,7 @@ pub fn ui(frame: &mut Frame, app: &mut App) {
.style(Style::default()); .style(Style::default());
let area = centered_rect(50, 40, frame.area()); let area = centered_rect(50, 40, frame.area());
frame.render_widget(Clear, area);
frame.render_widget(popup, area); frame.render_widget(popup, area);
} }
@@ -120,6 +121,7 @@ pub fn ui(frame: &mut Frame, app: &mut App) {
.style(Style::default()); .style(Style::default());
let area = centered_rect(50, 40, frame.area()); let area = centered_rect(50, 40, frame.area());
frame.render_widget(Clear, area);
frame.render_widget(popup, area); frame.render_widget(popup, area);
let chunks = Layout::default() let chunks = Layout::default()
@@ -174,6 +176,7 @@ pub fn ui(frame: &mut Frame, app: &mut App) {
.wrap(Wrap { trim: false }); .wrap(Wrap { trim: false });
let area = centered_rect(50, 20, frame.area()); let area = centered_rect(50, 20, frame.area());
frame.render_widget(Clear, area);
frame.render_widget(exit_paragraph, area); frame.render_widget(exit_paragraph, area);
} }
} }