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) +);