Proyectos de Subversion Android Microlearning - Inconcert

Rev

Rev 14 | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

package com.cesams.twogetskills.inconcert.dao;

import android.content.Context;

import androidx.room.Room;
import androidx.room.migration.Migration;
import androidx.sqlite.db.SupportSQLiteDatabase;

import com.cesams.twogetskills.inconcert.Constants;

public class DatabaseHelper {


    private static DatabaseHelper _INSTANCE = null;
    private AppDatabase appDatabase;

    // other instance variables can be here

    private DatabaseHelper(Context context) {
        appDatabase = Room.databaseBuilder(
                context.getApplicationContext(),
                AppDatabase.class, Constants.DATABASE_FILENAME
        ).allowMainThreadQueries().addMigrations(MIGRATION_1_2).fallbackToDestructiveMigration().addMigrations(MIGRATION_2_3).fallbackToDestructiveMigration()
                .build();
    };

    static final Migration MIGRATION_1_2 = new Migration(1, 2) {
        @Override
        public void migrate(SupportSQLiteDatabase database) {
            database.execSQL("CREATE TABLE `tb_notification` (`id` INTEGER NOT NULL, "
                    + "`title` TEXT,`date` TEXT,`description` TEXT, viewed TEXT, url TEXT, PRIMARY KEY(`id`))");

            database.execSQL("ALTER TABLE `tb_capsules`"
                    + "ADD COLUMN added_on TEXT");

            database.execSQL("ALTER TABLE `tb_capsules`"
                    + "ADD COLUMN updated_on TEXT");

            database.execSQL("ALTER TABLE `tb_topics`"
                    + "ADD COLUMN added_on TEXT");

            database.execSQL("ALTER TABLE `tb_topics`"
                    + "ADD COLUMN updated_on TEXT");


        }
    };

    static final Migration MIGRATION_2_3 = new Migration(2, 3) {
        @Override
        public void migrate(SupportSQLiteDatabase database) {
            database.execSQL("ALTER TABLE `tb_capsules`"
                    + "ADD COLUMN link_comments TEXT");

            database.execSQL("ALTER TABLE `tb_capsules`"
                    + "ADD COLUMN link_comment_add TEXT");

            database.execSQL("ALTER TABLE `tb_capsules`"
                    + "ADD COLUMN total_comments INTEGER NOT NULL DEFAULT 0");

            database.execSQL("ALTER TABLE `tb_capsules`"
                    + "ADD COLUMN total_rating INTEGER NOT NULL DEFAULT 0");

            database.execSQL("CREATE TABLE `learning_config` (`id` INTEGER NOT NULL, "
                    + "`title` TEXT,`now` TEXT, PRIMARY KEY(`id`))");


        }
    };


    public static DatabaseHelper getInstance(Context context) {
        if (_INSTANCE == null) {
            _INSTANCE = new DatabaseHelper(context);
        }
        return(_INSTANCE);
    }

    public AppDatabase getAppDatabase() {
        return appDatabase;
    }
}