
de.comhix.database.dao.UserDao.kt Maven / Gradle / Ivy
package de.comhix.database.dao
import com.google.inject.Inject
import de.comhix.database.dao.Query.Operation
import de.comhix.database.objects.HasUserId
import org.bson.types.ObjectId
import javax.inject.Named
/**
* @author Benjamin Beeker
*/
open class UserDao @Inject constructor(private val baseDao: BaseDao, @Named(USER_INJECT) private val user: String)
: SimpleDao {
override suspend fun get(id: String, typeClass: Class): Type? {
return baseDao.get(id, typeClass)?.let {
if (it.userId == user) {
it
}
else {
null
}
}
}
override suspend fun save(instance: Type): Type {
return baseDao.get(instance.id, instance.javaClass).let {
if (it != null && it.userId != user) {
instance.id = ObjectId().toString()
instance.version = 0
}
instance.userId = user
baseDao.save(instance)
}
}
override suspend fun delete(id: String, typeClass: Class) {
baseDao.get(id, typeClass)?.let{
if (it.userId == user) {
baseDao.delete(id,typeClass)
}
}
}
override suspend fun query(typeClass: Class): Query {
return baseDao.query(typeClass).with("user", Operation.EQ, user)
}
companion object {
const val USER_INJECT = "User_Inject"
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy