Add monster card table and initial dao
This commit is contained in:
30
src/main/java/database/monsterbook/MonsterCardDao.java
Normal file
30
src/main/java/database/monsterbook/MonsterCardDao.java
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
package database.monsterbook;
|
||||||
|
|
||||||
|
import database.DaoException;
|
||||||
|
import database.PgDatabaseConnection;
|
||||||
|
import org.jdbi.v3.core.Handle;
|
||||||
|
import org.jdbi.v3.core.JdbiException;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class MonsterCardDao {
|
||||||
|
private final PgDatabaseConnection connection;
|
||||||
|
|
||||||
|
public MonsterCardDao(PgDatabaseConnection connection) {
|
||||||
|
this.connection = connection;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<MonsterCard> load(int chrId) {
|
||||||
|
try (Handle handle = connection.getHandle()) {
|
||||||
|
return handle.createQuery("""
|
||||||
|
SELECT *
|
||||||
|
FROM monster_card
|
||||||
|
WHERE chr_id = ?;""")
|
||||||
|
.bind(0, chrId)
|
||||||
|
.mapTo(MonsterCard.class)
|
||||||
|
.list();
|
||||||
|
} catch (JdbiException e) {
|
||||||
|
throw new DaoException("Failed to find monster cards for chr id %d".formatted(chrId), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
17
src/main/java/database/monsterbook/MonsterCardRowMapper.java
Normal file
17
src/main/java/database/monsterbook/MonsterCardRowMapper.java
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
package database.monsterbook;
|
||||||
|
|
||||||
|
import org.jdbi.v3.core.mapper.RowMapper;
|
||||||
|
import org.jdbi.v3.core.statement.StatementContext;
|
||||||
|
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
|
||||||
|
public class MonsterCardRowMapper implements RowMapper<MonsterCard> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MonsterCard map(ResultSet rs, StatementContext ctx) throws SQLException {
|
||||||
|
int cardId = rs.getInt("card_id");
|
||||||
|
byte level = rs.getByte("level");
|
||||||
|
return new MonsterCard(cardId, level);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
CREATE TABLE monster_card
|
||||||
|
(
|
||||||
|
chr_id integer NOT NULL,
|
||||||
|
card_id integer NOT NULL,
|
||||||
|
level smallint NOT NULL,
|
||||||
|
PRIMARY KEY(chr_id, card_id)
|
||||||
|
/* TODO once chr is moved to postgres:
|
||||||
|
CONSTRAINT fk_monster_card_chr FOREIGN KEY (chr_id) REFERENCES character(id);
|
||||||
|
*/
|
||||||
|
);
|
||||||
|
GRANT SELECT, INSERT, UPDATE ON TABLE monster_card TO ${server-username};
|
||||||
Reference in New Issue
Block a user