From b312097d0d23dc94e770f99ac2934ca75e7e786d Mon Sep 17 00:00:00 2001
From: Lucy Ciara Herud-Thomassen <86323303+LucyCiara@users.noreply.github.com>
Date: Tue, 10 Mar 2026 15:41:43 +0100
Subject: [PATCH] feat[DbWrapper]: add methods for connecting to database
---
pom.xml | 6 ++++
src/main/java/edu/group5/app/App.java | 9 +++++-
.../edu/group5/app/control/DbWrapper.java | 30 +++++++++++++++++++
src/main/resources/init.sql | 23 ++++++++++++++
src/main/resources/test_init.sql | 23 ++++++++++++++
5 files changed, 90 insertions(+), 1 deletion(-)
create mode 100644 src/main/java/edu/group5/app/control/DbWrapper.java
create mode 100644 src/main/resources/init.sql
create mode 100644 src/main/resources/test_init.sql
diff --git a/pom.xml b/pom.xml
index 7a55551..f9a8b88 100644
--- a/pom.xml
+++ b/pom.xml
@@ -62,6 +62,12 @@
slf4j-simple
2.0.9
+
+ com.h2database
+ h2
+ 2.2.224
+ runtime
+
diff --git a/src/main/java/edu/group5/app/App.java b/src/main/java/edu/group5/app/App.java
index 887fe4d..8eae42a 100644
--- a/src/main/java/edu/group5/app/App.java
+++ b/src/main/java/edu/group5/app/App.java
@@ -1,10 +1,17 @@
package edu.group5.app;
+import edu.group5.app.control.DbWrapper;
+
/**
* Hello world!
*/
public class App {
public static void main(String[] args) throws InterruptedException {
- System.out.println("Hello World!");
+ DbWrapper db = new DbWrapper("test_init.sql");
+ try {
+ System.out.println(db.connect());
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
}
}
diff --git a/src/main/java/edu/group5/app/control/DbWrapper.java b/src/main/java/edu/group5/app/control/DbWrapper.java
new file mode 100644
index 0000000..b767a49
--- /dev/null
+++ b/src/main/java/edu/group5/app/control/DbWrapper.java
@@ -0,0 +1,30 @@
+package edu.group5.app.control;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+
+public class DbWrapper {
+ protected Connection connection;
+ private static final String CONNECTION_TYPE = "jdbc:h2:";
+ private static final String DB_SCRIPT = "INIT=RUNSCRIPT FROM 'classpath:";
+ private String connectionString;
+
+ public DbWrapper(String script) {
+ this(script, "mem:test;");
+ }
+
+ public DbWrapper(String script, String dbPath) {
+ this.connectionString = CONNECTION_TYPE + dbPath + DB_SCRIPT + script + "'";
+ }
+
+ public boolean connect() throws SQLException {
+ try {
+ this.connection = DriverManager.getConnection(this.connectionString);
+ } catch (SQLException SQLe) {
+ SQLe.printStackTrace();
+ }
+ return connection.isValid(0);
+ }
+
+}
diff --git a/src/main/resources/init.sql b/src/main/resources/init.sql
new file mode 100644
index 0000000..ff37e31
--- /dev/null
+++ b/src/main/resources/init.sql
@@ -0,0 +1,23 @@
+CREATE TABLE IF NOT EXISTS
+users (
+ user_id int PRIMARY KEY,
+ first_name varchar(20),
+ last_name varchar(20),
+ email varchar(20),
+ password_hash varchar(72)
+);
+
+CREATE TABLE IF NOT EXISTS
+donations (
+ donation_id int PRIMARY KEY,
+ user_id int NOT NULL,
+ organization_id int NOT NULL,
+ amount double NOT NULL,
+ dating timestamp NOT NULL,
+ payment_method varchar(20),
+ CONSTRAINT fk_user
+ FOREIGN KEY (user_id)
+ REFERENCES users(user_id)
+);
+
+
diff --git a/src/main/resources/test_init.sql b/src/main/resources/test_init.sql
new file mode 100644
index 0000000..e1c1c43
--- /dev/null
+++ b/src/main/resources/test_init.sql
@@ -0,0 +1,23 @@
+DROP TABLE IF EXISTS users, donations;
+
+CREATE TABLE IF NOT EXISTS
+users (
+ user_id int PRIMARY KEY,
+ first_name varchar(20),
+ last_name varchar(20),
+ email varchar(20),
+ password_hash varchar(72)
+);
+
+CREATE TABLE IF NOT EXISTS
+donations (
+ donation_id int PRIMARY KEY,
+ user_id int NOT NULL,
+ organization_id int NOT NULL,
+ amount double NOT NULL,
+ dating timestamp NOT NULL,
+ payment_method varchar(20),
+ CONSTRAINT fk_user
+ FOREIGN KEY (user_id)
+ REFERENCES users(user_id)
+);