130 lines
4.2 KiB
Kotlin
130 lines
4.2 KiB
Kotlin
package org.libre.agosto.p2play
|
|
|
|
import android.content.ContentValues
|
|
import android.content.Context
|
|
import android.database.sqlite.SQLiteDatabase
|
|
import android.database.sqlite.SQLiteException
|
|
import android.database.sqlite.SQLiteOpenHelper
|
|
import org.libre.agosto.p2play.models.TokenModel
|
|
import org.libre.agosto.p2play.models.UserModel
|
|
|
|
class Database(context:Context): SQLiteOpenHelper(context,"p2play",null,1) {
|
|
val dbName = "p2play"
|
|
|
|
private val dbUsers = "CREATE TABLE users(id INTEGER PRIMARY KEY AUTOINCREMENT, uuid INTEGER, username varchar(30), " +
|
|
"nsfw INTEGER, email string, followers INTEGER, avatar string, status integer)"
|
|
private val dbTokens = "CREATE TABLE tokens(id INTEGER PRIMARY KEY AUTOINCREMENT, token STRING, refresh_token STRING, status INTEGER)"
|
|
override fun onCreate(db: SQLiteDatabase?) {
|
|
db?.execSQL(dbUsers)
|
|
db?.execSQL(dbTokens)
|
|
}
|
|
|
|
override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
|
|
db?.execSQL("DROP TABLE users")
|
|
db?.execSQL("DROP TABLE tokens")
|
|
onCreate(db)
|
|
}
|
|
|
|
fun newToken(token: TokenModel): Boolean {
|
|
val db = writableDatabase
|
|
this.closeTokens()
|
|
val newToken=ContentValues()
|
|
newToken.put("token", token.token)
|
|
newToken.put("refresh_token", token.refresh_token)
|
|
newToken.put("status", token.status)
|
|
|
|
db.insert("tokens",null,newToken)
|
|
|
|
return true
|
|
}
|
|
|
|
fun newUser(user: UserModel): Boolean {
|
|
val db = writableDatabase
|
|
this.closeUsers()
|
|
val newUser=ContentValues()
|
|
newUser.put("uuid", user.uuid)
|
|
newUser.put("username", user.username)
|
|
newUser.put("email", user.email)
|
|
newUser.put("nsfw", user.nsfw)
|
|
newUser.put("followers", user.followers)
|
|
newUser.put("avatar", user.avatar)
|
|
newUser.put("status", user.status)
|
|
|
|
db.insert("users",null, newUser)
|
|
|
|
return true
|
|
}
|
|
|
|
fun getToken(): TokenModel{
|
|
val db = writableDatabase
|
|
var token = TokenModel()
|
|
|
|
try {
|
|
var cursor= db.rawQuery("SELECT * FROM tokens WHERE status=1 ORDER BY id DESC LIMIT 1",null)
|
|
|
|
if(cursor.count != 0){
|
|
cursor.moveToFirst()
|
|
|
|
token.token = cursor.getString(cursor.getColumnIndex("token")).toString()
|
|
token.refresh_token = cursor.getString(cursor.getColumnIndex("refresh_token")).toString()
|
|
token.status = cursor.getString(cursor.getColumnIndex("status")).toInt()
|
|
}
|
|
cursor.close()
|
|
|
|
return token
|
|
|
|
}catch (e:SQLiteException){
|
|
db?.execSQL(dbTokens)
|
|
}catch (e:Exception){
|
|
e.printStackTrace()
|
|
}
|
|
return token
|
|
}
|
|
|
|
fun getUser(): UserModel{
|
|
val db = writableDatabase
|
|
var user = UserModel()
|
|
|
|
try {
|
|
var cursor= db.rawQuery("SELECT * FROM users WHERE status=1 ORDER BY id DESC LIMIT 1",null)
|
|
|
|
if(cursor.count != 0){
|
|
cursor.moveToFirst()
|
|
|
|
user.uuid = cursor.getString(cursor.getColumnIndex("uuid")).toInt()
|
|
user.username = cursor.getString(cursor.getColumnIndex("username")).toString()
|
|
user.email = cursor.getString(cursor.getColumnIndex("email")).toString()
|
|
user.nsfw = cursor.getString(cursor.getColumnIndex("nsfw")).toBoolean()
|
|
user.followers = cursor.getString(cursor.getColumnIndex("followers")).toInt()
|
|
user.avatar = cursor.getString(cursor.getColumnIndex("avatar")).toString()
|
|
user.status = cursor.getString(cursor.getColumnIndex("status")).toInt()
|
|
}
|
|
|
|
cursor.close()
|
|
|
|
return user
|
|
|
|
}catch (e:SQLiteException){
|
|
db?.execSQL(dbTokens)
|
|
}catch (e:Exception){
|
|
e.printStackTrace()
|
|
}
|
|
return user
|
|
}
|
|
|
|
private fun closeTokens(){
|
|
val db = writableDatabase
|
|
db.execSQL("UPDATE tokens SET status=-1 WHERE 1")
|
|
}
|
|
|
|
private fun closeUsers(){
|
|
val db = writableDatabase
|
|
db.execSQL("UPDATE users SET status=-1 WHERE 1")
|
|
}
|
|
|
|
fun logout(){
|
|
closeUsers()
|
|
closeTokens()
|
|
}
|
|
|
|
} |