|
| 1 | +package me.madhead.tyzenhaus.repository.postgresql.api.token |
| 2 | + |
| 3 | +import java.sql.Timestamp |
| 4 | +import java.util.UUID |
| 5 | +import javax.sql.DataSource |
| 6 | +import me.madhead.tyzenhaus.entity.api.token.APIToken |
| 7 | +import me.madhead.tyzenhaus.entity.balance.Balance |
| 8 | +import me.madhead.tyzenhaus.repository.postgresql.PostgreSqlRepository |
| 9 | +import org.apache.logging.log4j.LogManager |
| 10 | + |
| 11 | +/** |
| 12 | + * PostgreSQL repository for [balances][Balance]. |
| 13 | + */ |
| 14 | +class APITokenRepository(dataSource: DataSource) |
| 15 | + : me.madhead.tyzenhaus.repository.APITokenRepository, PostgreSqlRepository(dataSource) { |
| 16 | + companion object { |
| 17 | + private val logger = LogManager.getLogger(APITokenRepository::class.java)!! |
| 18 | + } |
| 19 | + |
| 20 | + override fun get(id: UUID): APIToken? { |
| 21 | + logger.debug("get {}", id) |
| 22 | + |
| 23 | + dataSource.connection.use { connection -> |
| 24 | + connection |
| 25 | + .prepareStatement("""SELECT * FROM "api_token" WHERE "token" = ?;""") |
| 26 | + .use { preparedStatement -> |
| 27 | + preparedStatement.setObject(@Suppress("MagicNumber") 1, id) |
| 28 | + preparedStatement.executeQuery().use { resultSet -> |
| 29 | + return@get resultSet.toAPIToken() |
| 30 | + } |
| 31 | + } |
| 32 | + } |
| 33 | + } |
| 34 | + |
| 35 | + @Suppress("DuplicatedCode") |
| 36 | + override fun save(entity: APIToken) { |
| 37 | + logger.debug("save {}", entity) |
| 38 | + |
| 39 | + dataSource |
| 40 | + .connection |
| 41 | + .use { connection -> |
| 42 | + connection |
| 43 | + .prepareStatement(""" |
| 44 | + INSERT INTO "api_token" ("token", "group_id", "scope", "valid_until") |
| 45 | + VALUES (?, ?, ?, ?) |
| 46 | + """.trimIndent()) |
| 47 | + .use { preparedStatement -> |
| 48 | + preparedStatement.setObject(@Suppress("MagicNumber") 1, entity.token) |
| 49 | + preparedStatement.setLong(@Suppress("MagicNumber") 2, entity.groupId) |
| 50 | + preparedStatement.setString(@Suppress("MagicNumber") 3, entity.scope.name) |
| 51 | + preparedStatement.setTimestamp(@Suppress("MagicNumber") 4, Timestamp.from(entity.validUntil)) |
| 52 | + preparedStatement.executeUpdate() |
| 53 | + } |
| 54 | + } |
| 55 | + } |
| 56 | +} |
0 commit comments