Adds functional search using sqlite full text search syntax.

This commit is contained in:
2021-05-01 17:53:48 -07:00
committed by Tom Hicks
parent e02e4ec399
commit a1fab9d399
8 changed files with 87 additions and 37 deletions

View File

@@ -4,7 +4,10 @@ import android.app.Application;
import android.content.Context;
import android.content.res.Configuration;
import androidx.annotation.NonNull;
import androidx.room.Room;
import androidx.room.migration.Migration;
import androidx.sqlite.db.SupportSQLiteDatabase;
import com.facebook.flipper.android.AndroidFlipperClient;
import com.facebook.flipper.android.utils.FlipperUtils;
@@ -50,6 +53,7 @@ public class MonsterCardsApplication extends Application {
}
m_db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "monsters")
.addMigrations(MIGRATION_1_2)
.fallbackToDestructiveMigrationOnDowngrade()
.build();
m_monsterLibraryRepository = new MonsterRepository(m_db);
@@ -69,4 +73,17 @@ public class MonsterCardsApplication extends Application {
public void onLowMemory() {
super.onLowMemory();
}
private static final Migration MIGRATION_1_2 = new Migration(1, 2) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase database) {
// rename table monster to monsters
database.execSQL("ALTER TABLE monster RENAME TO monsters");
// create the fts view
database.execSQL("CREATE VIRTUAL TABLE IF NOT EXISTS `monsters_fts` USING FTS4(`name` TEXT, `size` TEXT, `type` TEXT, `subtype` TEXT, `alignment` TEXT, content=`monsters`)");
// build the initial full text search index
database.execSQL("INSERT INTO monsters_fts(monsters_fts) VALUES('rebuild')");
}
};
}