2021-04-22 11:47:18 +02:00
|
|
|
package org.pixeldroid.app.utils.db.dao
|
2020-05-14 20:14:41 +02:00
|
|
|
|
2020-12-29 19:34:48 +01:00
|
|
|
import androidx.room.*
|
2024-01-24 22:20:08 +01:00
|
|
|
import kotlinx.coroutines.flow.Flow
|
2021-04-22 11:47:18 +02:00
|
|
|
import org.pixeldroid.app.utils.db.entities.UserDatabaseEntity
|
2020-05-14 20:14:41 +02:00
|
|
|
|
|
|
|
@Dao
|
|
|
|
interface UserDao {
|
2021-08-14 19:45:27 +02:00
|
|
|
/**
|
|
|
|
* Insert a user, if it already exists return -1
|
|
|
|
*/
|
|
|
|
@Insert(onConflict = OnConflictStrategy.IGNORE)
|
2024-01-24 22:20:08 +01:00
|
|
|
suspend fun insertUser(user: UserDatabaseEntity): Long
|
2021-08-14 19:45:27 +02:00
|
|
|
|
|
|
|
@Transaction
|
2024-01-24 22:20:08 +01:00
|
|
|
suspend fun insertOrUpdate(user: UserDatabaseEntity) {
|
2021-08-14 19:45:27 +02:00
|
|
|
if (insertUser(user) == -1L) {
|
|
|
|
updateUser(user)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Update
|
2024-01-24 22:20:08 +01:00
|
|
|
suspend fun updateUser(user: UserDatabaseEntity)
|
|
|
|
|
|
|
|
@Query("UPDATE users SET username = :username, display_name = :displayName, avatar_static = :avatarStatic WHERE user_id = :id and instance_uri = :instanceUri")
|
|
|
|
suspend fun updateUserAccountDetails(username: String, displayName: String, avatarStatic: String, id: String, instanceUri: String)
|
|
|
|
|
2020-05-14 20:14:41 +02:00
|
|
|
|
2022-10-23 19:29:31 +02:00
|
|
|
@Query("UPDATE users SET accessToken = :accessToken, refreshToken = :refreshToken WHERE user_id = :id and instance_uri = :instanceUri")
|
|
|
|
fun updateAccessToken(accessToken: String, refreshToken: String, id: String, instanceUri: String)
|
2020-12-29 19:34:48 +01:00
|
|
|
|
2020-05-14 20:14:41 +02:00
|
|
|
@Query("SELECT * FROM users")
|
|
|
|
fun getAll(): List<UserDatabaseEntity>
|
|
|
|
|
2024-01-24 22:20:08 +01:00
|
|
|
@Query("SELECT * FROM users")
|
|
|
|
fun getAllFlow(): Flow<List<UserDatabaseEntity>>
|
|
|
|
|
2022-08-21 00:24:02 +02:00
|
|
|
@Query("SELECT * FROM users WHERE isActive=1")
|
2020-05-19 09:49:34 +02:00
|
|
|
fun getActiveUser(): UserDatabaseEntity?
|
|
|
|
|
2020-07-26 20:56:01 +02:00
|
|
|
@Query("UPDATE users SET isActive=0")
|
|
|
|
fun deActivateActiveUsers()
|
2020-05-19 09:49:34 +02:00
|
|
|
|
2022-10-23 19:29:31 +02:00
|
|
|
@Query("UPDATE users SET isActive=1 WHERE user_id=:id AND instance_uri=:instanceUri")
|
|
|
|
fun activateUser(id: String, instanceUri: String)
|
2020-05-19 09:49:34 +02:00
|
|
|
|
|
|
|
@Query("DELETE FROM users WHERE isActive=1")
|
|
|
|
fun deleteActiveUsers()
|
|
|
|
|
2022-10-23 19:29:31 +02:00
|
|
|
@Query("SELECT * FROM users WHERE user_id=:id AND instance_uri=:instanceUri")
|
|
|
|
fun getUserWithId(id: String, instanceUri: String): UserDatabaseEntity
|
2020-05-14 20:14:41 +02:00
|
|
|
}
|