package fr.mobdev.peertubelive.manager import android.content.ContentValues import android.content.Context import android.database.Cursor import android.database.sqlite.SQLiteDatabase import android.database.sqlite.SQLiteOpenHelper class DatabaseHelper(context: Context) : SQLiteOpenHelper(context, DB_NAME, null, 2) { companion object { const val DB_NAME: String = "peeriscope.db" const val TABLE_CREDS: String = "Credentials" const val CREDS_USERNAME: String = "Username" const val CREDS_BASE_URL: String = "Instance" const val CREDS_CLIENT_ID: String = "ClientID" const val CREDS_CLIENT_SECRET: String = "ClientSecret" const val CREDS_ACCESS_TOKEN: String = "AccessToken" const val CREDS_TOKEN_TYPE: String = "TokenType" const val CREDS_EXPIRES: String = "Expires" const val CREDS_REFRESH_TOKEN: String = "RefreshToken" const val CREDS_REFRESH_EXPIRES: String = "RefreshTokenExpires" const val TABLE_STREAM_SETTINGS: String = "Settings" const val SETS_TITLE: String = "Title" const val SETS_CATEGORY: String = "Category" const val SETS_PRIVACY : String = "Privacy" const val SETS_LANGUAGE : String = "Language" const val SETS_LICENCE : String = "Licence" const val SETS_COMMENTS : String = "Comments" const val SETS_DOWNLOAD : String = "Download" const val SETS_REPLAY : String = "Replay" const val SETS_NSFW : String = "Nsfw" } override fun onCreate(db: SQLiteDatabase?) { db?.execSQL("CREATE TABLE IF NOT EXISTS $TABLE_CREDS (id INTEGER PRIMARY KEY, $CREDS_USERNAME TEXT, $CREDS_BASE_URL TEXT, " + "$CREDS_CLIENT_ID TEXT, $CREDS_CLIENT_SECRET TEXT, $CREDS_ACCESS_TOKEN TEXT, " + "$CREDS_TOKEN_TYPE TEXT, $CREDS_EXPIRES INTEGER, $CREDS_REFRESH_TOKEN TEXT, $CREDS_REFRESH_EXPIRES INTEGER);") db?.execSQL("CREATE TABLE IF NOT EXISTS $TABLE_STREAM_SETTINGS (id INTEGER PRIMARY KEY, $SETS_TITLE TEXT, $SETS_CATEGORY INTEGER, $SETS_PRIVACY INTEGER, " + "$SETS_LANGUAGE TEXT, $SETS_LICENCE INTEGER, $SETS_COMMENTS INTEGER, " + "$SETS_DOWNLOAD INTEGER, $SETS_REPLAY INTEGER, $SETS_NSFW INTEGER);") val values = ContentValues() values.put("id",1) values.put(SETS_TITLE,"Live") values.put(SETS_COMMENTS,true) values.put(SETS_DOWNLOAD,true) values.put(SETS_NSFW,false) values.put(SETS_REPLAY,false) db?.insert(TABLE_STREAM_SETTINGS,null,values) } override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) { db?.execSQL("ALTER TABLE $TABLE_CREDS add column $CREDS_REFRESH_EXPIRES INTEGER;") } fun insert(table: String, values: ContentValues): Long { return writableDatabase.insert(table,null,values) } fun update(table: String, values: ContentValues, whereClause: String?, whereArgs: Array): Int { return writableDatabase.update(table,values,whereClause,whereArgs) } fun delete(table: String, whereClause: String?, whereArgs: Array?): Int { return writableDatabase.delete(table,whereClause,whereArgs) } fun query(table: String, columns: Array?, whereClause: String?, whereArgs: Array?): Cursor { return readableDatabase.query(table,columns,whereClause,whereArgs,null,null,null) } }