All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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