package com.android.example.leanback.search; import android.app.SearchManager; import android.database.sqlite.SQLiteDatabase; import android.net.Uri; public class UniversalSearchContract extends AbstractContract { /*package*/ static final String AUTHORITY = "com.android.example.leanback.search"; /*package*/ static final Uri BASE_URI = Uri.parse("content://" + AUTHORITY); protected UniversalSearchContract() { } public static class Video extends Table { /*package*/ static final String TABLE_NAME = "video"; public static final Uri CONTENT_URI = Uri.withAppendedPath(BASE_URI, TABLE_NAME); public static final String ID = _ID; public static final String TITLE = "title"; public static final String DESCRIPTION = "description"; public static final String IMAGE = "image"; public static final String YEAR = "year"; public static final String DURATION = "duration"; public static final String PRICE_RENT = "price_rent"; public static final String PRICE_BUY = "price_buy"; @Override /*package*/ String name() { return TABLE_NAME; } @Override void onCreate(SQLiteDatabase db) { Ddl.builder() .create(Ddl.Type.TABLE, name()) .columnDef( ID, TYPE_PRIMARY_KEY, TITLE, TYPE_TEXT, DESCRIPTION, TYPE_TEXT, IMAGE, TYPE_TEXT, YEAR, TYPE_INTEGER, DURATION, TYPE_INTEGER, PRICE_RENT, TYPE_INTEGER, PRICE_BUY, TYPE_INTEGER ) .execSql(db); } @Override void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Ddl.builder().drop(Ddl.Type.TABLE, name()).execSql(db); } } public static class VideoFts extends Table { /*package*/ static final String TABLE_NAME = "fts"; public static final Uri CONTENT_URI = Uri.withAppendedPath(BASE_URI, TABLE_NAME); public static final String ID = "docid"; public static final String FTS_TITLE = "FTS_" + Video.TITLE; public static final String FTS_DESCRIPTION = "FTS_" + Video.DESCRIPTION; @Override /*package*/ String name() { return TABLE_NAME; } @Override void onCreate(SQLiteDatabase db) { Ddl.builder() .create(Ddl.Type.VIRTUAL_TABLE, name()).append(" USING fts3") .columnDef( FTS_TITLE, TYPE_TEXT, FTS_DESCRIPTION, TYPE_TEXT ) .execSql(db); } @Override void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Ddl.builder().drop(Ddl.Type.VIRTUAL_TABLE, name()).execSql(db); } } public static class SearchView extends Table { /*package*/ static final String NAME = "search"; public static final Uri CONTENT_URI = BASE_URI.buildUpon() .appendPath(NAME).appendPath(SearchManager.SUGGEST_URI_PATH_QUERY).build(); @Override String name() { return NAME; } @Override void onCreate(SQLiteDatabase db) { Ddl.builder() .create(Ddl.Type.VIEW, name()) .columnList(Video.TABLE_NAME + ".*", VideoFts.FTS_TITLE) .from(Video.TABLE_NAME) .join(VideoFts.TABLE_NAME, Video.TABLE_NAME + "." + Video.ID + "=" + VideoFts.TABLE_NAME + "." + VideoFts.ID) .execSql(db); } @Override void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Ddl.builder().drop(Ddl.Type.VIEW, name()).execSql(db); } } } // EOF