diff --git a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/database/DatabaseManager.java b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/database/DatabaseManager.java index 3f54c5a..f226f4a 100644 --- a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/database/DatabaseManager.java +++ b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/database/DatabaseManager.java @@ -66,13 +66,15 @@ public void createTables() { -- Table `HelpMeHelp`.`Charities` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS Charities ( - `org_number` VARCHAR(255) NOT NULL, - `charity_name` VARCHAR(255) NOT NULL, - `charity_link` VARCHAR(255) NOT NULL, - `pre_approved` TINYINT NOT NULL, - `status` VARCHAR(255) NOT NULL, - PRIMARY KEY (`org_number`)) - ENGINE = InnoDB; + UUID_charities CHAR(36) PRIMARY KEY, + org_number VARCHAR(255) NOT NULL, + charity_name VARCHAR(255) NOT NULL, + charity_link VARCHAR(255) NOT NULL, + pre_approved TINYINT NOT NULL, + status VARCHAR(255) NOT NULL, + UNIQUE KEY unique_org_number (org_number) + ) ENGINE=InnoDB; + """; String sql_query2 = @@ -81,17 +83,18 @@ PRIMARY KEY (`org_number`)) -- Table `HelpMeHelp`.`Donations` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS Donations ( - `UUID` CHAR(36) NOT NULL, + `UUID_Donations` CHAR(36) NOT NULL, `amount` DECIMAL NOT NULL, `date` DATE NOT NULL, - `Charities_org_number` VARCHAR(255) NOT NULL, - PRIMARY KEY (`UUID`), - INDEX `fk_Donations_Charities_idx` (`Charities_org_number` ASC) VISIBLE, + `Charities_UUID_charities` CHAR(36) NOT NULL, + PRIMARY KEY (`UUID_Donations`), + INDEX `fk_Donations_Charities_idx` (`Charities_UUID_charities` ASC) VISIBLE, CONSTRAINT `fk_Donations_Charities` - FOREIGN KEY (`Charities_org_number`) - REFERENCES Charities (`org_number`) + FOREIGN KEY (`Charities_UUID_charities`) + REFERENCES `apbaluna`.`Charities` (`UUID_charities`) ON DELETE NO ACTION ON UPDATE NO ACTION) + ENGINE = InnoDB; """; try (Connection conn = connection.getMySqlConnection(); @@ -111,17 +114,23 @@ public void addAPIDataToTable(List charities){ conn = connection.getMySqlConnection(); conn.setAutoCommit(false); String sql_query = """ - INSERT INTO charities (org_number, charity_name, charity_link, pre_approved, status) - VALUES (?, ?, ?, ?, ?) + INSERT IGNORE INTO Charities (UUID_charities, org_number, charity_name, charity_link, pre_approved, status) + VALUES (?, ?, ?, ?, ?, ?) + ON DUPLICATE KEY UPDATE + charity_name = VALUES(charity_name), + charity_link = VALUES(charity_link), + pre_approved = VALUES(pre_approved), + status = VALUES(status) """; try (PreparedStatement ps = conn.prepareStatement(sql_query)) { for (Charity charity : charities) { - ps.setString(1, charity.getOrg_number().replaceAll("\\s", "")); - ps.setString(2, charity.getName()); - ps.setString(3, charity.getDescription()); - ps.setBoolean(4, charity.getPreApproved()); // Description is the link - ps.setString(5, charity.getStatus()); + ps.setString(1, charity.getUUID().toString()); + ps.setString(2, charity.getOrg_number().replaceAll("\\s", "")); + ps.setString(3, charity.getName()); + ps.setString(4, charity.getDescription()); + ps.setBoolean(5, charity.getPreApproved()); // Description is the link + ps.setString(6, charity.getStatus()); ps.addBatch(); } @@ -137,6 +146,7 @@ INSERT INTO charities (org_number, charity_name, charity_link, pre_approved, sta ex.printStackTrace(); } } + e.printStackTrace(); throw new RuntimeException("ERROR: Something went wrong during updating charities table."); } finally {