Skip to content

Commit

Permalink
Fix: Update APIToDatabaseService.addAPIDataToTable method to match in…
Browse files Browse the repository at this point in the history
…n the previous DatabaseManager file
  • Loading branch information
AdrianBalunan committed Apr 13, 2026
1 parent fe3b0b8 commit ca04a55
Showing 1 changed file with 54 additions and 31 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,39 +36,59 @@ public APIToDatabaseService(DatabaseConnection connection) {
*/
public void addAPIDataToTable(List<Charity> charities) {
Connection conn = null;
int charityCounter = 0;
// Everything charity related except categories
try {
conn = connection.getMySqlConnection();
conn.setAutoCommit(false);
String sql_query =
"""
INSERT INTO Charities (UUID_charities, org_number, charity_name, charity_description, 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)
""";
"""
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.setString(3, charity.getName());
ps.setString(4, "Blank until webscraber works");
ps.setString(5, charity.getDescription());
ps.setBoolean(6, charity.getPreApproved()); // Description is the link
ps.setString(7, charity.getStatus());
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());

ps.addBatch();
}
ps.executeBatch();
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}

// -- Intergerty Check:
Expand Down Expand Up @@ -97,21 +117,24 @@ org_number VARCHAR(255) PRIMARY KEY

String deleteSql =
"""
DELETE FROM Charities c
WHERE NOT EXISTS (
SELECT 1 FROM temp_api_charities t
WHERE t.org_number = c.org_number
)
AND NOT EXISTS (
SELECT 1 FROM Donations d WHERE d.charity_id = c.UUID_charities
)
AND NOT EXISTS (
SELECT 1 FROM Feedback f WHERE f.charity_id = c.UUID_charities
)
AND NOT EXISTS (
SELECT 1 FROM CharityUsers cu WHERE cu.Charities_UUID_charities = c.UUID_charities
);
""";
DELETE FROM Charities c
WHERE NOT EXISTS (
SELECT 1 FROM temp_api_charities t
WHERE t.org_number = c.org_number
)
AND NOT EXISTS (
SELECT 1 FROM Donations d WHERE d.charity_id = c.UUID_charities
)
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
)
AND NOT EXISTS (
SELECT 1 FROM CharityUsers cu WHERE cu.Charities_UUID_charities = c.UUID_charities
);
""";

try (PreparedStatement ps = conn.prepareStatement(deleteSql)) {
ps.executeUpdate();
Expand Down

0 comments on commit ca04a55

Please sign in to comment.