package com.layoutxml.sabs.db.migration;

import android.arch.persistence.db.SupportSQLiteDatabase;
import android.arch.persistence.room.migration.Migration;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;

import java.util.Date;

public class Migration_16_17 extends Migration {

    public Migration_16_17(int startVersion, int endVersion) {
        super(startVersion, endVersion);
    }

    @Override
    public void migrate(SupportSQLiteDatabase database) {

        database.execSQL("CREATE TABLE PolicyPackage " +
                "(id TEXT PRIMARY KEY, " +
                "name TEXT NOT NULL, " +
                "createdAt INTEGER, " +
                "updatedAt INTEGER) ");

        Date currentDate = new Date();
        ContentValues contentValues = new ContentValues();
        contentValues.put("id", "default-policy");
        contentValues.put("name", "Default Policy");
        contentValues.put("createdAt", currentDate.getTime());
        contentValues.put("updatedAt", currentDate.getTime());
        database.insert("PolicyPackage", SQLiteDatabase.CONFLICT_REPLACE, contentValues);

        database.execSQL("CREATE TABLE AppPermission " +
                "(id INTEGER PRIMARY KEY, " +
                "packageName TEXT NOT NULL, " +
                "permissionName TEXT NOT NULL, " +
                "permissionStatus INTEGER DEFAULT 0, " +
                "policyPackageId TEXT DEFAULT 'default-policy', " +
                "FOREIGN KEY (policyPackageId) REFERENCES PolicyPackage(id))");
        database.execSQL("CREATE UNIQUE INDEX app_permission_policy_package_idx " +
                "ON AppPermission (packageName, permissionName, policyPackageId)");

        database.execSQL("CREATE TABLE DisabledPackage " +
                "(id INTEGER PRIMARY KEY, " +
                "packageName TEXT NOT NULL, " +
                "policyPackageId TEXT DEFAULT 'default-policy', " +
                "FOREIGN KEY (policyPackageId) REFERENCES PolicyPackage(id))");
        database.execSQL("CREATE UNIQUE INDEX disabled_package_policy_package_idx " +
                "ON DisabledPackage (packageName, policyPackageId)");
    }
}