import net.ktnx.mobileledger.dao.TransactionDAO;
import net.ktnx.mobileledger.utils.Logger;
+import org.jetbrains.annotations.NotNull;
+
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Locale;
+import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
TransactionAccount.class
})
abstract public class DB extends RoomDatabase {
- public static final int REVISION = 61;
+ public static final int REVISION = 66;
public static final String DB_NAME = "MoLe.db";
public static final MutableLiveData<Boolean> initComplete = new MutableLiveData<>(false);
private static DB instance;
+ private static void fixTransactionDescriptionUpper(
+ @NonNull @NotNull SupportSQLiteDatabase database) {
+ try (Cursor c = database.query("SELECT id, description FROM transactions")) {
+ while (c.moveToNext()) {
+ final long id = c.getLong(0);
+ final String description = c.getString(1);
+ database.execSQL("UPDATE transactions SET description_uc=? WHERE id=?",
+ new Object[]{description.toUpperCase(), id
+ });
+ }
+ }
+ }
public static DB get() {
if (instance != null)
return instance;
multiVersionMigration(30, 32), multiVersionMigration(32, 34),
multiVersionMigration(34, 40), singleVersionMigration(41),
multiVersionMigration(41, 58), singleVersionMigration(59),
- singleVersionMigration(60), singleVersionMigration(61)
+ singleVersionMigration(60), singleVersionMigration(61),
+ singleVersionMigration(62), singleVersionMigration(63),
+ singleVersionMigration(64), new Migration(64, 65) {
+ @Override
+ public void migrate(@NonNull @NotNull SupportSQLiteDatabase database) {
+ fixTransactionDescriptionUpper(database);
+ }
+ }, new Migration(64, 66) {
+ @Override
+ public void migrate(@NonNull @NotNull SupportSQLiteDatabase database) {
+ fixTransactionDescriptionUpper(database);
+ }
+ }, new Migration(65, 66) {
+ @Override
+ public void migrate(@NonNull @NotNull SupportSQLiteDatabase database) {
+ fixTransactionDescriptionUpper(database);
+ }
+ }
})
.addCallback(new Callback() {
@Override
}
}
}
+ if (toVersion == 63) {
+ try (Cursor c = db.query("SELECT id FROM templates")) {
+ while (c.moveToNext()) {
+ db.execSQL("UPDATE templates SET uuid=? WHERE id=?",
+ new Object[]{UUID.randomUUID().toString(), c.getLong(0)});
+ }
+ }
+ }
}
};
}
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();
+ }
}