Skip to content

Commit

Permalink
Merge pull request #50 from KUIT-Space/feat/#17/게시판-게시글-조회
Browse files Browse the repository at this point in the history
feat/#17/게시판 게시글 조회
  • Loading branch information
arkchive authored Aug 6, 2024
2 parents 3f6b7a6 + 9c78d96 commit 1acbbe6
Show file tree
Hide file tree
Showing 11 changed files with 380 additions and 92 deletions.
Empty file modified gradlew
100755 → 100644
Empty file.
184 changes: 92 additions & 92 deletions gradlew.bat
Original file line number Diff line number Diff line change
@@ -1,92 +1,92 @@
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem

@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################

@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal

set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%

@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi

@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"

@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome

set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute

echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2

goto fail

:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe

if exist "%JAVA_EXE%" goto execute

echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2

goto fail

:execute
@rem Setup the command line

set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar


@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*

:end
@rem End local scope for the variables with windows NT shell
if %ERRORLEVEL% equ 0 goto mainEnd

:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%

:mainEnd
if "%OS%"=="Windows_NT" endlocal

:omega
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem

@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################

@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal

set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%

@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi

@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"

@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome

set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute

echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2

goto fail

:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe

if exist "%JAVA_EXE%" goto execute

echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2

goto fail

:execute
@rem Setup the command line

set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar


@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*

:end
@rem End local scope for the variables with windows NT shell
if %ERRORLEVEL% equ 0 goto mainEnd

:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%

:mainEnd
if "%OS%"=="Windows_NT" endlocal

:omega
35 changes: 35 additions & 0 deletions src/main/java/space/space_spring/controller/PostController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package space.space_spring.controller;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import space.space_spring.argument_resolver.jwtLogin.JwtLoginAuth;
import space.space_spring.dto.post.ReadPostsResponse;
import space.space_spring.entity.UserSpace;
import space.space_spring.response.BaseResponse;
import space.space_spring.service.PostService;
import space.space_spring.util.userSpace.UserSpaceUtils;

import java.util.List;
import java.util.Optional;

@RestController
@RequiredArgsConstructor
@RequestMapping("/space/{spaceId}")
@Slf4j
public class PostController {
private final PostService postService;
private final UserSpaceUtils userSpaceUtils;

@GetMapping("/board")
public BaseResponse<List<ReadPostsResponse>> getBoard(
@JwtLoginAuth Long userId,
@PathVariable Long spaceId,
@RequestParam(defaultValue = "all") String filter) {
Optional<UserSpace> userInSpace = userSpaceUtils.isUserInSpace(userId, spaceId);
log.info("UserName = {}, UserSpaceAuth = {}", userInSpace.get().getUserName(), userInSpace.get().getUserSpaceAuth());
List<ReadPostsResponse> board = postService.getAllPosts(spaceId, filter);
return new BaseResponse<>(board);
}

}
17 changes: 17 additions & 0 deletions src/main/java/space/space_spring/dao/PostDao.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package space.space_spring.dao;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import space.space_spring.entity.Post;
import space.space_spring.entity.Space;

import java.util.List;

@Repository
public interface PostDao extends JpaRepository<Post, Long> {

List<Post> findBySpace(Space space);

List<Post> findBySpaceAndType(Space space, String type);

}
60 changes: 60 additions & 0 deletions src/main/java/space/space_spring/dto/post/ReadPostsResponse.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package space.space_spring.dto.post;

import lombok.*;
import space.space_spring.entity.Post;
import space.space_spring.entity.PostImage;
import space.space_spring.entity.UserSpace;
import space.space_spring.util.post.ConvertCreatedDate;

import java.util.List;

@Builder
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class ReadPostsResponse {

// 스페이스 관련
private Long spaceId;

// 유저 관련
private Long userId;
private String userProfileImg;
private String userName;

// 게시글 관련
private Long postId;
private String title;
private String content;
private List<String> postImage;
private String time;
private String type;
private int post_count;

// 댓글 및 좋아요
private int comment_count;
private int like_count;

public static ReadPostsResponse of(Post post, int postCount, UserSpace userSpace) {
List<String> postImageUrls = post.getPostImages().stream()
.map(PostImage::getPostImgUrl)
.toList();

return ReadPostsResponse.builder()
.postId(post.getPostId())
.spaceId(post.getSpace().getSpaceId())
.userId(post.getUser().getUserId())
.userProfileImg(userSpace != null ? userSpace.getUserProfileImg() : null)
.userName(userSpace != null ? userSpace.getUserName() : null)
.title(post.getTitle())
.content(post.getContent())
.time(ConvertCreatedDate.setCreatedDate(post.getCreatedAt()))
.type(post.getType())
.post_count(postCount)
.comment_count(post.getPostComments().size())
.like_count(post.getLike())
.postImage(postImageUrls)
.build();
}
}
2 changes: 2 additions & 0 deletions src/main/java/space/space_spring/entity/BaseEntity.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package space.space_spring.entity;

import jakarta.persistence.*;
import lombok.Getter;

import java.time.LocalDateTime;

@Getter
@MappedSuperclass
public abstract class BaseEntity {

Expand Down
42 changes: 42 additions & 0 deletions src/main/java/space/space_spring/entity/Post.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package space.space_spring.entity;

import jakarta.persistence.*;
import lombok.Getter;

import java.util.List;

@Entity
@Table(name = "Posts")
@Getter
public class Post extends BaseEntity {
@Id @GeneratedValue
@Column(name = "post_id")
private Long postId;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
private User user;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "space_id")
private Space space;

@Column(name = "title")
private String title;

@Column(name = "post_content")
private String content;

@Column(name = "type")
private String type;

@Column(name = "post_like")
private int like;

@OneToMany(mappedBy = "post")
private List<PostImage> postImages;

@OneToMany(mappedBy = "post")
private List<PostComment> postComments;

}
34 changes: 34 additions & 0 deletions src/main/java/space/space_spring/entity/PostComment.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package space.space_spring.entity;

import jakarta.persistence.*;
import lombok.Getter;

@Entity
@Table(name = "Post_Comment")
@Getter
public class PostComment extends BaseEntity{
@Id
@GeneratedValue
@Column(name = "comment_id")
private Long commentId;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "space_post_id")
private Post post;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
private User user;

@Column(name = "comment_content")
private String content;

@Column(name = "comment_like")
private int like;

@Column(name = "isReply")
private boolean isReply;

@Column(name = "comment_target_id")
private String targetId;
}
Loading

0 comments on commit 1acbbe6

Please sign in to comment.