2017-09-08 00:31:38 +00:00
|
|
|
package cy.agorise.crystalwallet.dao;
|
|
|
|
|
2018-05-31 01:19:46 +00:00
|
|
|
import android.arch.persistence.db.SupportSQLiteDatabase;
|
2017-09-13 21:52:36 +00:00
|
|
|
import android.arch.persistence.room.Database;
|
|
|
|
import android.arch.persistence.room.Room;
|
|
|
|
import android.arch.persistence.room.RoomDatabase;
|
2017-09-14 02:09:58 +00:00
|
|
|
import android.arch.persistence.room.TypeConverters;
|
2018-05-31 01:19:46 +00:00
|
|
|
import android.arch.persistence.room.migration.Migration;
|
2017-09-10 23:13:32 +00:00
|
|
|
import android.content.Context;
|
2017-09-08 00:31:38 +00:00
|
|
|
|
2017-09-14 02:09:58 +00:00
|
|
|
import cy.agorise.crystalwallet.dao.converters.Converters;
|
2017-09-08 00:31:38 +00:00
|
|
|
import cy.agorise.crystalwallet.models.AccountSeed;
|
2018-06-16 01:56:50 +00:00
|
|
|
import cy.agorise.crystalwallet.models.BitsharesAccountNameCache;
|
2017-10-19 02:46:09 +00:00
|
|
|
import cy.agorise.crystalwallet.models.BitsharesAssetInfo;
|
2018-01-18 02:49:42 +00:00
|
|
|
import cy.agorise.crystalwallet.models.Contact;
|
2018-02-08 01:47:58 +00:00
|
|
|
import cy.agorise.crystalwallet.models.ContactAddress;
|
2017-10-15 02:02:55 +00:00
|
|
|
import cy.agorise.crystalwallet.models.CryptoCoinBalance;
|
2017-09-13 16:12:22 +00:00
|
|
|
import cy.agorise.crystalwallet.models.CryptoCoinTransaction;
|
2017-09-25 02:59:46 +00:00
|
|
|
import cy.agorise.crystalwallet.models.CryptoCurrency;
|
2017-11-02 02:31:31 +00:00
|
|
|
import cy.agorise.crystalwallet.models.CryptoCurrencyEquivalence;
|
2017-09-08 00:31:38 +00:00
|
|
|
import cy.agorise.crystalwallet.models.CryptoNetAccount;
|
2017-11-08 02:18:31 +00:00
|
|
|
import cy.agorise.crystalwallet.models.GeneralSetting;
|
2017-10-18 00:35:37 +00:00
|
|
|
import cy.agorise.crystalwallet.models.GrapheneAccountInfo;
|
2017-09-08 00:31:38 +00:00
|
|
|
|
|
|
|
/**
|
2017-09-13 21:52:36 +00:00
|
|
|
* Manage the Database
|
2017-09-08 00:31:38 +00:00
|
|
|
* Created by Henry Varona on 4/9/2017.
|
|
|
|
*/
|
|
|
|
|
2017-11-02 02:31:31 +00:00
|
|
|
@Database(entities = {
|
|
|
|
AccountSeed.class,
|
|
|
|
CryptoNetAccount.class,
|
|
|
|
CryptoCoinTransaction.class,
|
2018-01-18 02:49:42 +00:00
|
|
|
Contact.class,
|
2018-02-08 01:47:58 +00:00
|
|
|
ContactAddress.class,
|
2017-11-02 02:31:31 +00:00
|
|
|
CryptoCurrency.class,
|
|
|
|
CryptoCoinBalance.class,
|
|
|
|
GrapheneAccountInfo.class,
|
|
|
|
BitsharesAssetInfo.class,
|
2018-06-16 01:56:50 +00:00
|
|
|
BitsharesAccountNameCache.class,
|
2017-11-08 02:18:31 +00:00
|
|
|
CryptoCurrencyEquivalence.class,
|
|
|
|
GeneralSetting.class
|
2018-06-19 02:04:00 +00:00
|
|
|
}, version = 4, exportSchema = false)
|
2017-09-14 02:09:58 +00:00
|
|
|
@TypeConverters({Converters.class})
|
2017-09-08 00:31:38 +00:00
|
|
|
public abstract class CrystalDatabase extends RoomDatabase {
|
|
|
|
|
2017-09-10 23:13:32 +00:00
|
|
|
private static CrystalDatabase instance;
|
|
|
|
|
|
|
|
public abstract AccountSeedDao accountSeedDao();
|
|
|
|
public abstract CryptoNetAccountDao cryptoNetAccountDao();
|
2017-10-18 00:35:37 +00:00
|
|
|
public abstract GrapheneAccountInfoDao grapheneAccountInfoDao();
|
2017-09-13 16:12:22 +00:00
|
|
|
public abstract TransactionDao transactionDao();
|
2018-01-18 02:49:42 +00:00
|
|
|
public abstract ContactDao contactDao();
|
2017-10-15 02:02:55 +00:00
|
|
|
public abstract CryptoCoinBalanceDao cryptoCoinBalanceDao();
|
2017-10-16 00:23:44 +00:00
|
|
|
public abstract CryptoCurrencyDao cryptoCurrencyDao();
|
2017-10-19 02:46:09 +00:00
|
|
|
public abstract BitsharesAssetDao bitsharesAssetDao();
|
2018-06-17 02:17:27 +00:00
|
|
|
public abstract BitsharesAccountNameCacheDao bitsharesAccountNameCacheDao();
|
2017-11-02 02:31:31 +00:00
|
|
|
public abstract CryptoCurrencyEquivalenceDao cryptoCurrencyEquivalenceDao();
|
2017-11-08 02:18:31 +00:00
|
|
|
public abstract GeneralSettingDao generalSettingDao();
|
2017-09-10 23:13:32 +00:00
|
|
|
|
|
|
|
public static CrystalDatabase getAppDatabase(Context context) {
|
|
|
|
if (instance == null) {
|
|
|
|
instance =
|
|
|
|
Room.databaseBuilder(context,
|
|
|
|
CrystalDatabase.class, "CrystalWallet.db")
|
|
|
|
.allowMainThreadQueries()
|
2018-05-31 01:19:46 +00:00
|
|
|
.addMigrations(MIGRATION_2_3)
|
2018-06-16 01:56:50 +00:00
|
|
|
.addMigrations(MIGRATION_3_4)
|
2017-09-10 23:13:32 +00:00
|
|
|
.build();
|
|
|
|
}
|
|
|
|
return instance;
|
|
|
|
}
|
2018-05-31 01:19:46 +00:00
|
|
|
|
|
|
|
static final Migration MIGRATION_2_3 = new Migration(2, 3) {
|
|
|
|
@Override
|
|
|
|
public void migrate(SupportSQLiteDatabase database) {
|
|
|
|
database.execSQL("ALTER TABLE graphene_account ADD COLUMN upgraded_to_ltm INTEGER NOT NULL DEFAULT 0");
|
|
|
|
}
|
|
|
|
};
|
2018-06-16 01:56:50 +00:00
|
|
|
|
|
|
|
static final Migration MIGRATION_3_4 = new Migration(3, 4) {
|
|
|
|
@Override
|
|
|
|
public void migrate(SupportSQLiteDatabase database) {
|
|
|
|
database.execSQL("CREATE TABLE bitshares_account_name_cache ("
|
|
|
|
+"id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,"
|
|
|
|
+"account_id TEXT UNIQUE NOT NULL,"
|
|
|
|
+"name TEXT)");
|
|
|
|
|
|
|
|
database.execSQL("CREATE UNIQUE INDEX index_bitshares_account_name_cache_account_id ON bitshares_account_name_cache (account_id)");
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
};
|
2017-09-08 00:31:38 +00:00
|
|
|
}
|