From 17e439393fdc0c76599dd36eff0723b142f0c056 Mon Sep 17 00:00:00 2001 From: lukaceli Date: Thu, 26 Feb 2026 12:42:39 +0100 Subject: [PATCH] Made database structure. Started to implement the database system. Created DAO classes --- givehope.db | 0 src/main/java/app/Main.java | 12 +++++++++ src/main/java/dao/CauseDao.java | 4 +++ src/main/java/dao/DonationDao.java | 4 +++ src/main/java/dao/OrganizationDao.java | 4 +++ src/main/java/dao/UserDao.java | 21 ++++++++++++++++ src/main/java/db/Database.java | 20 +++++++++++++++ src/main/java/model/User.java | 2 +- src/main/resources/givehope.db | Bin 0 -> 36864 bytes src/main/resources/schema.sql | 33 +++++++++++++++++++++++++ 10 files changed, 99 insertions(+), 1 deletion(-) create mode 100644 givehope.db create mode 100644 src/main/java/dao/CauseDao.java create mode 100644 src/main/java/dao/DonationDao.java create mode 100644 src/main/java/dao/OrganizationDao.java create mode 100644 src/main/java/dao/UserDao.java create mode 100644 src/main/java/db/Database.java create mode 100644 src/main/resources/schema.sql diff --git a/givehope.db b/givehope.db new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/app/Main.java b/src/main/java/app/Main.java index c533c16..0d14e0b 100644 --- a/src/main/java/app/Main.java +++ b/src/main/java/app/Main.java @@ -1,4 +1,16 @@ package app; +import static db.Database.URL; + +import db.Database; + public class Main { + public static void main(String[] args) { + try{ + Database.getConnection(); + System.out.println("Database connected"); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/dao/CauseDao.java b/src/main/java/dao/CauseDao.java new file mode 100644 index 0000000..78c1a28 --- /dev/null +++ b/src/main/java/dao/CauseDao.java @@ -0,0 +1,4 @@ +package dao; + +public class CauseDao { +} diff --git a/src/main/java/dao/DonationDao.java b/src/main/java/dao/DonationDao.java new file mode 100644 index 0000000..291b292 --- /dev/null +++ b/src/main/java/dao/DonationDao.java @@ -0,0 +1,4 @@ +package dao; + +public class DonationDao { +} diff --git a/src/main/java/dao/OrganizationDao.java b/src/main/java/dao/OrganizationDao.java new file mode 100644 index 0000000..f406a3a --- /dev/null +++ b/src/main/java/dao/OrganizationDao.java @@ -0,0 +1,4 @@ +package dao; + +public class OrganizationDao { +} diff --git a/src/main/java/dao/UserDao.java b/src/main/java/dao/UserDao.java new file mode 100644 index 0000000..39575b7 --- /dev/null +++ b/src/main/java/dao/UserDao.java @@ -0,0 +1,21 @@ +package dao; + +import db.Database; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import model.User; + +public class UserDao { + + public void insert(User user) { + String sql = "INSERT INTO user(name, e_mail, password_hash) VALUES(?, ?, ?)"; + + try (Connection conn = Database.getConnection()) { + PreparedStatement stmt = conn.prepareStatement(sql); + } catch (SQLException e) { + throw new RuntimeException(e); + } + + } +} diff --git a/src/main/java/db/Database.java b/src/main/java/db/Database.java new file mode 100644 index 0000000..2829bb1 --- /dev/null +++ b/src/main/java/db/Database.java @@ -0,0 +1,20 @@ +package db; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.sql.Statement; + +public final class Database { + public static final String URL = "jdbc:sqlite:givehope.db"; + public static Connection getConnection() throws SQLException { + Connection conn = DriverManager.getConnection(URL); + + try (Statement stmt = conn.createStatement()) { + stmt.execute("PRAGMA foreign_keys = ON;"); + } + + return conn; + } + +} diff --git a/src/main/java/model/User.java b/src/main/java/model/User.java index ccb8779..95e6073 100644 --- a/src/main/java/model/User.java +++ b/src/main/java/model/User.java @@ -5,7 +5,7 @@ public class User { private String userName; private String phoneNumber; - private final String eMail; + private String eMail; private String password; public User(String userName, String phoneNumber, String password, String eMail) { diff --git a/src/main/resources/givehope.db b/src/main/resources/givehope.db index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..b8d1283f35c6317a5de31222c8bdf55c1a28f7d9 100644 GIT binary patch literal 36864 zcmeI*&rj1(00;1vAL~{D@v!tn@?;@wN=%G;;$j_zERGIGNrX#N*9whmJK8RaHyANq z{0}|(PZ)2$_eP=JVT?&6Bj1L%c6~qk-sk;Tn`L45UEPfx@-YZKD<&_5ML`sW*Mtay zkf)(Q!z>L`G)Oee(2#6maxi3{7oPq2Ge37G((30=<$Psk_dgjn4;aQ#;3c#a>h@g%*^=;=%blj%5MP|QJ z^u3vCn)y8Srf~iwCn-xy;`dd~WCy+#yMdqVr3_GVmh^R!nh)Dk!3#FB)2wZ)&3*D# z+b8Ot(WvRP@NG>u`mGyQN)l&zLD!E7?X)`48wSz$>h;lcC)GD?i{3MG@0%CG@vd4m z`qf(&&1zod9HRl7jiy%H(z#&yq9PTlv8gpRy{hf<5nOid%ILMq6q!^pQzk#j3Y9Bo zk7gxhWku{ce6R%Jq2;?@`G83u=Q4vP9dm<$!@4|$bqj-smB{Dhm_5((+fLL9-42@~ zd;rN6y0{%E#iDq=e!0%Do|(xQurnjJ{i@BYbVjciht6m|l?$f_bg83N=qZ^hWEZz( zR)^)uTi14`a>~=E;y!QM#kv+bbWQYI&cNI0jQK!hnRWdd%~|QyL`hK;@!K&klaFuy zGL^~CPmS1Vw>eVB9-@O|bHqg;JwN|pdCDv#17&8`lXM(kR@l56X=~_YL#u1_^SY|; zR@DtnuFSK0i^V&+!N5f!009U<00Izz00bZa0SG_<0ucC50_^!;eE3_Sf7l=Z0SG_< z0uX=z1Rwwb2tWV=5V$7-3*vMs-;E@3x=43Ui0}XJNynlY5P$##AOHafKmY;|fB*y_ z0Dr0pO~&fMIitI2tWV= v5P$##AOHafKmY<`3&<=d{{P?De#i&`2tWV=5P$##AOHafKmY;|m;`~p;`aQB literal 0 HcmV?d00001 diff --git a/src/main/resources/schema.sql b/src/main/resources/schema.sql new file mode 100644 index 0000000..5a49607 --- /dev/null +++ b/src/main/resources/schema.sql @@ -0,0 +1,33 @@ +PRAGMA foreign_keys = ON; + +CREATE TABLE IF NOT EXISTS user ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL, + e_mail TEXT NOT NULL UNIQUE, + password_hash TEXT NOT NULL +); + +CREATE TABLE IF NOT EXISTS organization ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL, + description TEXT +); + +CREATE TABLE IF NOT EXISTS cause ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL, + description TEXT, + organization_id INTEGER NOT NULL, + FOREIGN KEY (organization_id) REFERENCES organization(id) + ON DELETE CASCADE +); + +CREATE TABLE IF NOT EXISTS donation ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + amount REAL NOT NULL, + donation_date TEXT NOT NULL, + user_id INTEGER, + cause_id INTEGER NOT NULL, + FOREIGN KEY (user_id) REFERENCES user(id), + FOREIGN KEY (cause_id) REFERENCES cause(id) + ); \ No newline at end of file