/* Copyright 2017 Andrew Dawson * * This file is a part of Tusky. * * This program is free software; you can redistribute it and/or modify it under the terms of the * GNU General Public License as published by the Free Software Foundation; either version 3 of the * License, or (at your option) any later version. * * Tusky is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General * Public License for more details. * * You should have received a copy of the GNU General Public License along with Tusky; if not, * see . */ package com.keylesspalace.tusky.db; import android.arch.persistence.db.SupportSQLiteDatabase; import android.arch.persistence.room.Database; import android.arch.persistence.room.RoomDatabase; import android.arch.persistence.room.migration.Migration; import android.support.annotation.NonNull; /** * DB version & declare DAO */ @Database(entities = {TootEntity.class, AccountEntity.class}, version = 5, exportSchema = false) public abstract class AppDatabase extends RoomDatabase { public abstract TootDao tootDao(); public abstract AccountDao accountDao(); public static final Migration MIGRATION_2_3 = new Migration(2, 3) { @Override public void migrate(@NonNull SupportSQLiteDatabase database) { database.execSQL("CREATE TABLE TootEntity2 (uid INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, text TEXT, urls TEXT, contentWarning TEXT);"); database.execSQL("INSERT INTO TootEntity2 SELECT * FROM TootEntity;"); database.execSQL("DROP TABLE TootEntity;"); database.execSQL("ALTER TABLE TootEntity2 RENAME TO TootEntity;"); } }; public static final Migration MIGRATION_3_4 = new Migration(3, 4) { @Override public void migrate(@NonNull SupportSQLiteDatabase database) { database.execSQL("ALTER TABLE TootEntity ADD COLUMN inReplyToId TEXT"); database.execSQL("ALTER TABLE TootEntity ADD COLUMN inReplyToText TEXT"); database.execSQL("ALTER TABLE TootEntity ADD COLUMN inReplyToUsername TEXT"); database.execSQL("ALTER TABLE TootEntity ADD COLUMN visibility INTEGER"); } }; public static final Migration MIGRATION_4_5 = new Migration(4, 5) { @Override public void migrate(@NonNull SupportSQLiteDatabase database) { database.execSQL("CREATE TABLE `AccountEntity` (" + "`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, " + "`domain` TEXT NOT NULL, `accessToken` TEXT NOT NULL, " + "`isActive` INTEGER NOT NULL, `accountId` TEXT NOT NULL, " + "`username` TEXT NOT NULL, `displayName` TEXT NOT NULL, " + "`profilePictureUrl` TEXT NOT NULL, " + "`notificationsEnabled` INTEGER NOT NULL, " + "`notificationsMentioned` INTEGER NOT NULL, " + "`notificationsFollowed` INTEGER NOT NULL, " + "`notificationsReblogged` INTEGER NOT NULL, " + "`notificationsFavorited` INTEGER NOT NULL, " + "`notificationSound` INTEGER NOT NULL, " + "`notificationVibration` INTEGER NOT NULL, " + "`notificationLight` INTEGER NOT NULL, " + "`lastNotificationId` TEXT NOT NULL, " + "`activeNotifications` TEXT NOT NULL)"); database.execSQL("CREATE UNIQUE INDEX `index_AccountEntity_domain_accountId` ON `AccountEntity` (`domain`, `accountId`)"); } }; }