This commit is contained in:
xds
2025-10-31 15:31:55 +03:00
parent 040da34ff7
commit 7972ea0fdf
117 changed files with 3691 additions and 2013 deletions

View File

@@ -0,0 +1,80 @@
package space.luminic.finance.repos
import org.springframework.jdbc.core.RowMapper
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate
import org.springframework.stereotype.Repository
import space.luminic.finance.models.User
@Repository
class UserRepoImpl(
private val jdbcTemplate: NamedParameterJdbcTemplate
) : UserRepo{
private fun userRowMapper() = RowMapper { rs, _ ->
User(
id = rs.getInt("id"),
username = rs.getString("username"),
firstName = rs.getString("first_name"),
tgId = rs.getString("tg_id"),
tgUserName = rs.getString("tg_user_name"),
password = rs.getString("password"),
isActive = rs.getBoolean("is_active"),
regDate = rs.getDate("reg_date").toLocalDate(),
createdAt = rs.getTimestamp("created_at").toInstant(),
updatedAt = rs.getTimestamp("updated_at").toInstant(),
roles = (rs.getArray("roles")?.array as? Array<String>)?.toList() ?: emptyList()
)
}
override fun findAll(): List<User> {
val sql = "select * from finance.users order by created_at desc"
return jdbcTemplate.query(sql, userRowMapper())
}
override fun findById(id: Int): User? {
val sql = "select * from finance.users where id = :userId"
return jdbcTemplate.queryForObject(sql, mapOf("userId" to id), userRowMapper())
}
override fun findByUsername(username: String): User? {
val sql = "select * from finance.users where username = :username"
return jdbcTemplate.query(sql, mapOf("username" to username), userRowMapper()).firstOrNull()
}
override fun findParticipantsBySpace(spaceId: Int): Set<User> {
val sql = "select * from finance.users u join finance.spaces_participants sp on sp.participants_id = u.id where sp.space_id = :spaceId"
return jdbcTemplate.query(sql, mapOf("spaceId" to spaceId), userRowMapper()).toSet()
}
override fun findByTgId(tgId: String): User? {
val sql = """
select * from finance.users u where tg_id = :tgId
""".trimIndent()
val params = mapOf("tgId" to tgId)
return jdbcTemplate.queryForObject(sql, params, userRowMapper())
}
override fun save(user: User): User {
val sql = "insert into finance.users(username, first_name, tg_id, tg_user_name, password, is_active, reg_date) values (:username, :firstname, :tg_id, :tg_user_name, :password, :isActive, :regDate) returning ID"
val params = mapOf(
"username" to user.username,
"firstname" to user.firstName,
"tg_id" to user.tgId,
"tg_user_name" to user.tgUserName,
"password" to user.password,
"isActive" to user.isActive,
"regDate" to user.regDate,
)
val savedId = jdbcTemplate.queryForObject(sql, params, Int::class.java)
user.id = savedId
return user
}
override fun update(user: User): User {
TODO("Not yet implemented")
}
override fun deleteById(id: Long) {
val sql = "update finance.users set is_active = false where id = :id"
jdbcTemplate.update(sql, mapOf("id" to id))
}
}