X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fdb%2FDB.java;h=f68fccd533cb4d51e567b8c057ea7122fc18d1c6;hb=2aec7de70b2d512f20105a64255237c0119f2b1c;hp=eb9c090a5a8c8b6e1a7eee59838ade65061cbd15;hpb=c2bc2a73948d991a4c827d230ae93e239401b9b9;p=mobile-ledger.git 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 eb9c090a..f68fccd5 100644 --- a/app/src/main/java/net/ktnx/mobileledger/db/DB.java +++ b/app/src/main/java/net/ktnx/mobileledger/db/DB.java @@ -17,16 +17,54 @@ package net.ktnx.mobileledger.db; +import androidx.annotation.NonNull; import androidx.room.Database; +import androidx.room.Room; import androidx.room.RoomDatabase; +import androidx.room.migration.Migration; +import androidx.sqlite.db.SupportSQLiteDatabase; +import net.ktnx.mobileledger.App; import net.ktnx.mobileledger.dao.CurrencyDAO; import net.ktnx.mobileledger.dao.PatternAccountDAO; import net.ktnx.mobileledger.dao.PatternHeaderDAO; +import net.ktnx.mobileledger.utils.MobileLedgerDatabase; -@Database(version = 51, entities = {PatternHeader.class, PatternAccount.class, Currency.class}) +@Database(version = 52, entities = {PatternHeader.class, PatternAccount.class, Currency.class}) abstract public class DB extends RoomDatabase { + private static DB instance; + public static DB get() { + if (instance != null) + return instance; + synchronized (DB.class) { + if (instance != null) + return instance; + + return instance = + Room.databaseBuilder(App.instance, DB.class, MobileLedgerDatabase.DB_NAME) + .addMigrations(new Migration[]{new Migration(51, 52) { + @Override + public void migrate(@NonNull SupportSQLiteDatabase db) { + db.beginTransaction(); + try { + db.execSQL("create index fk_pattern_accounts_pattern on " + + "pattern_accounts(pattern_id);"); + db.execSQL("create index fk_pattern_accounts_currency on " + + "pattern_accounts(currency);"); + db.setTransactionSuccessful(); + } + finally { + db.endTransaction(); + } + } + } + }) + .build(); + } + } public abstract PatternHeaderDAO getPatternDAO(); + public abstract PatternAccountDAO getPatternAccountDAO(); + public abstract CurrencyDAO getCurrencyDAO(); }