Use UserService
This commit is contained in:
@@ -1,11 +1,15 @@
|
||||
package be.vandewalleh.services
|
||||
|
||||
import be.vandewalleh.entities.User
|
||||
import be.vandewalleh.tables.Users
|
||||
import me.liuwj.ktorm.database.Database
|
||||
import me.liuwj.ktorm.dsl.*
|
||||
import me.liuwj.ktorm.entity.add
|
||||
import me.liuwj.ktorm.entity.sequenceOf
|
||||
import org.kodein.di.Kodein
|
||||
import org.kodein.di.KodeinAware
|
||||
import org.kodein.di.generic.instance
|
||||
import java.time.LocalDateTime
|
||||
|
||||
/**
|
||||
* service to handle database queries for users.
|
||||
@@ -25,4 +29,43 @@ class UserService(override val kodein: Kodein) : KodeinAware {
|
||||
.firstOrNull()
|
||||
}
|
||||
|
||||
}
|
||||
/**
|
||||
* returns a user email and password from it's email if found or null
|
||||
*/
|
||||
fun getEmailAndPasswordFromUsername(username: String): Pair<String, String>? {
|
||||
return db.from(Users)
|
||||
.select(Users.email, Users.password)
|
||||
.where { Users.username eq username }
|
||||
.limit(0, 1)
|
||||
.map { row -> row[Users.email]!! to row[Users.password]!! }
|
||||
.firstOrNull()
|
||||
}
|
||||
|
||||
fun userExists(username: String, email: String): Boolean {
|
||||
return db.from(Users)
|
||||
.select(Users.id)
|
||||
.where { (Users.username eq username) or (Users.email eq email) }
|
||||
.limit(0, 1)
|
||||
.firstOrNull() != null
|
||||
}
|
||||
|
||||
/**
|
||||
* create a new user
|
||||
* password should already be hashed
|
||||
*/
|
||||
fun createUser(user: UserRegistrationDto) {
|
||||
db.useTransaction {
|
||||
val newUser = User {
|
||||
this.username = user.username
|
||||
this.email = user.email
|
||||
this.password = user.password
|
||||
this.createdAt = LocalDateTime.now()
|
||||
}
|
||||
|
||||
db.sequenceOf(Users).add(newUser)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
data class UserRegistrationDto(val username: String, val email: String, val password: String)
|
||||
Reference in New Issue
Block a user