From 250758c3bfd7646536b8d6f18696eb274c401bae Mon Sep 17 00:00:00 2001 From: jeffcheasey88 Date: Tue, 26 Mar 2024 21:14:22 +0100 Subject: [PATCH] Route get groups by chapter --- .../backend/repository/DatabaseQuery.java | 1 + .../backend/repository/DatabaseRepository.java | 16 ++++++++++++++++ .../peerat/backend/routes/groups/GroupList.java | 17 +++++++++++++---- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/dev/peerat/backend/repository/DatabaseQuery.java b/src/dev/peerat/backend/repository/DatabaseQuery.java index 166982a..ef249b5 100644 --- a/src/dev/peerat/backend/repository/DatabaseQuery.java +++ b/src/dev/peerat/backend/repository/DatabaseQuery.java @@ -21,6 +21,7 @@ public enum DatabaseQuery { // GROUPS ALL_GROUPS("SELECT * FROM groups"), + ALL_GROUPS_BY_CHAPTER("SELECT * FROM groups WHERE fk_chapter = ?"), GET_GROUP_FOR_PLAYER("SELECT g.* FROM groups g JOIN containsGroups cg ON cg.fk_group = g.id_group WHERE cg.fk_player = ? AND g.fk_chapter = ?"), // AND g.fk_puzzle = ? GET_GROUP_ID_BY_DATA("SELECT id_group FROM groups WHERE name = ? AND (fk_chapter = ?)"), // OR fk_puzzle = ? INSERT_GROUP("INSERT INTO groups (name, fk_chapter) VALUES (?,?)"), diff --git a/src/dev/peerat/backend/repository/DatabaseRepository.java b/src/dev/peerat/backend/repository/DatabaseRepository.java index efd3aac..70f4c02 100644 --- a/src/dev/peerat/backend/repository/DatabaseRepository.java +++ b/src/dev/peerat/backend/repository/DatabaseRepository.java @@ -471,6 +471,22 @@ public class DatabaseRepository { } return null; } + + public List getAllGroupsByChapter(int chapter){ + try { + ensureConnection(); + List list = new ArrayList<>(); + PreparedStatement stmt = DatabaseQuery.ALL_GROUPS_BY_CHAPTER.prepare(this.con); + stmt.setInt(1, chapter); + ResultSet groupResult = stmt.executeQuery(); + while (groupResult.next()) + list.add(makeGroup(groupResult)); + return list; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } /** * Check if a pseudo is available diff --git a/src/dev/peerat/backend/routes/groups/GroupList.java b/src/dev/peerat/backend/routes/groups/GroupList.java index dc0f626..d7b332f 100644 --- a/src/dev/peerat/backend/routes/groups/GroupList.java +++ b/src/dev/peerat/backend/routes/groups/GroupList.java @@ -22,11 +22,20 @@ public class GroupList implements Response { @RouteDoc(path = "/groups", responseCode = 200, responseDescription = "JSON avec la liste des groups") - @Route(path = "^\\/groups$", needLogin = true) - public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception { - context.response(200); + @Route(path = "^\\/groups\\/?(\\d+)?$", needLogin = true) + public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{ + String param = matcher.group(1); + if(param == null){ + JsonArray result = new JsonArray(); + for(Group group : this.repo.getAllGroups()) result.add(group.toJson()); + context.response(200); + writer.write(result.toString()); + return; + } + int chapter = Integer.parseInt(param); JsonArray result = new JsonArray(); - for(Group group : this.repo.getAllGroups()) result.add(group.toJson()); + for(Group group : this.repo.getAllGroupsByChapter(chapter)) result.add(group.toJson()); + context.response(200); writer.write(result.toString()); }