mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-30 22:07:57 +01:00 
			
		
		
		
	Tables classes in Kotlin. Rename COLUMN -> COL
This commit is contained in:
		| @@ -21,21 +21,21 @@ class DbOpenHelper(context: Context) | ||||
|     } | ||||
|  | ||||
|     override fun onCreate(db: SQLiteDatabase) = with(db) { | ||||
|         execSQL(MangaTable.getCreateTableQuery()) | ||||
|         execSQL(ChapterTable.getCreateTableQuery()) | ||||
|         execSQL(MangaSyncTable.getCreateTableQuery()) | ||||
|         execSQL(CategoryTable.getCreateTableQuery()) | ||||
|         execSQL(MangaCategoryTable.getCreateTableQuery()) | ||||
|         execSQL(MangaTable.createTableQuery) | ||||
|         execSQL(ChapterTable.createTableQuery) | ||||
|         execSQL(MangaSyncTable.createTableQuery) | ||||
|         execSQL(CategoryTable.createTableQuery) | ||||
|         execSQL(MangaCategoryTable.createTableQuery) | ||||
|  | ||||
|         // DB indexes | ||||
|         execSQL(MangaTable.getCreateUrlIndexQuery()) | ||||
|         execSQL(MangaTable.getCreateFavoriteIndexQuery()) | ||||
|         execSQL(ChapterTable.getCreateMangaIdIndexQuery()) | ||||
|         execSQL(MangaTable.createUrlIndexQuery) | ||||
|         execSQL(MangaTable.createFavoriteIndexQuery) | ||||
|         execSQL(ChapterTable.createMangaIdIndexQuery) | ||||
|     } | ||||
|  | ||||
|     override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) { | ||||
|         if (oldVersion < 2) { | ||||
|             db.execSQL(ChapterTable.getSourceOrderUpdateQuery()) | ||||
|             db.execSQL(ChapterTable.sourceOrderUpdateQuery) | ||||
|         } | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -10,16 +10,16 @@ import eu.kanade.tachiyomi.data.database.tables.CategoryTable; | ||||
| @StorIOSQLiteType(table = CategoryTable.TABLE) | ||||
| public class Category implements Serializable { | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = CategoryTable.COLUMN_ID, key = true) | ||||
|     @StorIOSQLiteColumn(name = CategoryTable.COL_ID, key = true) | ||||
|     public Integer id; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = CategoryTable.COLUMN_NAME) | ||||
|     @StorIOSQLiteColumn(name = CategoryTable.COL_NAME) | ||||
|     public String name; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = CategoryTable.COLUMN_ORDER) | ||||
|     @StorIOSQLiteColumn(name = CategoryTable.COL_ORDER) | ||||
|     public int order; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = CategoryTable.COLUMN_FLAGS) | ||||
|     @StorIOSQLiteColumn(name = CategoryTable.COL_FLAGS) | ||||
|     public int flags; | ||||
|  | ||||
|     public Category() {} | ||||
|   | ||||
| @@ -14,34 +14,34 @@ import eu.kanade.tachiyomi.util.UrlUtil; | ||||
| @StorIOSQLiteType(table = ChapterTable.TABLE) | ||||
| public class Chapter implements Serializable { | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = ChapterTable.COLUMN_ID, key = true) | ||||
|     @StorIOSQLiteColumn(name = ChapterTable.COL_ID, key = true) | ||||
|     public Long id; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = ChapterTable.COLUMN_MANGA_ID) | ||||
|     @StorIOSQLiteColumn(name = ChapterTable.COL_MANGA_ID) | ||||
|     public Long manga_id; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = ChapterTable.COLUMN_URL) | ||||
|     @StorIOSQLiteColumn(name = ChapterTable.COL_URL) | ||||
|     public String url; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = ChapterTable.COLUMN_NAME) | ||||
|     @StorIOSQLiteColumn(name = ChapterTable.COL_NAME) | ||||
|     public String name; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = ChapterTable.COLUMN_READ) | ||||
|     @StorIOSQLiteColumn(name = ChapterTable.COL_READ) | ||||
|     public boolean read; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = ChapterTable.COLUMN_LAST_PAGE_READ) | ||||
|     @StorIOSQLiteColumn(name = ChapterTable.COL_LAST_PAGE_READ) | ||||
|     public int last_page_read; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = ChapterTable.COLUMN_DATE_FETCH) | ||||
|     @StorIOSQLiteColumn(name = ChapterTable.COL_DATE_FETCH) | ||||
|     public long date_fetch; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = ChapterTable.COLUMN_DATE_UPLOAD) | ||||
|     @StorIOSQLiteColumn(name = ChapterTable.COL_DATE_UPLOAD) | ||||
|     public long date_upload; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = ChapterTable.COLUMN_CHAPTER_NUMBER) | ||||
|     @StorIOSQLiteColumn(name = ChapterTable.COL_CHAPTER_NUMBER) | ||||
|     public float chapter_number; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = ChapterTable.COLUMN_SOURCE_ORDER) | ||||
|     @StorIOSQLiteColumn(name = ChapterTable.COL_SOURCE_ORDER) | ||||
|     public int source_order; | ||||
|  | ||||
|     public int status; | ||||
|   | ||||
| @@ -14,49 +14,49 @@ import eu.kanade.tachiyomi.util.UrlUtil; | ||||
| @StorIOSQLiteType(table = MangaTable.TABLE) | ||||
| public class Manga implements Serializable { | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = MangaTable.COLUMN_ID, key = true) | ||||
|     @StorIOSQLiteColumn(name = MangaTable.COL_ID, key = true) | ||||
|     public Long id; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = MangaTable.COLUMN_SOURCE) | ||||
|     @StorIOSQLiteColumn(name = MangaTable.COL_SOURCE) | ||||
|     public int source; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = MangaTable.COLUMN_URL) | ||||
|     @StorIOSQLiteColumn(name = MangaTable.COL_URL) | ||||
|     public String url; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = MangaTable.COLUMN_ARTIST) | ||||
|     @StorIOSQLiteColumn(name = MangaTable.COL_ARTIST) | ||||
|     public String artist; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = MangaTable.COLUMN_AUTHOR) | ||||
|     @StorIOSQLiteColumn(name = MangaTable.COL_AUTHOR) | ||||
|     public String author; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = MangaTable.COLUMN_DESCRIPTION) | ||||
|     @StorIOSQLiteColumn(name = MangaTable.COL_DESCRIPTION) | ||||
|     public String description; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = MangaTable.COLUMN_GENRE) | ||||
|     @StorIOSQLiteColumn(name = MangaTable.COL_GENRE) | ||||
|     public String genre; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = MangaTable.COLUMN_TITLE) | ||||
|     @StorIOSQLiteColumn(name = MangaTable.COL_TITLE) | ||||
|     public String title; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = MangaTable.COLUMN_STATUS) | ||||
|     @StorIOSQLiteColumn(name = MangaTable.COL_STATUS) | ||||
|     public int status; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = MangaTable.COLUMN_THUMBNAIL_URL) | ||||
|     @StorIOSQLiteColumn(name = MangaTable.COL_THUMBNAIL_URL) | ||||
|     public String thumbnail_url; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = MangaTable.COLUMN_FAVORITE) | ||||
|     @StorIOSQLiteColumn(name = MangaTable.COL_FAVORITE) | ||||
|     public boolean favorite; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = MangaTable.COLUMN_LAST_UPDATE) | ||||
|     @StorIOSQLiteColumn(name = MangaTable.COL_LAST_UPDATE) | ||||
|     public long last_update; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = MangaTable.COLUMN_INITIALIZED) | ||||
|     @StorIOSQLiteColumn(name = MangaTable.COL_INITIALIZED) | ||||
|     public boolean initialized; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = MangaTable.COLUMN_VIEWER) | ||||
|     @StorIOSQLiteColumn(name = MangaTable.COL_VIEWER) | ||||
|     public int viewer; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = MangaTable.COLUMN_CHAPTER_FLAGS) | ||||
|     @StorIOSQLiteColumn(name = MangaTable.COL_CHAPTER_FLAGS) | ||||
|     public int chapter_flags; | ||||
|  | ||||
|     public transient int unread; | ||||
|   | ||||
| @@ -8,13 +8,13 @@ import eu.kanade.tachiyomi.data.database.tables.MangaCategoryTable; | ||||
| @StorIOSQLiteType(table = MangaCategoryTable.TABLE) | ||||
| public class MangaCategory { | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = MangaCategoryTable.COLUMN_ID, key = true) | ||||
|     @StorIOSQLiteColumn(name = MangaCategoryTable.COL_ID, key = true) | ||||
|     public Long id; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = MangaCategoryTable.COLUMN_MANGA_ID) | ||||
|     @StorIOSQLiteColumn(name = MangaCategoryTable.COL_MANGA_ID) | ||||
|     public long manga_id; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = MangaCategoryTable.COLUMN_CATEGORY_ID) | ||||
|     @StorIOSQLiteColumn(name = MangaCategoryTable.COL_CATEGORY_ID) | ||||
|     public int category_id; | ||||
|  | ||||
|     public MangaCategory() {} | ||||
|   | ||||
| @@ -11,31 +11,31 @@ import eu.kanade.tachiyomi.data.mangasync.base.MangaSyncService; | ||||
| @StorIOSQLiteType(table = MangaSyncTable.TABLE) | ||||
| public class MangaSync implements Serializable { | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = MangaSyncTable.COLUMN_ID, key = true) | ||||
|     @StorIOSQLiteColumn(name = MangaSyncTable.COL_ID, key = true) | ||||
|     public Long id; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = MangaSyncTable.COLUMN_MANGA_ID) | ||||
|     @StorIOSQLiteColumn(name = MangaSyncTable.COL_MANGA_ID) | ||||
|     public long manga_id; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = MangaSyncTable.COLUMN_SYNC_ID) | ||||
|     @StorIOSQLiteColumn(name = MangaSyncTable.COL_SYNC_ID) | ||||
|     public int sync_id; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = MangaSyncTable.COLUMN_REMOTE_ID) | ||||
|     @StorIOSQLiteColumn(name = MangaSyncTable.COL_REMOTE_ID) | ||||
|     public int remote_id; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = MangaSyncTable.COLUMN_TITLE) | ||||
|     @StorIOSQLiteColumn(name = MangaSyncTable.COL_TITLE) | ||||
|     public String title; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = MangaSyncTable.COLUMN_LAST_CHAPTER_READ) | ||||
|     @StorIOSQLiteColumn(name = MangaSyncTable.COL_LAST_CHAPTER_READ) | ||||
|     public int last_chapter_read; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = MangaSyncTable.COLUMN_TOTAL_CHAPTERS) | ||||
|     @StorIOSQLiteColumn(name = MangaSyncTable.COL_TOTAL_CHAPTERS) | ||||
|     public int total_chapters; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = MangaSyncTable.COLUMN_SCORE) | ||||
|     @StorIOSQLiteColumn(name = MangaSyncTable.COL_SCORE) | ||||
|     public float score; | ||||
|  | ||||
|     @StorIOSQLiteColumn(name = MangaSyncTable.COLUMN_STATUS) | ||||
|     @StorIOSQLiteColumn(name = MangaSyncTable.COL_STATUS) | ||||
|     public int status; | ||||
|  | ||||
|     public boolean update; | ||||
|   | ||||
| @@ -13,7 +13,7 @@ interface CategoryQueries : DbProvider { | ||||
|             .listOfObjects(Category::class.java) | ||||
|             .withQuery(Query.builder() | ||||
|                     .table(CategoryTable.TABLE) | ||||
|                     .orderBy(CategoryTable.COLUMN_ORDER) | ||||
|                     .orderBy(CategoryTable.COL_ORDER) | ||||
|                     .build()) | ||||
|             .prepare() | ||||
|  | ||||
|   | ||||
| @@ -19,7 +19,7 @@ interface ChapterQueries : DbProvider { | ||||
|             .listOfObjects(Chapter::class.java) | ||||
|             .withQuery(Query.builder() | ||||
|                     .table(ChapterTable.TABLE) | ||||
|                     .where("${ChapterTable.COLUMN_MANGA_ID} = ?") | ||||
|                     .where("${ChapterTable.COL_MANGA_ID} = ?") | ||||
|                     .whereArgs(manga.id) | ||||
|                     .build()) | ||||
|             .prepare() | ||||
| @@ -43,11 +43,11 @@ interface ChapterQueries : DbProvider { | ||||
|                 .`object`(Chapter::class.java) | ||||
|                 .withQuery(Query.builder() | ||||
|                         .table(ChapterTable.TABLE) | ||||
|                         .where("${ChapterTable.COLUMN_MANGA_ID} = ? AND " + | ||||
|                                 "${ChapterTable.COLUMN_CHAPTER_NUMBER} > ? AND " + | ||||
|                                 "${ChapterTable.COLUMN_CHAPTER_NUMBER} <= ?") | ||||
|                         .where("${ChapterTable.COL_MANGA_ID} = ? AND " + | ||||
|                                 "${ChapterTable.COL_CHAPTER_NUMBER} > ? AND " + | ||||
|                                 "${ChapterTable.COL_CHAPTER_NUMBER} <= ?") | ||||
|                         .whereArgs(chapter.manga_id, chapterNumber, chapterNumber + 1) | ||||
|                         .orderBy(ChapterTable.COLUMN_CHAPTER_NUMBER) | ||||
|                         .orderBy(ChapterTable.COL_CHAPTER_NUMBER) | ||||
|                         .limit(1) | ||||
|                         .build()) | ||||
|                 .prepare() | ||||
| @@ -61,11 +61,11 @@ interface ChapterQueries : DbProvider { | ||||
|         return db.get() | ||||
|                 .`object`(Chapter::class.java) | ||||
|                 .withQuery(Query.builder().table(ChapterTable.TABLE) | ||||
|                         .where("${ChapterTable.COLUMN_MANGA_ID} = ? AND " + | ||||
|                                 "${ChapterTable.COLUMN_CHAPTER_NUMBER} < ? AND " + | ||||
|                                 "${ChapterTable.COLUMN_CHAPTER_NUMBER} >= ?") | ||||
|                         .where("${ChapterTable.COL_MANGA_ID} = ? AND " + | ||||
|                                 "${ChapterTable.COL_CHAPTER_NUMBER} < ? AND " + | ||||
|                                 "${ChapterTable.COL_CHAPTER_NUMBER} >= ?") | ||||
|                         .whereArgs(chapter.manga_id, chapterNumber, chapterNumber - 1) | ||||
|                         .orderBy(ChapterTable.COLUMN_CHAPTER_NUMBER + " DESC") | ||||
|                         .orderBy(ChapterTable.COL_CHAPTER_NUMBER + " DESC") | ||||
|                         .limit(1) | ||||
|                         .build()) | ||||
|                 .prepare() | ||||
| @@ -75,11 +75,11 @@ interface ChapterQueries : DbProvider { | ||||
|             .`object`(Chapter::class.java) | ||||
|             .withQuery(Query.builder() | ||||
|                     .table(ChapterTable.TABLE) | ||||
|                     .where("${ChapterTable.COLUMN_MANGA_ID} = ? AND " + | ||||
|                             "${ChapterTable.COLUMN_READ} = ? AND " + | ||||
|                             "${ChapterTable.COLUMN_CHAPTER_NUMBER} >= ?") | ||||
|                     .where("${ChapterTable.COL_MANGA_ID} = ? AND " + | ||||
|                             "${ChapterTable.COL_READ} = ? AND " + | ||||
|                             "${ChapterTable.COL_CHAPTER_NUMBER} >= ?") | ||||
|                     .whereArgs(manga.id, 0, 0) | ||||
|                     .orderBy(ChapterTable.COLUMN_CHAPTER_NUMBER) | ||||
|                     .orderBy(ChapterTable.COL_CHAPTER_NUMBER) | ||||
|                     .limit(1) | ||||
|                     .build()) | ||||
|             .prepare() | ||||
|   | ||||
| @@ -17,7 +17,7 @@ interface MangaCategoryQueries : DbProvider { | ||||
|     fun deleteOldMangasCategories(mangas: List<Manga>) = db.delete() | ||||
|             .byQuery(DeleteQuery.builder() | ||||
|                     .table(MangaCategoryTable.TABLE) | ||||
|                     .where("${MangaCategoryTable.COLUMN_MANGA_ID} IN (${Queries.placeholders(mangas.size)})") | ||||
|                     .where("${MangaCategoryTable.COL_MANGA_ID} IN (${Queries.placeholders(mangas.size)})") | ||||
|                     .whereArgs(*mangas.map { it.id }.toTypedArray()) | ||||
|                     .build()) | ||||
|             .prepare() | ||||
|   | ||||
| @@ -32,9 +32,9 @@ interface MangaQueries : DbProvider { | ||||
|             .listOfObjects(Manga::class.java) | ||||
|             .withQuery(Query.builder() | ||||
|                     .table(MangaTable.TABLE) | ||||
|                     .where("${MangaTable.COLUMN_FAVORITE} = ?") | ||||
|                     .where("${MangaTable.COL_FAVORITE} = ?") | ||||
|                     .whereArgs(1) | ||||
|                     .orderBy(MangaTable.COLUMN_TITLE) | ||||
|                     .orderBy(MangaTable.COL_TITLE) | ||||
|                     .build()) | ||||
|             .prepare() | ||||
|  | ||||
| @@ -42,7 +42,7 @@ interface MangaQueries : DbProvider { | ||||
|             .`object`(Manga::class.java) | ||||
|             .withQuery(Query.builder() | ||||
|                     .table(MangaTable.TABLE) | ||||
|                     .where("${MangaTable.COLUMN_URL} = ? AND ${MangaTable.COLUMN_SOURCE} = ?") | ||||
|                     .where("${MangaTable.COL_URL} = ? AND ${MangaTable.COL_SOURCE} = ?") | ||||
|                     .whereArgs(url, sourceId) | ||||
|                     .build()) | ||||
|             .prepare() | ||||
| @@ -51,7 +51,7 @@ interface MangaQueries : DbProvider { | ||||
|             .`object`(Manga::class.java) | ||||
|             .withQuery(Query.builder() | ||||
|                     .table(MangaTable.TABLE) | ||||
|                     .where("${MangaTable.COLUMN_ID} = ?") | ||||
|                     .where("${MangaTable.COL_ID} = ?") | ||||
|                     .whereArgs(id) | ||||
|                     .build()) | ||||
|             .prepare() | ||||
| @@ -67,7 +67,7 @@ interface MangaQueries : DbProvider { | ||||
|     fun deleteMangasNotInLibrary() = db.delete() | ||||
|             .byQuery(DeleteQuery.builder() | ||||
|                     .table(MangaTable.TABLE) | ||||
|                     .where("${MangaTable.COLUMN_FAVORITE} = ?") | ||||
|                     .where("${MangaTable.COL_FAVORITE} = ?") | ||||
|                     .whereArgs(0) | ||||
|                     .build()) | ||||
|             .prepare() | ||||
|   | ||||
| @@ -14,8 +14,8 @@ interface MangaSyncQueries : DbProvider { | ||||
|             .`object`(MangaSync::class.java) | ||||
|             .withQuery(Query.builder() | ||||
|                     .table(MangaSyncTable.TABLE) | ||||
|                     .where("${MangaSyncTable.COLUMN_MANGA_ID} = ? AND " + | ||||
|                             "${MangaSyncTable.COLUMN_SYNC_ID} = ?") | ||||
|                     .where("${MangaSyncTable.COL_MANGA_ID} = ? AND " + | ||||
|                             "${MangaSyncTable.COL_SYNC_ID} = ?") | ||||
|                     .whereArgs(manga.id, sync.id) | ||||
|                     .build()) | ||||
|             .prepare() | ||||
| @@ -24,7 +24,7 @@ interface MangaSyncQueries : DbProvider { | ||||
|             .listOfObjects(MangaSync::class.java) | ||||
|             .withQuery(Query.builder() | ||||
|                     .table(MangaSyncTable.TABLE) | ||||
|                     .where("${MangaSyncTable.COLUMN_MANGA_ID} = ?") | ||||
|                     .where("${MangaSyncTable.COL_MANGA_ID} = ?") | ||||
|                     .whereArgs(manga.id) | ||||
|                     .build()) | ||||
|             .prepare() | ||||
| @@ -38,7 +38,7 @@ interface MangaSyncQueries : DbProvider { | ||||
|     fun deleteMangaSyncForManga(manga: Manga) = db.delete() | ||||
|             .byQuery(DeleteQuery.builder() | ||||
|                     .table(MangaSyncTable.TABLE) | ||||
|                     .where("${MangaSyncTable.COLUMN_MANGA_ID} = ?") | ||||
|                     .where("${MangaSyncTable.COL_MANGA_ID} = ?") | ||||
|                     .whereArgs(manga.id) | ||||
|                     .build()) | ||||
|             .prepare() | ||||
|   | ||||
| @@ -8,41 +8,44 @@ import eu.kanade.tachiyomi.data.database.tables.MangaTable as Manga | ||||
| /** | ||||
|  * Query to get the manga from the library, with their categories and unread count. | ||||
|  */ | ||||
| val libraryQuery = | ||||
|     "SELECT M.*, COALESCE(MC.${MangaCategory.COLUMN_CATEGORY_ID}, 0) AS ${Manga.COLUMN_CATEGORY} " + | ||||
|     "FROM (" + | ||||
|         "SELECT ${Manga.TABLE}.*, COALESCE(C.unread, 0) AS ${Manga.COLUMN_UNREAD} " + | ||||
|         "FROM ${Manga.TABLE} " + | ||||
|         "LEFT JOIN (" + | ||||
|             "SELECT ${Chapter.COLUMN_MANGA_ID}, COUNT(*) AS unread " + | ||||
|             "FROM ${Chapter.TABLE} " + | ||||
|             "WHERE ${Chapter.COLUMN_READ} = 0 " + | ||||
|             "GROUP BY ${Chapter.COLUMN_MANGA_ID}" + | ||||
|         ") AS C " + | ||||
|         "ON ${Manga.COLUMN_ID} = C.${Chapter.COLUMN_MANGA_ID} " + | ||||
|         "WHERE ${Manga.COLUMN_FAVORITE} = 1 " + | ||||
|         "GROUP BY ${Manga.COLUMN_ID} " + | ||||
|         "ORDER BY ${Manga.COLUMN_TITLE}" + | ||||
|     ") AS M " + | ||||
|     "LEFT JOIN (" + | ||||
|         "SELECT * FROM ${MangaCategory.TABLE}) AS MC " + | ||||
|         "ON MC.${MangaCategory.COLUMN_MANGA_ID} = M.${Manga.COLUMN_ID}" | ||||
| val libraryQuery = """ | ||||
|     SELECT M.*, COALESCE(MC.${MangaCategory.COL_CATEGORY_ID}, 0) AS ${Manga.COL_CATEGORY} | ||||
|     FROM ( | ||||
|         SELECT ${Manga.TABLE}.*, COALESCE(C.unread, 0) AS ${Manga.COL_UNREAD} | ||||
|         FROM ${Manga.TABLE} | ||||
|         LEFT JOIN ( | ||||
|             SELECT ${Chapter.COL_MANGA_ID}, COUNT(*) AS unread | ||||
|             FROM ${Chapter.TABLE} | ||||
|             WHERE ${Chapter.COL_READ} = 0 | ||||
|             GROUP BY ${Chapter.COL_MANGA_ID} | ||||
|         ) AS C | ||||
|         ON ${Manga.COL_ID} = C.${Chapter.COL_MANGA_ID} | ||||
|         WHERE ${Manga.COL_FAVORITE} = 1 | ||||
|         GROUP BY ${Manga.COL_ID} | ||||
|         ORDER BY ${Manga.COL_TITLE} | ||||
|     ) AS M | ||||
|     LEFT JOIN ( | ||||
|         SELECT * FROM ${MangaCategory.TABLE}) AS MC | ||||
|         ON MC.${MangaCategory.COL_MANGA_ID} = M.${Manga.COL_ID} | ||||
| """ | ||||
|  | ||||
| /** | ||||
|  * Query to get the recent chapters of manga from the library up to a date. | ||||
|  */ | ||||
| fun getRecentsQuery() = | ||||
|     "SELECT ${Manga.TABLE}.${Manga.COLUMN_URL} as mangaUrl, * FROM ${Manga.TABLE} JOIN ${Chapter.TABLE} " + | ||||
|     "ON ${Manga.TABLE}.${Manga.COLUMN_ID} = ${Chapter.TABLE}.${Chapter.COLUMN_MANGA_ID} " + | ||||
|     "WHERE ${Manga.COLUMN_FAVORITE} = 1 AND ${Chapter.COLUMN_DATE_UPLOAD} > ? " + | ||||
|     "ORDER BY ${Chapter.COLUMN_DATE_UPLOAD} DESC" | ||||
| fun getRecentsQuery() = """ | ||||
|     SELECT ${Manga.TABLE}.${Manga.COL_URL} as mangaUrl, * FROM ${Manga.TABLE} JOIN ${Chapter.TABLE} | ||||
|     ON ${Manga.TABLE}.${Manga.COL_ID} = ${Chapter.TABLE}.${Chapter.COL_MANGA_ID} | ||||
|     WHERE ${Manga.COL_FAVORITE} = 1 AND ${Chapter.COL_DATE_UPLOAD} > ? | ||||
|     ORDER BY ${Chapter.COL_DATE_UPLOAD} DESC | ||||
| """ | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Query to get the categories for a manga. | ||||
|  */ | ||||
| fun getCategoriesForMangaQuery() = | ||||
|     "SELECT ${Category.TABLE}.* FROM ${Category.TABLE} " + | ||||
|     "JOIN ${MangaCategory.TABLE} ON ${Category.TABLE}.${Category.COLUMN_ID} = " + | ||||
|     "${MangaCategory.TABLE}.${MangaCategory.COLUMN_CATEGORY_ID} " + | ||||
|     "WHERE ${MangaCategory.COLUMN_MANGA_ID} = ?" | ||||
| fun getCategoriesForMangaQuery() = """ | ||||
|     SELECT ${Category.TABLE}.* FROM ${Category.TABLE} | ||||
|     JOIN ${MangaCategory.TABLE} ON ${Category.TABLE}.${Category.COL_ID} = | ||||
|     ${MangaCategory.TABLE}.${MangaCategory.COL_CATEGORY_ID} | ||||
|     WHERE ${MangaCategory.COL_MANGA_ID} = ? | ||||
| """ | ||||
| @@ -21,13 +21,13 @@ class ChapterProgressPutResolver : PutResolver<Chapter>() { | ||||
|  | ||||
|     fun mapToUpdateQuery(chapter: Chapter) = UpdateQuery.builder() | ||||
|             .table(ChapterTable.TABLE) | ||||
|             .where("${ChapterTable.COLUMN_ID} = ?") | ||||
|             .where("${ChapterTable.COL_ID} = ?") | ||||
|             .whereArgs(chapter.id) | ||||
|             .build() | ||||
|  | ||||
|     fun mapToContentValues(chapter: Chapter) = ContentValues(2).apply { | ||||
|         put(ChapterTable.COLUMN_READ, chapter.read) | ||||
|         put(ChapterTable.COLUMN_LAST_PAGE_READ, chapter.last_page_read) | ||||
|         put(ChapterTable.COL_READ, chapter.read) | ||||
|         put(ChapterTable.COL_LAST_PAGE_READ, chapter.last_page_read) | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -21,12 +21,12 @@ class ChapterSourceOrderPutResolver : PutResolver<Chapter>() { | ||||
|  | ||||
|     fun mapToUpdateQuery(chapter: Chapter) = UpdateQuery.builder() | ||||
|             .table(ChapterTable.TABLE) | ||||
|             .where("${ChapterTable.COLUMN_URL} = ? AND ${ChapterTable.COLUMN_MANGA_ID} = ?") | ||||
|             .where("${ChapterTable.COL_URL} = ? AND ${ChapterTable.COL_MANGA_ID} = ?") | ||||
|             .whereArgs(chapter.url, chapter.manga_id) | ||||
|             .build() | ||||
|  | ||||
|     fun mapToContentValues(chapter: Chapter) = ContentValues(1).apply { | ||||
|         put(ChapterTable.COLUMN_SOURCE_ORDER, chapter.source_order) | ||||
|         put(ChapterTable.COL_SOURCE_ORDER, chapter.source_order) | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -15,10 +15,10 @@ class LibraryMangaGetResolver : MangaStorIOSQLiteGetResolver() { | ||||
|     override fun mapFromCursor(cursor: Cursor): Manga { | ||||
|         val manga = super.mapFromCursor(cursor) | ||||
|  | ||||
|         val unreadColumn = cursor.getColumnIndex(MangaTable.COLUMN_UNREAD) | ||||
|         val unreadColumn = cursor.getColumnIndex(MangaTable.COL_UNREAD) | ||||
|         manga.unread = cursor.getInt(unreadColumn) | ||||
|  | ||||
|         val categoryColumn = cursor.getColumnIndex(MangaTable.COLUMN_CATEGORY) | ||||
|         val categoryColumn = cursor.getColumnIndex(MangaTable.COL_CATEGORY) | ||||
|         manga.category = cursor.getInt(categoryColumn) | ||||
|  | ||||
|         return manga | ||||
|   | ||||
| @@ -1,39 +0,0 @@ | ||||
| package eu.kanade.tachiyomi.data.database.tables; | ||||
|  | ||||
| import android.support.annotation.NonNull; | ||||
|  | ||||
| public class CategoryTable { | ||||
|  | ||||
|     @NonNull | ||||
|     public static final String TABLE = "categories"; | ||||
|  | ||||
|     @NonNull | ||||
|     public static final String COLUMN_ID = "_id"; | ||||
|  | ||||
|     @NonNull | ||||
|     public static final String COLUMN_NAME = "name"; | ||||
|  | ||||
|     @NonNull | ||||
|     public static final String COLUMN_ORDER = "sort"; | ||||
|  | ||||
|     @NonNull | ||||
|     public static final String COLUMN_FLAGS = "flags"; | ||||
|  | ||||
|     // This is just class with Meta Data, we don't need instances | ||||
|     private CategoryTable() { | ||||
|         throw new IllegalStateException("No instances please"); | ||||
|     } | ||||
|  | ||||
|     // Better than static final field -> allows VM to unload useless String | ||||
|     // Because you need this string only once per application life on the device | ||||
|     @NonNull | ||||
|     public static String getCreateTableQuery() { | ||||
|         return "CREATE TABLE " + TABLE + "(" | ||||
|                 + COLUMN_ID + " INTEGER NOT NULL PRIMARY KEY, " | ||||
|                 + COLUMN_NAME + " TEXT NOT NULL, " | ||||
|                 + COLUMN_ORDER + " INTEGER NOT NULL, " | ||||
|                 + COLUMN_FLAGS + " INTEGER NOT NULL" | ||||
|                 + ");"; | ||||
|  | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,23 @@ | ||||
| package eu.kanade.tachiyomi.data.database.tables | ||||
|  | ||||
| object CategoryTable { | ||||
|  | ||||
|     const val TABLE = "categories" | ||||
|  | ||||
|     const val COL_ID = "_id" | ||||
|  | ||||
|     const val COL_NAME = "name" | ||||
|  | ||||
|     const val COL_ORDER = "sort" | ||||
|  | ||||
|     const val COL_FLAGS = "flags" | ||||
|  | ||||
|     val createTableQuery: String | ||||
|         get() = """CREATE TABLE $TABLE( | ||||
|             $COL_ID INTEGER NOT NULL PRIMARY KEY, | ||||
|             $COL_NAME TEXT NOT NULL, | ||||
|             $COL_ORDER INTEGER NOT NULL, | ||||
|             $COL_FLAGS INTEGER NOT NULL | ||||
|             )""" | ||||
|  | ||||
| } | ||||
| @@ -1,73 +0,0 @@ | ||||
| package eu.kanade.tachiyomi.data.database.tables; | ||||
|  | ||||
| import android.support.annotation.NonNull; | ||||
|  | ||||
| public final class ChapterTable { | ||||
|  | ||||
|     @NonNull | ||||
|     public static final String TABLE = "chapters"; | ||||
|  | ||||
| 	@NonNull | ||||
| 	public static final String COLUMN_ID = "_id"; | ||||
|  | ||||
| 	@NonNull | ||||
| 	public static final String COLUMN_MANGA_ID = "manga_id"; | ||||
|  | ||||
| 	@NonNull | ||||
| 	public static final String COLUMN_URL = "url"; | ||||
|  | ||||
| 	@NonNull | ||||
| 	public static final String COLUMN_NAME = "name"; | ||||
|  | ||||
| 	@NonNull | ||||
| 	public static final String COLUMN_READ = "read"; | ||||
|  | ||||
| 	@NonNull | ||||
| 	public static final String COLUMN_DATE_FETCH = "date_fetch"; | ||||
|  | ||||
| 	@NonNull | ||||
| 	public static final String COLUMN_DATE_UPLOAD = "date_upload"; | ||||
|  | ||||
| 	@NonNull | ||||
| 	public static final String COLUMN_LAST_PAGE_READ = "last_page_read"; | ||||
|  | ||||
| 	@NonNull | ||||
| 	public static final String COLUMN_CHAPTER_NUMBER = "chapter_number"; | ||||
|  | ||||
| 	@NonNull | ||||
| 	public static final String COLUMN_SOURCE_ORDER = "source_order"; | ||||
|  | ||||
| 	private ChapterTable() throws InstantiationException { | ||||
| 		throw new InstantiationException("This class is not for instantiation"); | ||||
| 	} | ||||
|  | ||||
| 	@NonNull | ||||
| 	public static String getCreateTableQuery() { | ||||
| 		return "CREATE TABLE " + TABLE + "(" | ||||
| 				+ COLUMN_ID + " INTEGER NOT NULL PRIMARY KEY, " | ||||
| 				+ COLUMN_MANGA_ID + " INTEGER NOT NULL, " | ||||
| 				+ COLUMN_URL + " TEXT NOT NULL, " | ||||
| 				+ COLUMN_NAME + " TEXT NOT NULL, " | ||||
| 				+ COLUMN_READ + " BOOLEAN NOT NULL, " | ||||
| 				+ COLUMN_LAST_PAGE_READ + " INT NOT NULL, " | ||||
| 				+ COLUMN_CHAPTER_NUMBER + " FLOAT NOT NULL, " | ||||
| 				+ COLUMN_SOURCE_ORDER + " INTEGER NOT NULL, " | ||||
| 				+ COLUMN_DATE_FETCH + " LONG NOT NULL, " | ||||
| 				+ COLUMN_DATE_UPLOAD + " LONG NOT NULL, " | ||||
| 				+ "FOREIGN KEY(" + COLUMN_MANGA_ID + ") REFERENCES " + MangaTable.TABLE + "(" + MangaTable.COLUMN_ID + ") " | ||||
| 				+ "ON DELETE CASCADE" | ||||
| 				+ ");"; | ||||
| 	} | ||||
|  | ||||
| 	@NonNull | ||||
| 	public static String getCreateMangaIdIndexQuery() { | ||||
| 		return "CREATE INDEX " + TABLE + "_" + COLUMN_MANGA_ID + "_index ON " + TABLE + "(" + COLUMN_MANGA_ID + ");"; | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	@NonNull | ||||
| 	public static String getSourceOrderUpdateQuery() { | ||||
| 		return "ALTER TABLE " + TABLE + " ADD COLUMN " + COLUMN_SOURCE_ORDER + " INTEGER DEFAULT 0"; | ||||
| 	} | ||||
| 	 | ||||
| } | ||||
| @@ -0,0 +1,49 @@ | ||||
| package eu.kanade.tachiyomi.data.database.tables | ||||
|  | ||||
| object ChapterTable { | ||||
|  | ||||
|     const val TABLE = "chapters" | ||||
|  | ||||
|     const val COL_ID = "_id" | ||||
|  | ||||
|     const val COL_MANGA_ID = "manga_id" | ||||
|  | ||||
|     const val COL_URL = "url" | ||||
|  | ||||
|     const val COL_NAME = "name" | ||||
|  | ||||
|     const val COL_READ = "read" | ||||
|  | ||||
|     const val COL_DATE_FETCH = "date_fetch" | ||||
|  | ||||
|     const val COL_DATE_UPLOAD = "date_upload" | ||||
|  | ||||
|     const val COL_LAST_PAGE_READ = "last_page_read" | ||||
|  | ||||
|     const val COL_CHAPTER_NUMBER = "chapter_number" | ||||
|  | ||||
|     const val COL_SOURCE_ORDER = "source_order" | ||||
|  | ||||
|     val createTableQuery: String | ||||
|         get() = """CREATE TABLE $TABLE( | ||||
|             $COL_ID INTEGER NOT NULL PRIMARY KEY, | ||||
|             $COL_MANGA_ID INTEGER NOT NULL, | ||||
|             $COL_URL TEXT NOT NULL, | ||||
|             $COL_NAME TEXT NOT NULL, | ||||
|             $COL_READ BOOLEAN NOT NULL, | ||||
|             $COL_LAST_PAGE_READ INT NOT NULL, | ||||
|             $COL_CHAPTER_NUMBER FLOAT NOT NULL, | ||||
|             $COL_SOURCE_ORDER INTEGER NOT NULL, | ||||
|             $COL_DATE_FETCH LONG NOT NULL, | ||||
|             $COL_DATE_UPLOAD LONG NOT NULL, | ||||
|             FOREIGN KEY($COL_MANGA_ID) REFERENCES ${MangaTable.TABLE} (${MangaTable.COL_ID}) | ||||
|             ON DELETE CASCADE | ||||
|             )""" | ||||
|  | ||||
|     val createMangaIdIndexQuery: String | ||||
|         get() = "CREATE INDEX ${TABLE}_${COL_MANGA_ID}_index ON $TABLE($COL_MANGA_ID)" | ||||
|  | ||||
|     val sourceOrderUpdateQuery: String | ||||
|         get() = "ALTER TABLE $TABLE ADD COLUMN $COL_SOURCE_ORDER INTEGER DEFAULT 0" | ||||
|  | ||||
| } | ||||
| @@ -1,40 +0,0 @@ | ||||
| package eu.kanade.tachiyomi.data.database.tables; | ||||
|  | ||||
| import android.support.annotation.NonNull; | ||||
|  | ||||
| public class MangaCategoryTable { | ||||
|  | ||||
|     @NonNull | ||||
|     public static final String TABLE = "mangas_categories"; | ||||
|  | ||||
|     @NonNull | ||||
|     public static final String COLUMN_ID = "_id"; | ||||
|  | ||||
|     @NonNull | ||||
|     public static final String COLUMN_MANGA_ID = "manga_id"; | ||||
|  | ||||
|     @NonNull | ||||
|     public static final String COLUMN_CATEGORY_ID = "category_id"; | ||||
|  | ||||
|     // This is just class with Meta Data, we don't need instances | ||||
|     private MangaCategoryTable() { | ||||
|         throw new IllegalStateException("No instances please"); | ||||
|     } | ||||
|  | ||||
|     // Better than static final field -> allows VM to unload useless String | ||||
|     // Because you need this string only once per application life on the device | ||||
|     @NonNull | ||||
|     public static String getCreateTableQuery() { | ||||
|         return "CREATE TABLE " + TABLE + "(" | ||||
|                 + COLUMN_ID + " INTEGER NOT NULL PRIMARY KEY, " | ||||
|                 + COLUMN_MANGA_ID + " INTEGER NOT NULL, " | ||||
|                 + COLUMN_CATEGORY_ID + " INTEGER NOT NULL, " | ||||
|                 + "FOREIGN KEY(" + COLUMN_CATEGORY_ID + ") REFERENCES " + CategoryTable.TABLE + "(" + CategoryTable.COLUMN_ID + ") " | ||||
|                 + "ON DELETE CASCADE, " | ||||
|                 + "FOREIGN KEY(" + COLUMN_MANGA_ID + ") REFERENCES " + MangaTable.TABLE + "(" + MangaTable.COLUMN_ID + ") " | ||||
|                 + "ON DELETE CASCADE" | ||||
|                 + ");"; | ||||
|  | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -0,0 +1,24 @@ | ||||
| package eu.kanade.tachiyomi.data.database.tables | ||||
|  | ||||
| object MangaCategoryTable { | ||||
|  | ||||
|     const val TABLE = "mangas_categories" | ||||
|  | ||||
|     const val COL_ID = "_id" | ||||
|  | ||||
|     const val COL_MANGA_ID = "manga_id" | ||||
|  | ||||
|     const val COL_CATEGORY_ID = "category_id" | ||||
|  | ||||
|     val createTableQuery: String | ||||
|         get() = """CREATE TABLE $TABLE( | ||||
|             $COL_ID INTEGER NOT NULL PRIMARY KEY, | ||||
|             $COL_MANGA_ID INTEGER NOT NULL, | ||||
|             $COL_CATEGORY_ID INTEGER NOT NULL, | ||||
|             FOREIGN KEY($COL_CATEGORY_ID) REFERENCES ${CategoryTable.TABLE} (${CategoryTable.COL_ID}) | ||||
|             ON DELETE CASCADE, | ||||
|             FOREIGN KEY($COL_MANGA_ID) REFERENCES ${MangaTable.TABLE} (${MangaTable.COL_ID}) | ||||
|             ON DELETE CASCADE | ||||
|             )""" | ||||
|  | ||||
| } | ||||
| @@ -1,49 +0,0 @@ | ||||
| package eu.kanade.tachiyomi.data.database.tables; | ||||
|  | ||||
| import android.support.annotation.NonNull; | ||||
|  | ||||
| public final class MangaSyncTable { | ||||
|  | ||||
|     public static final String TABLE = "manga_sync"; | ||||
|  | ||||
|     public static final String COLUMN_ID = "_id"; | ||||
|  | ||||
|     public static final String COLUMN_MANGA_ID = "manga_id"; | ||||
|  | ||||
|     public static final String COLUMN_SYNC_ID = "sync_id"; | ||||
|  | ||||
|     public static final String COLUMN_REMOTE_ID = "remote_id"; | ||||
|  | ||||
|     public static final String COLUMN_TITLE = "title"; | ||||
|  | ||||
|     public static final String COLUMN_LAST_CHAPTER_READ = "last_chapter_read"; | ||||
|  | ||||
|     public static final String COLUMN_STATUS = "status"; | ||||
|  | ||||
|     public static final String COLUMN_SCORE = "score"; | ||||
|  | ||||
|     public static final String COLUMN_TOTAL_CHAPTERS = "total_chapters"; | ||||
|  | ||||
|     private MangaSyncTable() throws InstantiationException { | ||||
|         throw new InstantiationException("This class is not for instantiation"); | ||||
|     } | ||||
|  | ||||
|     @NonNull | ||||
|     public static String getCreateTableQuery() { | ||||
|         return "CREATE TABLE " + TABLE + "(" | ||||
|                 + COLUMN_ID + " INTEGER NOT NULL PRIMARY KEY, " | ||||
|                 + COLUMN_MANGA_ID + " INTEGER NOT NULL, " | ||||
|                 + COLUMN_SYNC_ID + " INTEGER NOT NULL, " | ||||
|                 + COLUMN_REMOTE_ID + " INTEGER NOT NULL, " | ||||
|                 + COLUMN_TITLE + " TEXT NOT NULL, " | ||||
|                 + COLUMN_LAST_CHAPTER_READ + " INTEGER NOT NULL, " | ||||
|                 + COLUMN_TOTAL_CHAPTERS + " INTEGER NOT NULL, " | ||||
|                 + COLUMN_STATUS + " INTEGER NOT NULL, " | ||||
|                 + COLUMN_SCORE + " FLOAT NOT NULL, " | ||||
|                 + "UNIQUE (" + COLUMN_MANGA_ID + ", " + COLUMN_SYNC_ID + ") ON CONFLICT REPLACE, " | ||||
|                 + "FOREIGN KEY(" + COLUMN_MANGA_ID + ") REFERENCES " + MangaTable.TABLE + "(" + MangaTable.COLUMN_ID + ") " | ||||
|                 + "ON DELETE CASCADE" | ||||
|                 + ");"; | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -0,0 +1,41 @@ | ||||
| package eu.kanade.tachiyomi.data.database.tables | ||||
|  | ||||
| object MangaSyncTable { | ||||
|  | ||||
|     const val TABLE = "manga_sync" | ||||
|  | ||||
|     const val COL_ID = "_id" | ||||
|  | ||||
|     const val COL_MANGA_ID = "manga_id" | ||||
|  | ||||
|     const val COL_SYNC_ID = "sync_id" | ||||
|  | ||||
|     const val COL_REMOTE_ID = "remote_id" | ||||
|  | ||||
|     const val COL_TITLE = "title" | ||||
|  | ||||
|     const val COL_LAST_CHAPTER_READ = "last_chapter_read" | ||||
|  | ||||
|     const val COL_STATUS = "status" | ||||
|  | ||||
|     const val COL_SCORE = "score" | ||||
|  | ||||
|     const val COL_TOTAL_CHAPTERS = "total_chapters" | ||||
|  | ||||
|     val createTableQuery: String | ||||
|         get() = """CREATE TABLE $TABLE( | ||||
|             $COL_ID INTEGER NOT NULL PRIMARY KEY, | ||||
|             $COL_MANGA_ID INTEGER NOT NULL, | ||||
|             $COL_SYNC_ID INTEGER NOT NULL, | ||||
|             $COL_REMOTE_ID INTEGER NOT NULL, | ||||
|             $COL_TITLE TEXT NOT NULL, | ||||
|             $COL_LAST_CHAPTER_READ INTEGER NOT NULL, | ||||
|             $COL_TOTAL_CHAPTERS INTEGER NOT NULL, | ||||
|             $COL_STATUS INTEGER NOT NULL, | ||||
|             $COL_SCORE FLOAT NOT NULL, | ||||
|             UNIQUE ($COL_MANGA_ID, $COL_SYNC_ID) ON CONFLICT REPLACE, | ||||
|             FOREIGN KEY($COL_MANGA_ID) REFERENCES ${MangaTable.TABLE} (${MangaTable.COL_ID}) | ||||
|             ON DELETE CASCADE | ||||
|             )""" | ||||
|  | ||||
| } | ||||
| @@ -1,98 +0,0 @@ | ||||
| package eu.kanade.tachiyomi.data.database.tables; | ||||
|  | ||||
| import android.support.annotation.NonNull; | ||||
|  | ||||
| public class MangaTable { | ||||
|  | ||||
|     @NonNull | ||||
|     public static final String TABLE = "mangas"; | ||||
|  | ||||
|     @NonNull | ||||
|     public static final String COLUMN_ID = "_id"; | ||||
|  | ||||
|     @NonNull | ||||
|     public static final String COLUMN_SOURCE = "source"; | ||||
|  | ||||
|     @NonNull | ||||
|     public static final String COLUMN_URL = "url"; | ||||
|  | ||||
|     @NonNull | ||||
|     public static final String COLUMN_ARTIST = "artist"; | ||||
|  | ||||
|     @NonNull | ||||
|     public static final String COLUMN_AUTHOR = "author" ; | ||||
|  | ||||
|     @NonNull | ||||
|     public static final String COLUMN_DESCRIPTION = "description"; | ||||
|  | ||||
|     @NonNull | ||||
|     public static final String COLUMN_GENRE = "genre"; | ||||
|  | ||||
|     @NonNull | ||||
|     public static final String COLUMN_TITLE = "title"; | ||||
|  | ||||
|     @NonNull | ||||
|     public static final String COLUMN_STATUS = "status"; | ||||
|  | ||||
|     @NonNull | ||||
|     public static final String COLUMN_THUMBNAIL_URL = "thumbnail_url"; | ||||
|  | ||||
|     @NonNull | ||||
|     public static final String COLUMN_FAVORITE = "favorite"; | ||||
|  | ||||
|     @NonNull | ||||
|     public static final String COLUMN_LAST_UPDATE = "last_update"; | ||||
|  | ||||
|     @NonNull | ||||
|     public static final String COLUMN_INITIALIZED = "initialized"; | ||||
|  | ||||
|     @NonNull | ||||
|     public static final String COLUMN_VIEWER = "viewer"; | ||||
|  | ||||
|     @NonNull | ||||
|     public static final String COLUMN_CHAPTER_FLAGS = "chapter_flags"; | ||||
|  | ||||
|     @NonNull | ||||
|     public static final String COLUMN_UNREAD = "unread"; | ||||
|  | ||||
|     @NonNull | ||||
|     public static final String COLUMN_CATEGORY = "category"; | ||||
|  | ||||
|     // This is just class with Meta Data, we don't need instances | ||||
|     private MangaTable() { | ||||
|         throw new IllegalStateException("No instances please"); | ||||
|     } | ||||
|  | ||||
|     // Better than static final field -> allows VM to unload useless String | ||||
|     // Because you need this string only once per application life on the device | ||||
|     @NonNull | ||||
|     public static String getCreateTableQuery() { | ||||
|         return "CREATE TABLE " + TABLE + "(" | ||||
|                 + COLUMN_ID + " INTEGER NOT NULL PRIMARY KEY, " | ||||
|                 + COLUMN_SOURCE + " INTEGER NOT NULL, " | ||||
|                 + COLUMN_URL + " TEXT NOT NULL, " | ||||
|                 + COLUMN_ARTIST + " TEXT, " | ||||
|                 + COLUMN_AUTHOR + " TEXT, " | ||||
|                 + COLUMN_DESCRIPTION + " TEXT, " | ||||
|                 + COLUMN_GENRE + " TEXT, " | ||||
|                 + COLUMN_TITLE + " TEXT NOT NULL, " | ||||
|                 + COLUMN_STATUS + " INTEGER NOT NULL, " | ||||
|                 + COLUMN_THUMBNAIL_URL + " TEXT, " | ||||
|                 + COLUMN_FAVORITE + " INTEGER NOT NULL, " | ||||
|                 + COLUMN_LAST_UPDATE + " LONG, " | ||||
|                 + COLUMN_INITIALIZED + " BOOLEAN NOT NULL, " | ||||
|                 + COLUMN_VIEWER + " INTEGER NOT NULL, " | ||||
|                 + COLUMN_CHAPTER_FLAGS + " INTEGER NOT NULL" | ||||
|                 + ");"; | ||||
|  | ||||
|     } | ||||
|  | ||||
|     public static String getCreateUrlIndexQuery() { | ||||
|         return "CREATE INDEX " + TABLE + "_" + COLUMN_URL + "_index ON " + TABLE + "(" + COLUMN_URL + ");"; | ||||
|     } | ||||
|  | ||||
|     public static String getCreateFavoriteIndexQuery() { | ||||
|         return "CREATE INDEX " + TABLE + "_" + COLUMN_FAVORITE + "_index ON " + TABLE + "(" + COLUMN_FAVORITE + ");"; | ||||
|  | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,65 @@ | ||||
| package eu.kanade.tachiyomi.data.database.tables | ||||
|  | ||||
| object MangaTable { | ||||
|  | ||||
|     const val TABLE = "mangas" | ||||
|  | ||||
|     const val COL_ID = "_id" | ||||
|  | ||||
|     const val COL_SOURCE = "source" | ||||
|  | ||||
|     const val COL_URL = "url" | ||||
|  | ||||
|     const val COL_ARTIST = "artist" | ||||
|  | ||||
|     const val COL_AUTHOR = "author" | ||||
|  | ||||
|     const val COL_DESCRIPTION = "description" | ||||
|  | ||||
|     const val COL_GENRE = "genre" | ||||
|  | ||||
|     const val COL_TITLE = "title" | ||||
|  | ||||
|     const val COL_STATUS = "status" | ||||
|  | ||||
|     const val COL_THUMBNAIL_URL = "thumbnail_url" | ||||
|  | ||||
|     const val COL_FAVORITE = "favorite" | ||||
|  | ||||
|     const val COL_LAST_UPDATE = "last_update" | ||||
|  | ||||
|     const val COL_INITIALIZED = "initialized" | ||||
|  | ||||
|     const val COL_VIEWER = "viewer" | ||||
|  | ||||
|     const val COL_CHAPTER_FLAGS = "chapter_flags" | ||||
|  | ||||
|     const val COL_UNREAD = "unread" | ||||
|  | ||||
|     const val COL_CATEGORY = "category" | ||||
|  | ||||
|     val createTableQuery: String | ||||
|         get() = """CREATE TABLE $TABLE( | ||||
|             $COL_ID INTEGER NOT NULL PRIMARY KEY, | ||||
|             $COL_SOURCE INTEGER NOT NULL, | ||||
|             $COL_URL TEXT NOT NULL, | ||||
|             $COL_ARTIST TEXT, | ||||
|             $COL_AUTHOR TEXT, | ||||
|             $COL_DESCRIPTION TEXT, | ||||
|             $COL_GENRE TEXT, | ||||
|             $COL_TITLE TEXT NOT NULL, | ||||
|             $COL_STATUS INTEGER NOT NULL, | ||||
|             $COL_THUMBNAIL_URL TEXT, | ||||
|             $COL_FAVORITE INTEGER NOT NULL, | ||||
|             $COL_LAST_UPDATE LONG, | ||||
|             $COL_INITIALIZED BOOLEAN NOT NULL, | ||||
|             $COL_VIEWER INTEGER NOT NULL, | ||||
|             $COL_CHAPTER_FLAGS INTEGER NOT NULL | ||||
|             )""" | ||||
|  | ||||
|     val createUrlIndexQuery: String | ||||
|         get() = "CREATE INDEX ${TABLE}_${COL_URL}_index ON $TABLE($COL_URL)" | ||||
|  | ||||
|     val createFavoriteIndexQuery: String | ||||
|         get() = "CREATE INDEX ${TABLE}_${COL_FAVORITE}_index ON $TABLE($COL_FAVORITE)" | ||||
| } | ||||
		Reference in New Issue
	
	Block a user