From a496c0f2b418388acba0e4d03b3b93ae62444674 Mon Sep 17 00:00:00 2001 From: P0nk Date: Fri, 17 Mar 2023 21:28:23 +0100 Subject: [PATCH] Add ShopDao --- src/main/java/database/JdbiConfig.java | 4 ++- src/main/java/database/shop/ShopDao.java | 31 +++++++++++++++++++ src/main/java/database/shop/ShopItem.java | 4 +++ .../java/database/shop/ShopItemRowMapper.java | 19 ++++++++++++ 4 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 src/main/java/database/shop/ShopDao.java create mode 100644 src/main/java/database/shop/ShopItem.java create mode 100644 src/main/java/database/shop/ShopItemRowMapper.java diff --git a/src/main/java/database/JdbiConfig.java b/src/main/java/database/JdbiConfig.java index 16d2a7b43c..d62f18a030 100644 --- a/src/main/java/database/JdbiConfig.java +++ b/src/main/java/database/JdbiConfig.java @@ -6,6 +6,7 @@ import database.maker.MakerIngredientRowMapper; import database.maker.MakerReagentRowMapper; import database.maker.MakerRecipeRowMapper; import database.note.NoteRowMapper; +import database.shop.ShopItemRowMapper; import org.jdbi.v3.core.Jdbi; import javax.sql.DataSource; @@ -20,6 +21,7 @@ public final class JdbiConfig { .registerRowMapper(new MakerRecipeRowMapper()) .registerRowMapper(new MakerIngredientRowMapper()) .registerRowMapper(new MonsterDropRowMapper()) - .registerRowMapper(new GlobalMonsterDropRowMapper()); + .registerRowMapper(new GlobalMonsterDropRowMapper()) + .registerRowMapper(new ShopItemRowMapper()); } } diff --git a/src/main/java/database/shop/ShopDao.java b/src/main/java/database/shop/ShopDao.java new file mode 100644 index 0000000000..da446ce9a8 --- /dev/null +++ b/src/main/java/database/shop/ShopDao.java @@ -0,0 +1,31 @@ +package database.shop; + +import database.DaoException; +import database.PgDatabaseConnection; +import org.jdbi.v3.core.Handle; +import org.jdbi.v3.core.JdbiException; + +import java.util.List; + +public class ShopDao { + private final PgDatabaseConnection connection; + + public ShopDao(PgDatabaseConnection connection) { + this.connection = connection; + } + + public List getShopItems(int shopId) { + try (Handle handle = connection.getHandle()) { + return handle.createQuery(""" + SELECT * + FROM shop_item + WHERE shop = ? + ORDER BY position DESC;""") + .bind(0, shopId) + .mapTo(ShopItem.class) + .list(); + } catch (JdbiException e) { + throw new DaoException("Failed to get shop items for shop %d".formatted(shopId), e); + } + } +} diff --git a/src/main/java/database/shop/ShopItem.java b/src/main/java/database/shop/ShopItem.java new file mode 100644 index 0000000000..44cd557cf0 --- /dev/null +++ b/src/main/java/database/shop/ShopItem.java @@ -0,0 +1,4 @@ +package database.shop; + +public record ShopItem(int itemId, int price, Integer pitch, int position) { +} diff --git a/src/main/java/database/shop/ShopItemRowMapper.java b/src/main/java/database/shop/ShopItemRowMapper.java new file mode 100644 index 0000000000..8d3af396c4 --- /dev/null +++ b/src/main/java/database/shop/ShopItemRowMapper.java @@ -0,0 +1,19 @@ +package database.shop; + +import org.jdbi.v3.core.mapper.RowMapper; +import org.jdbi.v3.core.statement.StatementContext; + +import java.sql.ResultSet; +import java.sql.SQLException; + +public class ShopItemRowMapper implements RowMapper { + + @Override + public ShopItem map(ResultSet rs, StatementContext ctx) throws SQLException { + final int itemId = rs.getInt("item_id"); + final int price = rs.getInt("price"); + final Integer pitch = rs.getObject("pitch", Integer.class); + final int position = rs.getInt("position"); + return new ShopItem(itemId, price, pitch, position); + } +}