add role repo
This commit is contained in:
parent
a39dd6978c
commit
9ca22827d5
@ -1,7 +1,5 @@
|
|||||||
package com.college.data
|
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.Database
|
||||||
import org.jetbrains.exposed.sql.transactions.experimental.newSuspendedTransaction
|
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() }
|
newSuspendedTransaction { block() }
|
||||||
|
|
||||||
}
|
}
|
@ -18,6 +18,7 @@ fun resultRowToUser(result: ResultRow):User {
|
|||||||
uuid = result[UserUuidTable.id].value,
|
uuid = result[UserUuidTable.id].value,
|
||||||
login = result[UserUuidTable.login],
|
login = result[UserUuidTable.login],
|
||||||
password = result[UserUuidTable.password],
|
password = result[UserUuidTable.password],
|
||||||
|
isApproved = result[UserUuidTable.isApproved]
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -26,6 +27,7 @@ fun resultRowToUserWithJoinRole(result: ResultRow):User{
|
|||||||
uuid = result[UserUuidTable.id].value,
|
uuid = result[UserUuidTable.id].value,
|
||||||
login = result[UserUuidTable.login],
|
login = result[UserUuidTable.login],
|
||||||
password = result[UserUuidTable.password],
|
password = result[UserUuidTable.password],
|
||||||
|
isApproved = result[UserUuidTable.isApproved],
|
||||||
role = Role (
|
role = Role (
|
||||||
result[RoleIdTable.id].value,
|
result[RoleIdTable.id].value,
|
||||||
result[RoleIdTable.role]
|
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.DbSettings
|
||||||
import com.college.data.mapper.resultRowToUser
|
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.RoleIdTable
|
||||||
import com.college.data.table.UserUuidTable
|
import com.college.data.table.UserUuidTable
|
||||||
import com.college.domain.model.User
|
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.SqlExpressionBuilder.eq
|
||||||
import org.jetbrains.exposed.sql.deleteWhere
|
import org.jetbrains.exposed.sql.deleteWhere
|
||||||
import org.jetbrains.exposed.sql.insertReturning
|
import org.jetbrains.exposed.sql.insertReturning
|
||||||
@ -14,7 +15,7 @@ import org.jetbrains.exposed.sql.selectAll
|
|||||||
import org.jetbrains.exposed.sql.update
|
import org.jetbrains.exposed.sql.update
|
||||||
import java.util.*
|
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 {
|
override suspend fun getUserByUuid(userUuid: UUID): User? = database.query {
|
||||||
(UserUuidTable innerJoin RoleIdTable).selectAll().where {
|
(UserUuidTable innerJoin RoleIdTable).selectAll().where {
|
||||||
UserUuidTable.id eq userUuid
|
UserUuidTable.id eq userUuid
|
||||||
@ -45,11 +46,12 @@ class UserRepositoryImpl(val database: DbSettings): UserRepository {
|
|||||||
.map(::resultRowToUserWithJoinRole)
|
.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 ->
|
val result = UserUuidTable.update({UserUuidTable.id eq userUuid}){ oldUser ->
|
||||||
oldUser[login] = updatedUser.login
|
oldUser[login] = updateUserRequest.login
|
||||||
oldUser[password] = updatedUser.password
|
oldUser[password] = updateUserRequest.password
|
||||||
val newRole = checkNotNull(updatedUser.role)
|
oldUser[isApproved] = updateUserRequest.isApproved
|
||||||
|
val newRole = checkNotNull(updateUserRequest.role)
|
||||||
oldUser[role] = newRole.id
|
oldUser[role] = newRole.id
|
||||||
}
|
}
|
||||||
result > 0
|
result > 0
|
@ -6,4 +6,5 @@ object UserUuidTable:UUIDTable(name = "users") {
|
|||||||
val password = text(name = "user_password")
|
val password = text(name = "user_password")
|
||||||
val login = text(name = "user_login")
|
val login = text(name = "user_login")
|
||||||
val role = reference("role_id", RoleIdTable)
|
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 uuid: UUID,
|
||||||
val login:String,
|
val login:String,
|
||||||
val password: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
|
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