diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DatabaseSetup.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DatabaseSetup.java index a0bdd2c..e5775da 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DatabaseSetup.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DatabaseSetup.java @@ -118,7 +118,7 @@ PRIMARY KEY (`UUID_User`)) `isAnonymous` TINYINT NOT NULL, `language` VARCHAR(45) NOT NULL, `lightmode` TINYINT NOT NULL, - PRIMARY KEY (`User_UUID_User`), + PRIMARY KEY (`UUID_user`), INDEX `fk_Settings_User1_idx` (`UUID_user` ASC) VISIBLE, CONSTRAINT `fk_Settings_User1` FOREIGN KEY (`UUID_user`) @@ -251,14 +251,22 @@ FOREIGN KEY (`User_UUID_User`) """; String charityVanityTable = """ - CREATE TABLE IF NOT EXISTS `apbaluna`.`Charities` ( - `UUID_charities` CHAR(36) NOT NULL, - `org_number` VARCHAR(255) NOT NULL, - `pre_approved` TINYINT NOT NULL, - `status` VARCHAR(255) NOT NULL, - PRIMARY KEY (`UUID_charities`), - UNIQUE INDEX `org_number_UNIQUE` (`org_number` ASC) VISIBLE) - ENGINE = InnoDB; + CREATE TABLE IF NOT EXISTS `apbaluna`.`CharityVanity` ( + `UUID_charity` CHAR(36) NOT NULL, + `charity_name` VARCHAR(255) NOT NULL, + `charity_link` VARCHAR(255) NOT NULL, + `description` TEXT NULL, + `logoURL` TEXT NULL, + `key_values` TEXT NULL, + `logoBLOB` MEDIUMBLOB NULL, + INDEX `fk_CharityVanity_Charities1_idx` (`UUID_charity` ASC) VISIBLE, + PRIMARY KEY (`UUID_charity`), + CONSTRAINT `fk_CharityVanity_Charities1` + FOREIGN KEY (`UUID_charity`) + REFERENCES `apbaluna`.`Charities` (`UUID_charities`) + ON DELETE NO ACTION + ON UPDATE NO ACTION) + ENGINE = InnoDB; """; try (Connection conn = connection.getMySqlConnection(); diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/service/APIToDatabaseService.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/service/APIToDatabaseService.java index cfaa6f5..3edfce7 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/service/APIToDatabaseService.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/service/APIToDatabaseService.java @@ -40,51 +40,52 @@ public void addAPIDataToTable(List charities) { try { conn = connection.getMySqlConnection(); conn.setAutoCommit(false); - String sql_query = - """ - INSERT INTO Charities (UUID_charities, org_number, pre_approved, status) - VALUES (?, ?, ?, ?) - ON DUPLICATE KEY UPDATE - pre_approved = VALUES(pre_approved), - status = VALUES(status); - - INSERT INTO CharityVanity (UUID_charity, charity_name, charity_link, description, logoURL, key_values, logoBlob) - VALUES (?, ?, ?, ?, ?, ?, ?,) - ON DUPLICATE KEY UPDATE - charity_name = VALUES(charity_name), - charity_link = VALUES(charity_link), - description = VALUES(description), - logoURL = VALUES(logoURL), - key_values = VALUES(key_values), - logoBlob = VALUES(logoBlob); - """; - - try (PreparedStatement ps = conn.prepareStatement(sql_query)) { - for (Charity charity : charities) { - if (charity.getUUID() == null) { - ps.setString(1, UUID.randomUUID().toString()); - ps.setString(5, UUID.randomUUID().toString()); - - } else { - ps.setString(1, charity.getUUID().toString()); - ps.setString(5, charity.getUUID().toString()); - } - // Charity - ps.setString(2, charity.getOrg_number().replaceAll("\\s", "")); - ps.setBoolean(3, charity.getPreApproved()); - ps.setString(4, charity.getStatus()); - - // CharityVanity - ps.setString(6, charity.getName()); - ps.setString(7, charity.getURL()); - ps.setString(8, charity.getDescription()); - ps.setString(9, charity.getLogoURL()); - ps.setString(10, charity.getKeyValues()); - ps.setBytes(11, charity.getLogoBlob()); + String sql1 = """ + INSERT INTO Charities (UUID_charities, org_number, pre_approved, status) + VALUES (?, ?, ?, ?) + ON DUPLICATE KEY UPDATE + pre_approved = VALUES(pre_approved), + status = VALUES(status); + """; + + String sql2 = """ + INSERT INTO CharityVanity (UUID_charity, charity_name, charity_link, description, logoURL, key_values, logoBlob) + VALUES (?, ?, ?, ?, ?, ?, ?) + ON DUPLICATE KEY UPDATE + charity_name = VALUES(charity_name), + charity_link = VALUES(charity_link), + description = VALUES(description), + logoURL = VALUES(logoURL), + key_values = VALUES(key_values), + logoBlob = VALUES(logoBlob); + """; + + try (PreparedStatement ps1 = conn.prepareStatement(sql1); + PreparedStatement ps2 = conn.prepareStatement(sql2)) { - ps.addBatch(); + for (Charity charity : charities) { + String uuid = charity.getUUID() == null + ? UUID.randomUUID().toString() + : charity.getUUID().toString(); + + ps1.setString(1, uuid); + ps1.setString(2, charity.getOrg_number().replaceAll("\\s", "")); + ps1.setBoolean(3, charity.getPreApproved()); + ps1.setString(4, charity.getStatus()); + ps1.addBatch(); + + ps2.setString(1, uuid); + ps2.setString(2, charity.getName()); + ps2.setString(3, charity.getURL()); + ps2.setString(4, charity.getDescription()); + ps2.setString(5, charity.getLogoURL()); + ps2.setString(6, charity.getKeyValues()); + ps2.setBytes(7, charity.getLogoBlob()); + ps2.addBatch(); } - ps.executeBatch(); + + ps1.executeBatch(); + ps2.executeBatch(); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); @@ -128,7 +129,7 @@ AND NOT EXISTS ( SELECT 1 FROM Feedback f WHERE f.charity_id = c.UUID_charities ) AND NOT EXISTS ( - SELECT 1 FROM CharityVantiy cv WHERE cv.UUID_charity = c.UUID_charities + SELECT 1 FROM CharityVanity cv WHERE cv.UUID_charity = c.UUID_charities ) AND NOT EXISTS ( SELECT 1 FROM CharityUsers cu WHERE cu.Charities_UUID_charities = c.UUID_charities