diff --git a/backend/src/main/java/com/alttd/altitudeweb/controllers/chat/ChatController.java b/backend/src/main/java/com/alttd/altitudeweb/controllers/chat/ChatController.java index 860c42c..709bed2 100644 --- a/backend/src/main/java/com/alttd/altitudeweb/controllers/chat/ChatController.java +++ b/backend/src/main/java/com/alttd/altitudeweb/controllers/chat/ChatController.java @@ -40,4 +40,17 @@ public class ChatController implements ChatApi { .map(ResponseEntity::ok) .orElse(ResponseEntity.notFound().build()); } + + @Override + public ResponseEntity getPartyName(String id) { + int partyId; + try { + partyId = Integer.parseInt(id); + } catch (NumberFormatException e) { + return ResponseEntity.badRequest().build(); + } + return chatService.getPartyName(partyId) + .map(ResponseEntity::ok) + .orElse(ResponseEntity.notFound().build()); + } } diff --git a/backend/src/main/java/com/alttd/altitudeweb/services/chat/ChatService.java b/backend/src/main/java/com/alttd/altitudeweb/services/chat/ChatService.java index cfc55d3..c177231 100644 --- a/backend/src/main/java/com/alttd/altitudeweb/services/chat/ChatService.java +++ b/backend/src/main/java/com/alttd/altitudeweb/services/chat/ChatService.java @@ -2,10 +2,10 @@ package com.alttd.altitudeweb.services.chat; import com.alttd.altitudeweb.controllers.chat.ChatMessage; import com.alttd.altitudeweb.controllers.chat.ChatMessageMapper; -import com.alttd.altitudeweb.controllers.chat.ChatMessageType; import com.alttd.altitudeweb.database.Databases; import com.alttd.altitudeweb.database.chat.ChatLogMapper; import com.alttd.altitudeweb.database.chat.NicknameMapper; +import com.alttd.altitudeweb.database.chat.PartyMapper; import com.alttd.altitudeweb.database.luckperms.UUIDUsernameMapper; import com.alttd.altitudeweb.model.PermissionClaimDto; import com.alttd.altitudeweb.model.PlayerNameDto; @@ -163,4 +163,9 @@ public class ChatService { return Optional.of(playerNameDto); } + public Optional getPartyName(int id) { + return Connection.getConnection(Databases.CHAT) + .runQueryWithResult(sqlSession -> sqlSession.getMapper(PartyMapper.class).getPartyName(id)); + } + } diff --git a/database/src/main/java/com/alttd/altitudeweb/database/chat/PartyMapper.java b/database/src/main/java/com/alttd/altitudeweb/database/chat/PartyMapper.java new file mode 100644 index 0000000..1eb9fd1 --- /dev/null +++ b/database/src/main/java/com/alttd/altitudeweb/database/chat/PartyMapper.java @@ -0,0 +1,16 @@ +package com.alttd.altitudeweb.database.chat; + +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.Optional; + +public interface PartyMapper { + + @Select(""" + SELECT party_name FROM parties + WHERE id = #{id} + """) + Optional getPartyName(@Param("id") int id); + +} diff --git a/database/src/main/java/com/alttd/altitudeweb/setup/InitializeChat.java b/database/src/main/java/com/alttd/altitudeweb/setup/InitializeChat.java index f57c925..d7ad763 100644 --- a/database/src/main/java/com/alttd/altitudeweb/setup/InitializeChat.java +++ b/database/src/main/java/com/alttd/altitudeweb/setup/InitializeChat.java @@ -3,7 +3,7 @@ package com.alttd.altitudeweb.setup; import com.alttd.altitudeweb.database.Databases; import com.alttd.altitudeweb.database.chat.ChatLogMapper; import com.alttd.altitudeweb.database.chat.NicknameMapper; -import com.alttd.altitudeweb.database.votingplugin.VotingPluginUsersMapper; +import com.alttd.altitudeweb.database.chat.PartyMapper; import lombok.extern.slf4j.Slf4j; @Slf4j @@ -14,6 +14,7 @@ public class InitializeChat { Connection.getConnection(Databases.CHAT, (configuration) -> { configuration.addMapper(ChatLogMapper.class); configuration.addMapper(NicknameMapper.class); + configuration.addMapper(PartyMapper.class); }).join(); log.debug("Initialized Chat"); } diff --git a/open_api/src/main/resources/chat-api.yml b/open_api/src/main/resources/chat-api.yml index c94e837..3fc474b 100644 --- a/open_api/src/main/resources/chat-api.yml +++ b/open_api/src/main/resources/chat-api.yml @@ -68,6 +68,30 @@ paths: $ref: "#/components/schemas/PlayerName" "404": description: Player not found + + /chat/party/{id}/name: + get: + tags: + - chat + summary: Gets the name, of the party based on the id + operationId: getPartyName + parameters: + - name: id + in: path + required: true + schema: + type: string + responses: + "200": + description: The party name + content: + application/json: + schema: + type: string + "400": + description: Invalid ID + "404": + description: Party not found components: schemas: PlayerName: