mirror of
https://github.com/gotify/android.git
synced 2026-05-23 13:49:27 +08:00
186 lines
5.7 KiB
Kotlin
186 lines
5.7 KiB
Kotlin
package com.github.gotify.service
|
|
|
|
import android.content.ContentValues
|
|
import android.content.Context
|
|
import android.database.sqlite.SQLiteDatabase
|
|
import android.database.sqlite.SQLiteOpenHelper
|
|
|
|
private val DB_NAME = "gotify_service"
|
|
private val DB_VERSION = 1
|
|
|
|
class MessagingDatabase(context: Context) : SQLiteOpenHelper(context, DB_NAME, null, DB_VERSION){
|
|
private val CREATE_TABLE_APPS = "CREATE TABLE apps (" +
|
|
"package_name TEXT," +
|
|
"uid INT," +
|
|
"service_name TEXT," +
|
|
"app_id INT," +
|
|
"token TEXT," +
|
|
"PRIMARY KEY (package_name));"
|
|
private val TABLE_APPS = "apps"
|
|
private val FIELD_PACKAGE_NAME = "package_name"
|
|
private val FIELD_UID = "uid"
|
|
private val FIELD_SERVICE_NAME = "service_name"
|
|
private val FIELD_APP_ID = "app_id"
|
|
private val FIELD_TOKEN = "token"
|
|
|
|
override fun onCreate(db: SQLiteDatabase){
|
|
db.execSQL(CREATE_TABLE_APPS);
|
|
}
|
|
|
|
override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
|
|
throw IllegalStateException("Upgrades not supported")
|
|
}
|
|
|
|
fun registerApp(packageName: String, uid: Int, serviceName: String, appId :Int, token: String){
|
|
val db = writableDatabase
|
|
val values = ContentValues().apply {
|
|
put(FIELD_PACKAGE_NAME, packageName)
|
|
put(FIELD_UID, uid.toString())
|
|
put(FIELD_SERVICE_NAME,serviceName)
|
|
put(FIELD_APP_ID,appId.toString())
|
|
put(FIELD_TOKEN,token)
|
|
}
|
|
db.insert(TABLE_APPS,null,values)
|
|
}
|
|
|
|
fun unregisterApp(packageName: String, uid: Int){
|
|
val db = writableDatabase
|
|
val selection = "$FIELD_PACKAGE_NAME = ? AND $FIELD_UID = ?"
|
|
val selectionArgs = arrayOf(packageName,uid.toString())
|
|
db.delete(TABLE_APPS,selection,selectionArgs)
|
|
}
|
|
|
|
fun forceUnregisterApp(packageName: String){
|
|
val db = writableDatabase
|
|
val selection = "$FIELD_PACKAGE_NAME = ?"
|
|
val selectionArgs = arrayOf(packageName)
|
|
db.delete(TABLE_APPS,selection,selectionArgs)
|
|
}
|
|
|
|
fun isRegistered(packageName: String): Boolean {
|
|
val db = readableDatabase
|
|
val selection = "$FIELD_PACKAGE_NAME = ?"
|
|
val selectionArgs = arrayOf(packageName)
|
|
val cursor = db.query(
|
|
TABLE_APPS,
|
|
null,
|
|
selection,
|
|
selectionArgs,
|
|
null,
|
|
null,
|
|
null
|
|
)
|
|
return (cursor != null && cursor.count > 0)
|
|
}
|
|
|
|
fun strictIsRegistered(packageName: String, uid: Int): Boolean {
|
|
val db = readableDatabase
|
|
val selection = "$FIELD_PACKAGE_NAME = ? AND $FIELD_UID = ?"
|
|
val selectionArgs = arrayOf(packageName,uid.toString())
|
|
val cursor = db.query(
|
|
TABLE_APPS,
|
|
null,
|
|
selection,
|
|
selectionArgs,
|
|
null,
|
|
null,
|
|
null
|
|
)
|
|
return (cursor != null && cursor.count > 0)
|
|
}
|
|
|
|
fun getServiceName(packageName: String): String{
|
|
val db = readableDatabase
|
|
val projection = arrayOf(FIELD_SERVICE_NAME)
|
|
val selection = "$FIELD_PACKAGE_NAME = ?"
|
|
val selectionArgs = arrayOf(packageName)
|
|
val cursor = db.query(
|
|
TABLE_APPS,
|
|
projection,
|
|
selection,
|
|
selectionArgs,
|
|
null,
|
|
null,
|
|
null
|
|
)
|
|
var res = ""
|
|
if(cursor.moveToFirst()){
|
|
res = cursor.getString(cursor.getColumnIndex(FIELD_SERVICE_NAME))
|
|
}
|
|
return res
|
|
}
|
|
|
|
fun getAppFromId(appId: Int): String{
|
|
val db = readableDatabase
|
|
val projection = arrayOf(FIELD_PACKAGE_NAME)
|
|
val selection = "$FIELD_APP_ID = ?"
|
|
val selectionArgs = arrayOf(appId.toString())
|
|
val cursor = db.query(
|
|
TABLE_APPS,
|
|
projection,
|
|
selection,
|
|
selectionArgs,
|
|
null,
|
|
null,
|
|
null
|
|
)
|
|
var res = ""
|
|
if(cursor.moveToFirst()){
|
|
res = cursor.getString(cursor.getColumnIndex(FIELD_PACKAGE_NAME))
|
|
}
|
|
return res
|
|
}
|
|
|
|
fun getAppId(packageName: String): Int{
|
|
val db = readableDatabase
|
|
val projection = arrayOf(FIELD_APP_ID)
|
|
val selection = "$FIELD_PACKAGE_NAME = ?"
|
|
val selectionArgs = arrayOf(packageName)
|
|
val cursor = db.query(
|
|
TABLE_APPS,
|
|
projection,
|
|
selection,
|
|
selectionArgs,
|
|
null,
|
|
null,
|
|
null
|
|
)
|
|
var res = -1
|
|
if(cursor.moveToFirst()){
|
|
res = cursor.getInt(cursor.getColumnIndex(FIELD_APP_ID))
|
|
}
|
|
return res
|
|
}
|
|
|
|
fun getToken(packageName: String): String{
|
|
val db = readableDatabase
|
|
val projection = arrayOf(FIELD_TOKEN)
|
|
val selection = "$FIELD_PACKAGE_NAME = ?"
|
|
val selectionArgs = arrayOf(packageName)
|
|
val cursor = db.query(
|
|
TABLE_APPS,
|
|
projection,
|
|
selection,
|
|
selectionArgs,
|
|
null,
|
|
null,
|
|
null
|
|
)
|
|
var res = ""
|
|
if(cursor.moveToFirst()){
|
|
res = cursor.getString(cursor.getColumnIndex(FIELD_TOKEN))
|
|
}
|
|
removeToken(packageName)
|
|
return res
|
|
}
|
|
|
|
private fun removeToken(packageName: String){
|
|
val db = writableDatabase
|
|
val values = ContentValues().apply {
|
|
put(FIELD_TOKEN,"null")
|
|
}
|
|
val selection = "$FIELD_PACKAGE_NAME = ?"
|
|
val selectionArgs = arrayOf(packageName)
|
|
db.update(TABLE_APPS,values,selection,selectionArgs)
|
|
}
|
|
} |