add role repo
This commit is contained in:
parent
a39dd6978c
commit
9ca22827d5
@ -1,7 +1,5 @@
|
||||
package com.college.data
|
||||
|
||||
import io.ktor.server.application.*
|
||||
import io.ktor.server.engine.*
|
||||
import org.jetbrains.exposed.sql.Database
|
||||
import org.jetbrains.exposed.sql.transactions.experimental.newSuspendedTransaction
|
||||
|
||||
@ -14,7 +12,7 @@ object DbSettings {
|
||||
)
|
||||
}
|
||||
|
||||
suspend fun <T> query(block: suspend () -> T): T =
|
||||
suspend fun <T> query(block: () -> Unit): T =
|
||||
newSuspendedTransaction { block() }
|
||||
|
||||
}
|
@ -18,6 +18,7 @@ fun resultRowToUser(result: ResultRow):User {
|
||||
uuid = result[UserUuidTable.id].value,
|
||||
login = result[UserUuidTable.login],
|
||||
password = result[UserUuidTable.password],
|
||||
isApproved = result[UserUuidTable.isApproved]
|
||||
)
|
||||
}
|
||||
|
||||
@ -26,6 +27,7 @@ fun resultRowToUserWithJoinRole(result: ResultRow):User{
|
||||
uuid = result[UserUuidTable.id].value,
|
||||
login = result[UserUuidTable.login],
|
||||
password = result[UserUuidTable.password],
|
||||
isApproved = result[UserUuidTable.isApproved],
|
||||
role = Role (
|
||||
result[RoleIdTable.id].value,
|
||||
result[RoleIdTable.role]
|
||||
|
@ -1,9 +0,0 @@
|
||||
package com.college.data.repositorty
|
||||
|
||||
import com.college.domain.model.Role
|
||||
|
||||
interface RoleRepository {
|
||||
suspend fun getAllRoles():Role
|
||||
suspend fun removeRoleById(rolId: Int): Boolean
|
||||
suspend fun changeName(rolId: Int, nameRole:String)
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
package com.college.data.repositorty
|
||||
|
||||
import com.college.domain.model.User
|
||||
import com.college.domain.request.UserCreateRequest
|
||||
import java.util.UUID
|
||||
|
||||
interface UserRepository {
|
||||
suspend fun getUserByUuid(userUuid: UUID): User?
|
||||
suspend fun removeUserByUuid(userUuid: UUID): Boolean
|
||||
suspend fun addUser(userCreateRequest: UserCreateRequest): User
|
||||
suspend fun getAllUsers(): List<User>?
|
||||
suspend fun updateUser(userUuid: UUID, updatedUser: User): Boolean
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package com.college.data.repositorty.role
|
||||
|
||||
import com.college.domain.model.Role
|
||||
import com.college.domain.request.role.RoleCreateRequest
|
||||
import com.college.domain.request.role.RoleUpdateRequest
|
||||
|
||||
interface RoleRepository {
|
||||
suspend fun getAllRoles():List<Role>
|
||||
suspend fun createRole(roleCreateRequest: RoleCreateRequest): Role
|
||||
suspend fun removeRoleById(rolId: Int): Boolean
|
||||
suspend fun updateRole(rolId: Int, roleUpdateRequest: RoleUpdateRequest): Boolean
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
package com.college.data.repositorty.role
|
||||
|
||||
import com.college.data.DbSettings
|
||||
import com.college.data.mapper.resultRowToRole
|
||||
import com.college.data.table.RoleIdTable
|
||||
import com.college.domain.model.Role
|
||||
import com.college.domain.request.role.RoleCreateRequest
|
||||
import com.college.domain.request.role.RoleUpdateRequest
|
||||
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
|
||||
import org.jetbrains.exposed.sql.deleteWhere
|
||||
import org.jetbrains.exposed.sql.insertReturning
|
||||
import org.jetbrains.exposed.sql.selectAll
|
||||
import org.jetbrains.exposed.sql.update
|
||||
|
||||
class RoleRepositoryImpl(private val dbSettings: DbSettings): RoleRepository {
|
||||
override suspend fun getAllRoles(): List<Role> = dbSettings.query {
|
||||
RoleIdTable.selectAll().map(::resultRowToRole)
|
||||
}
|
||||
|
||||
override suspend fun createRole(roleCreateRequest: RoleCreateRequest): Role = dbSettings.query {
|
||||
val result = RoleIdTable.insertReturning {
|
||||
it[role] = roleCreateRequest.roleName
|
||||
}
|
||||
result.map(::resultRowToRole).first()
|
||||
}
|
||||
|
||||
override suspend fun removeRoleById(rolId: Int): Boolean = dbSettings.query {
|
||||
val result = RoleIdTable.deleteWhere {
|
||||
RoleIdTable.id eq rolId
|
||||
}
|
||||
result > 0
|
||||
}
|
||||
|
||||
override suspend fun updateRole(rolId: Int, roleUpdateRequest: RoleUpdateRequest): Boolean = dbSettings.query {
|
||||
val result = RoleIdTable.update({RoleIdTable.id eq rolId}){
|
||||
it[role] = roleUpdateRequest.roleName
|
||||
}
|
||||
result > 0
|
||||
}
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
package com.college.data.repositorty.user
|
||||
|
||||
import com.college.domain.model.User
|
||||
import com.college.domain.request.user.UpdateUserRequest
|
||||
import com.college.domain.request.user.UserCreateRequest
|
||||
import java.util.UUID
|
||||
|
||||
interface UserRepository {
|
||||
suspend fun getUserByUuid(userUuid: UUID): User?
|
||||
suspend fun removeUserByUuid(userUuid: UUID): Boolean
|
||||
suspend fun addUser(userCreateRequest: UserCreateRequest): User
|
||||
suspend fun getAllUsers(): List<User>
|
||||
suspend fun updateUser(userUuid: UUID, updateUserRequest: UpdateUserRequest): Boolean
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package com.college.data.repositorty
|
||||
package com.college.data.repositorty.user
|
||||
|
||||
import com.college.data.DbSettings
|
||||
import com.college.data.mapper.resultRowToUser
|
||||
@ -6,7 +6,8 @@ import com.college.data.mapper.resultRowToUserWithJoinRole
|
||||
import com.college.data.table.RoleIdTable
|
||||
import com.college.data.table.UserUuidTable
|
||||
import com.college.domain.model.User
|
||||
import com.college.domain.request.UserCreateRequest
|
||||
import com.college.domain.request.user.UpdateUserRequest
|
||||
import com.college.domain.request.user.UserCreateRequest
|
||||
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
|
||||
import org.jetbrains.exposed.sql.deleteWhere
|
||||
import org.jetbrains.exposed.sql.insertReturning
|
||||
@ -14,7 +15,7 @@ import org.jetbrains.exposed.sql.selectAll
|
||||
import org.jetbrains.exposed.sql.update
|
||||
import java.util.*
|
||||
|
||||
class UserRepositoryImpl(val database: DbSettings): UserRepository {
|
||||
class UserRepositoryImpl(private val database: DbSettings): UserRepository {
|
||||
override suspend fun getUserByUuid(userUuid: UUID): User? = database.query {
|
||||
(UserUuidTable innerJoin RoleIdTable).selectAll().where {
|
||||
UserUuidTable.id eq userUuid
|
||||
@ -45,11 +46,12 @@ class UserRepositoryImpl(val database: DbSettings): UserRepository {
|
||||
.map(::resultRowToUserWithJoinRole)
|
||||
}
|
||||
|
||||
override suspend fun updateUser(userUuid: UUID, updatedUser: User): Boolean = database.query{
|
||||
override suspend fun updateUser(userUuid: UUID, updateUserRequest: UpdateUserRequest): Boolean = database.query{
|
||||
val result = UserUuidTable.update({UserUuidTable.id eq userUuid}){ oldUser ->
|
||||
oldUser[login] = updatedUser.login
|
||||
oldUser[password] = updatedUser.password
|
||||
val newRole = checkNotNull(updatedUser.role)
|
||||
oldUser[login] = updateUserRequest.login
|
||||
oldUser[password] = updateUserRequest.password
|
||||
oldUser[isApproved] = updateUserRequest.isApproved
|
||||
val newRole = checkNotNull(updateUserRequest.role)
|
||||
oldUser[role] = newRole.id
|
||||
}
|
||||
result > 0
|
@ -6,4 +6,5 @@ object UserUuidTable:UUIDTable(name = "users") {
|
||||
val password = text(name = "user_password")
|
||||
val login = text(name = "user_login")
|
||||
val role = reference("role_id", RoleIdTable)
|
||||
val isApproved = bool("user_is_approved").default(false)
|
||||
}
|
@ -6,5 +6,6 @@ data class User(
|
||||
val uuid: UUID,
|
||||
val login:String,
|
||||
val password:String,
|
||||
val role: Role? = null
|
||||
val role: Role? = null,
|
||||
val isApproved: Boolean
|
||||
)
|
||||
|
@ -0,0 +1,3 @@
|
||||
package com.college.domain.request.role
|
||||
|
||||
data class RoleCreateRequest(val roleName: String)
|
@ -0,0 +1,3 @@
|
||||
package com.college.domain.request.role
|
||||
|
||||
data class RoleUpdateRequest(val roleName: String)
|
@ -0,0 +1,9 @@
|
||||
package com.college.domain.request.user
|
||||
|
||||
import com.college.domain.model.Role
|
||||
|
||||
data class UpdateUserRequest(val login:String,
|
||||
val password:String,
|
||||
val role: Role,
|
||||
val isApproved: Boolean
|
||||
)
|
@ -1,4 +1,4 @@
|
||||
package com.college.domain.request
|
||||
package com.college.domain.request.user
|
||||
|
||||
import com.college.domain.model.Role
|
||||
|
@ -0,0 +1,7 @@
|
||||
package com.college.domain.usecase
|
||||
|
||||
import com.college.data.repositorty.user.UserRepository
|
||||
|
||||
class UserUseCase(private val userRepository: UserRepository) {
|
||||
fun re
|
||||
}
|
@ -0,0 +1,4 @@
|
||||
package com.college.domain.utils
|
||||
|
||||
class PasswordManager {
|
||||
}
|
Loading…
Reference in New Issue
Block a user