From d385bacc411bc15cfd8fcaa1a3419b3cb24235d1 Mon Sep 17 00:00:00 2001 From: Damyan Ivanov Date: Sun, 14 Jun 2020 14:25:17 +0300 Subject: [PATCH] add database support for transaction-level comments --- .../net/ktnx/mobileledger/model/LedgerTransaction.java | 3 ++- .../net/ktnx/mobileledger/model/MobileLedgerProfile.java | 8 +++++--- .../net/ktnx/mobileledger/utils/MobileLedgerDatabase.java | 2 +- app/src/main/res/raw/create_db.sql | 4 ++-- app/src/main/res/raw/sql_33.sql | 1 + 5 files changed, 11 insertions(+), 7 deletions(-) create mode 100644 app/src/main/res/raw/sql_33.sql diff --git a/app/src/main/java/net/ktnx/mobileledger/model/LedgerTransaction.java b/app/src/main/java/net/ktnx/mobileledger/model/LedgerTransaction.java index db5bbc7b..096d248f 100644 --- a/app/src/main/java/net/ktnx/mobileledger/model/LedgerTransaction.java +++ b/app/src/main/java/net/ktnx/mobileledger/model/LedgerTransaction.java @@ -170,7 +170,7 @@ public class LedgerTransaction { return; try (Cursor cTr = db.rawQuery( - "SELECT date, description from transactions WHERE profile=? AND id=?", + "SELECT date, description, comment from transactions WHERE profile=? AND id=?", new String[]{profile, String.valueOf(id)})) { if (cTr.moveToFirst()) { @@ -185,6 +185,7 @@ public class LedgerTransaction { dateString, id)); } description = cTr.getString(1); + comment = cTr.getString(2); try (Cursor cAcc = db.rawQuery( "SELECT account_name, amount, currency, comment FROM " + diff --git a/app/src/main/java/net/ktnx/mobileledger/model/MobileLedgerProfile.java b/app/src/main/java/net/ktnx/mobileledger/model/MobileLedgerProfile.java index b31ddef3..9d417955 100644 --- a/app/src/main/java/net/ktnx/mobileledger/model/MobileLedgerProfile.java +++ b/app/src/main/java/net/ktnx/mobileledger/model/MobileLedgerProfile.java @@ -292,10 +292,12 @@ public final class MobileLedgerProfile { db.execSQL("DELETE from transaction_accounts WHERE profile = ? and transaction_id=?", new Object[]{uuid, tr.getId()}); - db.execSQL("INSERT INTO transactions(profile, id, date, description, data_hash, keep) " + - "values(?,?,?,?,?,1)", + db.execSQL( + "INSERT INTO transactions(profile, id, date, description, comment, data_hash, " + + "keep) " + + "values(?,?,?,?,?,?,1)", new Object[]{uuid, tr.getId(), Globals.formatLedgerDate(tr.getDate()), - tr.getDescription(), tr.getDataHash() + tr.getDescription(), tr.getComment(), tr.getDataHash() }); for (LedgerTransactionAccount item : tr.getAccounts()) { diff --git a/app/src/main/java/net/ktnx/mobileledger/utils/MobileLedgerDatabase.java b/app/src/main/java/net/ktnx/mobileledger/utils/MobileLedgerDatabase.java index 85eacb02..eeb6873e 100644 --- a/app/src/main/java/net/ktnx/mobileledger/utils/MobileLedgerDatabase.java +++ b/app/src/main/java/net/ktnx/mobileledger/utils/MobileLedgerDatabase.java @@ -34,7 +34,7 @@ import static net.ktnx.mobileledger.utils.Logger.debug; public class MobileLedgerDatabase extends SQLiteOpenHelper { private static final String DB_NAME = "MoLe.db"; - private static final int LATEST_REVISION = 32; + private static final int LATEST_REVISION = 33; private static final String CREATE_DB_SQL = "create_db"; private final Application mContext; diff --git a/app/src/main/res/raw/create_db.sql b/app/src/main/res/raw/create_db.sql index 583e6fc1..175d6574 100644 --- a/app/src/main/res/raw/create_db.sql +++ b/app/src/main/res/raw/create_db.sql @@ -6,10 +6,10 @@ create table account_values(profile varchar not null, account varchar not null, create unique index un_account_values on account_values(profile,account,currency); create table description_history(description varchar not null primary key, keep boolean, description_upper varchar); create table profiles(uuid varchar not null primary key, name not null, url not null, use_authentication boolean not null, auth_user varchar, auth_password varchar, order_no integer, permit_posting boolean default 0, theme integer default -1, preferred_accounts_filter varchar, future_dates integer, api_version integer, show_commodity_by_default boolean default 0, default_commodity varchar, show_comments_by_default boolean default 1); -create table transactions(profile varchar not null, id integer not null, data_hash varchar not null, date varchar not null, description varchar not null, keep boolean not null default 0); +create table transactions(profile varchar not null, id integer not null, data_hash varchar not null, date varchar not null, description varchar not null, comment varchar, keep boolean not null default 0); create unique index un_transactions_id on transactions(profile,id); create unique index un_transactions_data_hash on transactions(profile,data_hash); create index idx_transaction_description on transactions(description); create table transaction_accounts(profile varchar not null, transaction_id integer not null, account_name varchar not null, currency varchar not null default '', amount decimal not null, comment varchar, constraint fk_transaction_accounts_acc foreign key(profile,account_name) references accounts(profile,account_name), constraint fk_transaction_accounts_trn foreign key(profile, transaction_id) references transactions(profile,id)); create table currencies(id integer not null primary key, name varchar not null, position varchar not null, has_gap boolean not null); --- updated to revision 30 \ No newline at end of file +-- updated to revision 33 \ No newline at end of file diff --git a/app/src/main/res/raw/sql_33.sql b/app/src/main/res/raw/sql_33.sql new file mode 100644 index 00000000..e6f52493 --- /dev/null +++ b/app/src/main/res/raw/sql_33.sql @@ -0,0 +1 @@ +alter table transactions add comment varchar; \ No newline at end of file -- 2.39.2