From 833544eb24cb630dc1ce221e4aa3dedb3f6341e3 Mon Sep 17 00:00:00 2001
From: Damyan Ivanov <dam+mobileledger@ktnx.net>
Date: Sun, 12 Sep 2021 14:30:09 +0300
Subject: [PATCH] methods for deleting all DB tables

---
 .../java/net/ktnx/mobileledger/dao/AccountDAO.java  |  3 +++
 .../net/ktnx/mobileledger/dao/AccountValueDAO.java  |  3 +++
 .../java/net/ktnx/mobileledger/dao/CurrencyDAO.java |  3 +++
 .../java/net/ktnx/mobileledger/dao/OptionDAO.java   |  3 +++
 .../java/net/ktnx/mobileledger/dao/ProfileDAO.java  |  3 +++
 .../ktnx/mobileledger/dao/TemplateAccountDAO.java   |  3 +++
 .../ktnx/mobileledger/dao/TemplateHeaderDAO.java    |  3 +++
 .../mobileledger/dao/TransactionAccountDAO.java     |  3 +++
 .../net/ktnx/mobileledger/dao/TransactionDAO.java   |  3 +++
 app/src/main/java/net/ktnx/mobileledger/db/DB.java  | 13 +++++++++++++
 10 files changed, 40 insertions(+)

diff --git a/app/src/main/java/net/ktnx/mobileledger/dao/AccountDAO.java b/app/src/main/java/net/ktnx/mobileledger/dao/AccountDAO.java
index 677fa81e..0c581787 100644
--- a/app/src/main/java/net/ktnx/mobileledger/dao/AccountDAO.java
+++ b/app/src/main/java/net/ktnx/mobileledger/dao/AccountDAO.java
@@ -75,6 +75,9 @@ public abstract class AccountDAO extends BaseDAO<Account> {
     @Delete
     public abstract void deleteSync(List<Account> items);
 
+    @Query("DELETE FROM accounts")
+    public abstract void deleteAllSync();
+
     @Query("SELECT * FROM accounts WHERE profile_id=:profileId ORDER BY name")
     public abstract LiveData<List<Account>> getAll(long profileId);
 
diff --git a/app/src/main/java/net/ktnx/mobileledger/dao/AccountValueDAO.java b/app/src/main/java/net/ktnx/mobileledger/dao/AccountValueDAO.java
index 54a42c12..8a7e5fb7 100644
--- a/app/src/main/java/net/ktnx/mobileledger/dao/AccountValueDAO.java
+++ b/app/src/main/java/net/ktnx/mobileledger/dao/AccountValueDAO.java
@@ -41,6 +41,9 @@ public abstract class AccountValueDAO extends BaseDAO<AccountValue> {
     @Delete
     public abstract void deleteSync(AccountValue item);
 
+    @Query("DELETE FROM account_values")
+    public abstract void deleteAllSync();
+
     @Query("SELECT * FROM account_values WHERE account_id=:accountId")
     public abstract LiveData<List<AccountValue>> getAll(long accountId);
 
diff --git a/app/src/main/java/net/ktnx/mobileledger/dao/CurrencyDAO.java b/app/src/main/java/net/ktnx/mobileledger/dao/CurrencyDAO.java
index 46e86358..1505a8fe 100644
--- a/app/src/main/java/net/ktnx/mobileledger/dao/CurrencyDAO.java
+++ b/app/src/main/java/net/ktnx/mobileledger/dao/CurrencyDAO.java
@@ -40,6 +40,9 @@ public abstract class CurrencyDAO extends BaseDAO<Currency> {
     @Delete
     public abstract void deleteSync(Currency item);
 
+    @Query("DELETE FROM currencies")
+    public abstract void deleteAllSync();
+
     @Query("SELECT * FROM currencies")
     public abstract LiveData<List<Currency>> getAll();
 
diff --git a/app/src/main/java/net/ktnx/mobileledger/dao/OptionDAO.java b/app/src/main/java/net/ktnx/mobileledger/dao/OptionDAO.java
index 5540b233..41d6464b 100644
--- a/app/src/main/java/net/ktnx/mobileledger/dao/OptionDAO.java
+++ b/app/src/main/java/net/ktnx/mobileledger/dao/OptionDAO.java
@@ -43,6 +43,9 @@ public abstract class OptionDAO extends BaseDAO<Option> {
     @Delete
     public abstract void deleteSync(List<Option> items);
 
+    @Query("DELETE from options")
+    public abstract void deleteAllSync();
+
     @Query("SELECT * FROM options WHERE profile_id = :profileId AND name = :name")
     public abstract LiveData<Option> load(long profileId, String name);
 
diff --git a/app/src/main/java/net/ktnx/mobileledger/dao/ProfileDAO.java b/app/src/main/java/net/ktnx/mobileledger/dao/ProfileDAO.java
index 3c8fb4c3..c7a2e5d7 100644
--- a/app/src/main/java/net/ktnx/mobileledger/dao/ProfileDAO.java
+++ b/app/src/main/java/net/ktnx/mobileledger/dao/ProfileDAO.java
@@ -55,6 +55,9 @@ public abstract class ProfileDAO extends BaseDAO<Profile> {
     @Delete
     public abstract void deleteSync(Profile item);
 
+    @Query("DELETE FROM profiles")
+    public abstract void deleteAllSync();
+
     @Query("select * from profiles where id = :profileId")
     public abstract Profile getByIdSync(long profileId);
 
diff --git a/app/src/main/java/net/ktnx/mobileledger/dao/TemplateAccountDAO.java b/app/src/main/java/net/ktnx/mobileledger/dao/TemplateAccountDAO.java
index 44b1b201..c2be8c7f 100644
--- a/app/src/main/java/net/ktnx/mobileledger/dao/TemplateAccountDAO.java
+++ b/app/src/main/java/net/ktnx/mobileledger/dao/TemplateAccountDAO.java
@@ -40,6 +40,9 @@ public interface TemplateAccountDAO {
     @Delete
     void deleteSync(TemplateAccount item);
 
+    @Query("DELETE FROM template_accounts")
+    void deleteAllSync();
+
     @Query("SELECT * FROM template_accounts WHERE template_id=:template_id")
     LiveData<List<TemplateAccount>> getTemplateAccounts(Long template_id);
 
diff --git a/app/src/main/java/net/ktnx/mobileledger/dao/TemplateHeaderDAO.java b/app/src/main/java/net/ktnx/mobileledger/dao/TemplateHeaderDAO.java
index ed2473b2..24e751c8 100644
--- a/app/src/main/java/net/ktnx/mobileledger/dao/TemplateHeaderDAO.java
+++ b/app/src/main/java/net/ktnx/mobileledger/dao/TemplateHeaderDAO.java
@@ -62,6 +62,9 @@ public abstract class TemplateHeaderDAO {
         });
     }
 
+    @Query("DELETE FROM templates")
+    public abstract void deleteAllSync();
+
     @Query("SELECT * FROM templates ORDER BY is_fallback, UPPER(name)")
     public abstract LiveData<List<TemplateHeader>> getTemplates();
 
diff --git a/app/src/main/java/net/ktnx/mobileledger/dao/TransactionAccountDAO.java b/app/src/main/java/net/ktnx/mobileledger/dao/TransactionAccountDAO.java
index c63ed223..1b6f27d9 100644
--- a/app/src/main/java/net/ktnx/mobileledger/dao/TransactionAccountDAO.java
+++ b/app/src/main/java/net/ktnx/mobileledger/dao/TransactionAccountDAO.java
@@ -43,6 +43,9 @@ public abstract class TransactionAccountDAO extends BaseDAO<TransactionAccount>
     @Delete
     public abstract void deleteSync(List<TransactionAccount> items);
 
+    @Query("DELETE FROM transaction_accounts")
+    public abstract void deleteAllSync();
+
     @Query("SELECT * FROM transaction_accounts WHERE id = :id")
     public abstract LiveData<TransactionAccount> getById(long id);
 
diff --git a/app/src/main/java/net/ktnx/mobileledger/dao/TransactionDAO.java b/app/src/main/java/net/ktnx/mobileledger/dao/TransactionDAO.java
index fca54eda..001976d3 100644
--- a/app/src/main/java/net/ktnx/mobileledger/dao/TransactionDAO.java
+++ b/app/src/main/java/net/ktnx/mobileledger/dao/TransactionDAO.java
@@ -66,6 +66,9 @@ public abstract class TransactionDAO extends BaseDAO<Transaction> {
     @Delete
     public abstract void deleteSync(List<Transaction> items);
 
+    @Query("DELETE FROM transactions")
+    public abstract void deleteAllSync();
+
     @Query("SELECT * FROM transactions WHERE id = :id")
     public abstract LiveData<Transaction> getById(long id);
 
diff --git a/app/src/main/java/net/ktnx/mobileledger/db/DB.java b/app/src/main/java/net/ktnx/mobileledger/db/DB.java
index 97c16dbb..48262888 100644
--- a/app/src/main/java/net/ktnx/mobileledger/db/DB.java
+++ b/app/src/main/java/net/ktnx/mobileledger/db/DB.java
@@ -244,4 +244,17 @@ abstract public class DB extends RoomDatabase {
     public abstract OptionDAO getOptionDAO();
 
     public abstract ProfileDAO getProfileDAO();
+
+    @androidx.room.Transaction
+    public void deleteAllSync() {
+        getTransactionAccountDAO().deleteAllSync();
+        getTransactionDAO().deleteAllSync();
+        getAccountValueDAO().deleteAllSync();
+        getAccountDAO().deleteAllSync();
+        getTemplateAccountDAO().deleteAllSync();
+        getTemplateDAO().deleteAllSync();
+        getCurrencyDAO().deleteAllSync();
+        getOptionDAO().deleteAllSync();
+        getProfileDAO().deleteAllSync();
+    }
 }
-- 
2.39.5