diff --git a/backend/build.gradle b/backend/build.gradle index 1183c6c..e0d33d7 100644 --- a/backend/build.gradle +++ b/backend/build.gradle @@ -28,14 +28,14 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-actuator' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-webmvc' - implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:3.0.3' implementation 'org.springframework.boot:spring-boot-starter-websocket' + implementation 'org.springframework.boot:spring-boot-h2console' + implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:3.0.3' //implementation 'org.springframework.boot:spring-boot-starter-security' //implementation 'org.springframework.boot:spring-boot-starter-security-oauth2-resource-server' compileOnly 'org.projectlombok:lombok' runtimeOnly 'org.postgresql:postgresql' runtimeOnly 'com.h2database:h2:2.4.240' - implementation 'org.springframework.boot:spring-boot-h2console' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-data-jpa-test' testImplementation 'org.springframework.boot:spring-boot-starter-webmvc-test' diff --git a/backend/src/main/java/net/kpuig/concord/backend/controllers/UserProfileController.java b/backend/src/main/java/net/kpuig/concord/backend/controllers/UserProfileController.java new file mode 100644 index 0000000..adfb15e --- /dev/null +++ b/backend/src/main/java/net/kpuig/concord/backend/controllers/UserProfileController.java @@ -0,0 +1,31 @@ +package net.kpuig.concord.backend.controllers; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; + +import net.kpuig.concord.backend.datamodels.userprofile.GetAllUserProfilesResponse; +import net.kpuig.concord.backend.datamodels.userprofile.GetUserProfileResponse; +import net.kpuig.concord.backend.services.UserProfileService; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.RequestParam; + + + +@RestController +@RequestMapping("/user-profile") +public class UserProfileController { + @Autowired + private UserProfileService userProfileService; + + @GetMapping("/") + public GetAllUserProfilesResponse getAllUserProfiles() { + return userProfileService.getAllUserProfiles(); + } + + @GetMapping("/{id}") + public GetUserProfileResponse getMethodName(@RequestParam String id) { + return userProfileService.getUserProfile(id); + } + +} diff --git a/backend/src/main/java/net/kpuig/concord/backend/datamodels/Channel.java b/backend/src/main/java/net/kpuig/concord/backend/datamodels/channel/Channel.java similarity index 80% rename from backend/src/main/java/net/kpuig/concord/backend/datamodels/Channel.java rename to backend/src/main/java/net/kpuig/concord/backend/datamodels/channel/Channel.java index 0063f51..c9e5e2e 100644 --- a/backend/src/main/java/net/kpuig/concord/backend/datamodels/Channel.java +++ b/backend/src/main/java/net/kpuig/concord/backend/datamodels/channel/Channel.java @@ -1,4 +1,4 @@ -package net.kpuig.concord.backend.datamodels; +package net.kpuig.concord.backend.datamodels.channel; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; @@ -6,7 +6,7 @@ import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.ManyToOne; import lombok.Data; -import net.kpuig.concord.backend.datamodels.enums.ChannelType; +import net.kpuig.concord.backend.datamodels.server.Server; @Data @Entity(name = "channel") diff --git a/backend/src/main/java/net/kpuig/concord/backend/datamodels/enums/ChannelType.java b/backend/src/main/java/net/kpuig/concord/backend/datamodels/channel/ChannelType.java similarity index 54% rename from backend/src/main/java/net/kpuig/concord/backend/datamodels/enums/ChannelType.java rename to backend/src/main/java/net/kpuig/concord/backend/datamodels/channel/ChannelType.java index 0ff7eaa..3811224 100644 --- a/backend/src/main/java/net/kpuig/concord/backend/datamodels/enums/ChannelType.java +++ b/backend/src/main/java/net/kpuig/concord/backend/datamodels/channel/ChannelType.java @@ -1,4 +1,4 @@ -package net.kpuig.concord.backend.datamodels.enums; +package net.kpuig.concord.backend.datamodels.channel; public enum ChannelType { TEXT_CHANNEL, diff --git a/backend/src/main/java/net/kpuig/concord/backend/datamodels/Message.java b/backend/src/main/java/net/kpuig/concord/backend/datamodels/message/Message.java similarity index 73% rename from backend/src/main/java/net/kpuig/concord/backend/datamodels/Message.java rename to backend/src/main/java/net/kpuig/concord/backend/datamodels/message/Message.java index 2512f7d..9ebe032 100644 --- a/backend/src/main/java/net/kpuig/concord/backend/datamodels/Message.java +++ b/backend/src/main/java/net/kpuig/concord/backend/datamodels/message/Message.java @@ -1,4 +1,4 @@ -package net.kpuig.concord.backend.datamodels; +package net.kpuig.concord.backend.datamodels.message; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; @@ -6,6 +6,8 @@ import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.ManyToOne; import lombok.Data; +import net.kpuig.concord.backend.datamodels.channel.Channel; +import net.kpuig.concord.backend.datamodels.userprofile.UserProfile; @Data @Entity(name = "message") diff --git a/backend/src/main/java/net/kpuig/concord/backend/datamodels/Server.java b/backend/src/main/java/net/kpuig/concord/backend/datamodels/server/Server.java similarity index 87% rename from backend/src/main/java/net/kpuig/concord/backend/datamodels/Server.java rename to backend/src/main/java/net/kpuig/concord/backend/datamodels/server/Server.java index 3d0a198..3e61626 100644 --- a/backend/src/main/java/net/kpuig/concord/backend/datamodels/Server.java +++ b/backend/src/main/java/net/kpuig/concord/backend/datamodels/server/Server.java @@ -1,4 +1,4 @@ -package net.kpuig.concord.backend.datamodels; +package net.kpuig.concord.backend.datamodels.server; import java.net.URL; diff --git a/backend/src/main/java/net/kpuig/concord/backend/datamodels/userprofile/GetAllUserProfilesResponse.java b/backend/src/main/java/net/kpuig/concord/backend/datamodels/userprofile/GetAllUserProfilesResponse.java new file mode 100644 index 0000000..85ee79f --- /dev/null +++ b/backend/src/main/java/net/kpuig/concord/backend/datamodels/userprofile/GetAllUserProfilesResponse.java @@ -0,0 +1,10 @@ +package net.kpuig.concord.backend.datamodels.userprofile; + +import java.util.List; + +import lombok.Data; + +@Data +public class GetAllUserProfilesResponse { + private List userProfiles; +} diff --git a/backend/src/main/java/net/kpuig/concord/backend/datamodels/userprofile/GetUserProfileResponse.java b/backend/src/main/java/net/kpuig/concord/backend/datamodels/userprofile/GetUserProfileResponse.java new file mode 100644 index 0000000..f81a07d --- /dev/null +++ b/backend/src/main/java/net/kpuig/concord/backend/datamodels/userprofile/GetUserProfileResponse.java @@ -0,0 +1,9 @@ +package net.kpuig.concord.backend.datamodels.userprofile; + +import lombok.Data; + +@Data +public class GetUserProfileResponse { + private Long id; + private String username; +} diff --git a/backend/src/main/java/net/kpuig/concord/backend/datamodels/UserProfile.java b/backend/src/main/java/net/kpuig/concord/backend/datamodels/userprofile/UserProfile.java similarity index 85% rename from backend/src/main/java/net/kpuig/concord/backend/datamodels/UserProfile.java rename to backend/src/main/java/net/kpuig/concord/backend/datamodels/userprofile/UserProfile.java index d2dfeb4..f45bead 100644 --- a/backend/src/main/java/net/kpuig/concord/backend/datamodels/UserProfile.java +++ b/backend/src/main/java/net/kpuig/concord/backend/datamodels/userprofile/UserProfile.java @@ -1,4 +1,4 @@ -package net.kpuig.concord.backend.datamodels; +package net.kpuig.concord.backend.datamodels.userprofile; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; diff --git a/backend/src/main/java/net/kpuig/concord/backend/repositories/ChannelRepository.java b/backend/src/main/java/net/kpuig/concord/backend/repositories/ChannelRepository.java index e9ec97a..582be30 100644 --- a/backend/src/main/java/net/kpuig/concord/backend/repositories/ChannelRepository.java +++ b/backend/src/main/java/net/kpuig/concord/backend/repositories/ChannelRepository.java @@ -3,7 +3,7 @@ package net.kpuig.concord.backend.repositories; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; -import net.kpuig.concord.backend.datamodels.Channel; +import net.kpuig.concord.backend.datamodels.channel.Channel; @Repository public interface ChannelRepository extends JpaRepository { diff --git a/backend/src/main/java/net/kpuig/concord/backend/repositories/MessageRepository.java b/backend/src/main/java/net/kpuig/concord/backend/repositories/MessageRepository.java index 2233d1a..a03bb3a 100644 --- a/backend/src/main/java/net/kpuig/concord/backend/repositories/MessageRepository.java +++ b/backend/src/main/java/net/kpuig/concord/backend/repositories/MessageRepository.java @@ -3,7 +3,7 @@ package net.kpuig.concord.backend.repositories; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; -import net.kpuig.concord.backend.datamodels.Message; +import net.kpuig.concord.backend.datamodels.message.Message; @Repository public interface MessageRepository extends JpaRepository { diff --git a/backend/src/main/java/net/kpuig/concord/backend/repositories/ServerRepository.java b/backend/src/main/java/net/kpuig/concord/backend/repositories/ServerRepository.java index c0bf2e0..1cf4b9a 100644 --- a/backend/src/main/java/net/kpuig/concord/backend/repositories/ServerRepository.java +++ b/backend/src/main/java/net/kpuig/concord/backend/repositories/ServerRepository.java @@ -3,7 +3,7 @@ package net.kpuig.concord.backend.repositories; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; -import net.kpuig.concord.backend.datamodels.Server; +import net.kpuig.concord.backend.datamodels.server.Server; @Repository public interface ServerRepository extends JpaRepository { diff --git a/backend/src/main/java/net/kpuig/concord/backend/repositories/UserProfileRepository.java b/backend/src/main/java/net/kpuig/concord/backend/repositories/UserProfileRepository.java index b566da6..d2624e3 100644 --- a/backend/src/main/java/net/kpuig/concord/backend/repositories/UserProfileRepository.java +++ b/backend/src/main/java/net/kpuig/concord/backend/repositories/UserProfileRepository.java @@ -1,9 +1,11 @@ package net.kpuig.concord.backend.repositories; +import java.util.List; + import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; -import net.kpuig.concord.backend.datamodels.UserProfile; +import net.kpuig.concord.backend.datamodels.userprofile.UserProfile; @Repository public interface UserProfileRepository extends JpaRepository { diff --git a/backend/src/main/java/net/kpuig/concord/backend/services/UserProfileService.java b/backend/src/main/java/net/kpuig/concord/backend/services/UserProfileService.java new file mode 100644 index 0000000..056eb70 --- /dev/null +++ b/backend/src/main/java/net/kpuig/concord/backend/services/UserProfileService.java @@ -0,0 +1,36 @@ +package net.kpuig.concord.backend.services; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import net.kpuig.concord.backend.datamodels.userprofile.GetAllUserProfilesResponse; +import net.kpuig.concord.backend.datamodels.userprofile.GetUserProfileResponse; +import net.kpuig.concord.backend.repositories.UserProfileRepository; + +@Service +public class UserProfileService { + @Autowired + private UserProfileRepository userProfileRepository; + + public GetAllUserProfilesResponse getAllUserProfiles() { + GetAllUserProfilesResponse response = new GetAllUserProfilesResponse(); + response.setUserProfiles(userProfileRepository.findAll().stream().map(userProfile -> { + GetUserProfileResponse userProfileResponse = new GetUserProfileResponse(); + userProfileResponse.setId(userProfile.getId()); + userProfileResponse.setUsername(userProfile.getUsername()); + return userProfileResponse; + }).toList()); + return response; + } + + public GetUserProfileResponse getUserProfile(String id) { + GetUserProfileResponse response = new GetUserProfileResponse(); + userProfileRepository.findById(Long.parseLong(id)).ifPresent(userProfile -> { + response.setId(userProfile.getId()); + response.setUsername(userProfile.getUsername()); + }); + return response; + } +} diff --git a/backend/src/main/resources/application.properties b/backend/src/main/resources/application.properties index 1ed8fd4..47150d7 100644 --- a/backend/src/main/resources/application.properties +++ b/backend/src/main/resources/application.properties @@ -8,4 +8,8 @@ spring.datasource.password=password spring.jpa.hibernate.ddl-auto=update logging.level.org.springframework=INFO logging.level.com.example=DEBUG -server.port=8080 \ No newline at end of file +server.port=8080 +springdoc.api-docs.enabled=true +springdoc.api-docs.path=/v3/api-docs +springdoc.swagger-ui.enabled=true +springdoc.swagger-ui.path=/swagger \ No newline at end of file