SQLiteDatabaseHelper.kt (1358B) - raw
1 package me.rhunk.snapenhance.common.util 2 3 import android.annotation.SuppressLint 4 import android.database.sqlite.SQLiteDatabase 5 import me.rhunk.snapenhance.common.logger.AbstractLogger 6 7 object SQLiteDatabaseHelper { 8 @SuppressLint("Range") 9 fun createTablesFromSchema(sqLiteDatabase: SQLiteDatabase, databaseSchema: Map<String, List<String>>) { 10 databaseSchema.forEach { (tableName, columns) -> 11 sqLiteDatabase.execSQL("CREATE TABLE IF NOT EXISTS $tableName (${columns.joinToString(", ")})") 12 13 val cursor = sqLiteDatabase.rawQuery("PRAGMA table_info($tableName)", null) 14 val existingColumns = mutableListOf<String>() 15 while (cursor.moveToNext()) { 16 existingColumns.add(cursor.getString(cursor.getColumnIndex("name")) + " " + cursor.getString(cursor.getColumnIndex("type"))) 17 } 18 cursor.close() 19 20 val newColumns = columns.filter { 21 existingColumns.none { existingColumn -> it.startsWith(existingColumn) } 22 } 23 24 if (newColumns.isEmpty()) return@forEach 25 26 AbstractLogger.directDebug("Schema for table $tableName has changed") 27 sqLiteDatabase.execSQL("DROP TABLE $tableName") 28 sqLiteDatabase.execSQL("CREATE TABLE IF NOT EXISTS $tableName (${columns.joinToString(", ")})") 29 } 30 } 31 }