|
|
|
|
@@ -3,8 +3,7 @@ package dev.inmo.postssystem.features.users.common
|
|
|
|
|
import dev.inmo.micro_utils.repos.exposed.AbstractExposedCRUDRepo
|
|
|
|
|
import dev.inmo.micro_utils.repos.exposed.initTable
|
|
|
|
|
import org.jetbrains.exposed.sql.*
|
|
|
|
|
import org.jetbrains.exposed.sql.statements.InsertStatement
|
|
|
|
|
import org.jetbrains.exposed.sql.statements.UpdateStatement
|
|
|
|
|
import org.jetbrains.exposed.sql.statements.*
|
|
|
|
|
|
|
|
|
|
class ExposedUsersStorage(override val database: Database) : UsersStorage, AbstractExposedCRUDRepo<User, UserId, NewUser>(
|
|
|
|
|
tableName = "Users"
|
|
|
|
|
@@ -15,11 +14,12 @@ class ExposedUsersStorage(override val database: Database) : UsersStorage, Abstr
|
|
|
|
|
private val lastNameColumn = text("lastName")
|
|
|
|
|
|
|
|
|
|
override val primaryKey: PrimaryKey = PrimaryKey(userIdColumn)
|
|
|
|
|
override val selectById: ISqlExpressionBuilder.(UserId) -> Op<Boolean> = { userIdColumn.eq(it.long) }
|
|
|
|
|
override val ResultRow.asId: UserId
|
|
|
|
|
get() = UserId(get(userIdColumn))
|
|
|
|
|
|
|
|
|
|
override val selectByIds: SqlExpressionBuilder.(List<UserId>) -> Op<Boolean> = { userIdColumn.inList(it.map { it.long }) }
|
|
|
|
|
override val selectById: SqlExpressionBuilder.(UserId) -> Op<Boolean> = { userIdColumn.eq(it.long) }
|
|
|
|
|
override val ResultRow.asObject: User
|
|
|
|
|
get() = DefaultUser(
|
|
|
|
|
get() = RegisteredUser(
|
|
|
|
|
get(userIdColumn).userId,
|
|
|
|
|
get(firstNameColumn),
|
|
|
|
|
get(lastNameColumn),
|
|
|
|
|
@@ -36,13 +36,13 @@ class ExposedUsersStorage(override val database: Database) : UsersStorage, Abstr
|
|
|
|
|
it[lastNameColumn] = value.lastName
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override fun update(id: UserId, value: NewUser, it: UpdateStatement) {
|
|
|
|
|
override fun update(id: UserId?, value: NewUser, it: UpdateBuilder<Int>) {
|
|
|
|
|
it[usernameColumn] = value.username.string
|
|
|
|
|
it[firstNameColumn] = value.firstName
|
|
|
|
|
it[lastNameColumn] = value.lastName
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override fun InsertStatement<Number>.asObject(value: NewUser): User = DefaultUser(
|
|
|
|
|
override fun InsertStatement<Number>.asObject(value: NewUser): User = RegisteredUser(
|
|
|
|
|
get(userIdColumn).userId,
|
|
|
|
|
get(firstNameColumn),
|
|
|
|
|
get(lastNameColumn),
|
|
|
|
|
|