38 lines
1.5 KiB
Kotlin
38 lines
1.5 KiB
Kotlin
package be.simplenotes.persistance.users
|
|
|
|
import be.simplenotes.domain.model.PersistedUser
|
|
import be.simplenotes.domain.model.User
|
|
import be.simplenotes.domain.usecases.repositories.UserRepository
|
|
import be.simplenotes.persistance.converters.UserConverter
|
|
import me.liuwj.ktorm.database.Database
|
|
import me.liuwj.ktorm.dsl.*
|
|
import me.liuwj.ktorm.entity.any
|
|
import me.liuwj.ktorm.entity.find
|
|
import java.sql.SQLIntegrityConstraintViolationException
|
|
|
|
internal class UserRepositoryImpl(private val db: Database, private val converter: UserConverter) : UserRepository {
|
|
override fun create(user: User): PersistedUser? {
|
|
return try {
|
|
val id = db.insertAndGenerateKey(Users) {
|
|
it.username to user.username
|
|
it.password to user.password
|
|
} as Int
|
|
PersistedUser(user.username, user.password, id)
|
|
} catch (e: SQLIntegrityConstraintViolationException) {
|
|
null
|
|
}
|
|
}
|
|
|
|
override fun find(username: String) = db.users.find { it.username eq username }
|
|
?.let { converter.toPersistedUser(it) }
|
|
|
|
override fun find(id: Int) = db.users.find { it.id eq id }?.let {
|
|
converter.toPersistedUser(it)
|
|
}
|
|
|
|
override fun exists(username: String) = db.users.any { it.username eq username }
|
|
override fun exists(id: Int) = db.users.any { it.id eq id }
|
|
override fun delete(id: Int) = db.delete(Users) { it.id eq id } == 1
|
|
override fun findAll() = db.from(Users).select(Users.id).map { it[Users.id]!! }
|
|
}
|