From 5a02351a0071aed183fcf3927e7d976e623e3641 Mon Sep 17 00:00:00 2001 From: silrenan <75952546+silrenan@users.noreply.github.com> Date: Wed, 28 May 2025 15:03:02 -0300 Subject: [PATCH] implement removeById method to delete a task by ID, update related tests and swaps void to boolean from baseDAO. Signed-off-by: silrenan <75952546+silrenan@users.noreply.github.com>renan <75952546+silrenan@users.noreply.github.com> --- SETUP.md | 5 ++++ .../pedr0limpio/resources/TaskResource.java | 7 ++++- .../br/com/pedr0limpio/services/MySQLDAO.java | 27 ++++++++++++++++--- .../com/pedr0limpio/services/TaskBaseDAO.java | 2 +- 4 files changed, 36 insertions(+), 5 deletions(-) diff --git a/SETUP.md b/SETUP.md index e762021..6f20de8 100644 --- a/SETUP.md +++ b/SETUP.md @@ -72,7 +72,12 @@ POST http://localhost:8080/graphql })\n }" } +### +GRAPHQL http://localhost:8080/graphql +mutation { + deleteById(id: 14) +} ### ``` 3. Useful end-points: diff --git a/src/main/java/br/com/pedr0limpio/resources/TaskResource.java b/src/main/java/br/com/pedr0limpio/resources/TaskResource.java index 104c6f1..d82932d 100644 --- a/src/main/java/br/com/pedr0limpio/resources/TaskResource.java +++ b/src/main/java/br/com/pedr0limpio/resources/TaskResource.java @@ -64,9 +64,14 @@ public Task editById(int id, Task taskFor) { //TODO[#4]: Implement the editById( @Mutation @Transactional - public void deleteById(int id) { //TODO[#5]: Implement the deleteById(int id) method to delete a task. + public String deleteById(int id) { try { + Task existing = taskBaseDAO.getById(id); + if (existing == null) { + return "task id " + id + " not found"; + } taskBaseDAO.removeById(id); + return "task id " + id + " deleted"; } catch (Exception e) { LOG.error("Error deleting task", e); throw new RuntimeException("Error deleting task", e); diff --git a/src/main/java/br/com/pedr0limpio/services/MySQLDAO.java b/src/main/java/br/com/pedr0limpio/services/MySQLDAO.java index 2280c66..d67c9fa 100644 --- a/src/main/java/br/com/pedr0limpio/services/MySQLDAO.java +++ b/src/main/java/br/com/pedr0limpio/services/MySQLDAO.java @@ -182,8 +182,29 @@ public void update(int idFrom, Task taskFor) { //TODO[#11]: Implement update(int } @Override - public void removeById(int id) { //TODO[#12]: Implement removeById(int id) to delete a task by id in DB. - + public boolean removeById(int id) { + String deleteTaskTagsSql = "DELETE FROM TASK_TAGS WHERE task_id = ?"; + String deleteTaskSql = "DELETE FROM TASKS WHERE task_id = ?"; + int affectedRows = 0; + try (Connection conn = DriverManager.getConnection(url, username, password)) { + conn.setAutoCommit(false); + try (PreparedStatement stmt1 = conn.prepareStatement(deleteTaskTagsSql)) { + stmt1.setInt(1, id); + stmt1.executeUpdate(); + } + try (PreparedStatement stmt2 = conn.prepareStatement(deleteTaskSql)) { + stmt2.setInt(1, id); + affectedRows = stmt2.executeUpdate(); + } + conn.commit(); + } catch (SQLException e) { + LOGGER.error(e.getMessage()); + try (Connection conn = DriverManager.getConnection(url, username, password)) { + conn.rollback(); + } catch (SQLException rollbackException) { + LOGGER.error(rollbackException.getMessage()); + } + } + return affectedRows > 0; } } - diff --git a/src/main/java/br/com/pedr0limpio/services/TaskBaseDAO.java b/src/main/java/br/com/pedr0limpio/services/TaskBaseDAO.java index e5dc876..a7b1c28 100644 --- a/src/main/java/br/com/pedr0limpio/services/TaskBaseDAO.java +++ b/src/main/java/br/com/pedr0limpio/services/TaskBaseDAO.java @@ -9,6 +9,6 @@ public abstract class TaskBaseDAO { public abstract List getAllTasks(); public abstract Task getById(int id); public abstract void update(int idFrom, Task taskFor); - public abstract void removeById(int id); + public abstract boolean removeById(int id); }