mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +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