Skip to content

Commit

Permalink
Merge pull request #179 from Nawabali-project/feature/167/updateAll
Browse files Browse the repository at this point in the history
게시글 일괄 조회 및 일괄수정 API 추가
  • Loading branch information
peter-jaesungyu authored May 2, 2024
2 parents ed65d51 + e2e0bb8 commit 235d1d2
Show file tree
Hide file tree
Showing 12 changed files with 203 additions and 84 deletions.
27 changes: 2 additions & 25 deletions .idea/dataSources.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-cache'

// elastic search
// implementation 'org.springframework.boot:spring-boot-starter-data-elasticsearch'
implementation 'org.springframework.data:spring-data-elasticsearch:4.2.2'
implementation 'org.springframework.boot:spring-boot-starter-data-elasticsearch'
// implementation 'org.springframework.data:spring-data-elasticsearch:4.2.2'

// Querydsl 추가
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
Expand Down
84 changes: 42 additions & 42 deletions src/main/java/com/nawabali/nawabali/config/ElasticSearchConfig.java
Original file line number Diff line number Diff line change
@@ -1,42 +1,42 @@
package com.nawabali.nawabali.config;

import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.elasticsearch.client.ClientConfiguration;
import org.springframework.data.elasticsearch.client.RestClients;
import org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration;
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;

@Configuration
@EnableElasticsearchRepositories
public class ElasticSearchConfig extends AbstractElasticsearchConfiguration {

@Value("${spring.elasticsearch.username}")
private String username;

@Value("${spring.elasticsearch.password}")
private String password;

@Value("${spring.elasticsearch.rest.uris}")
private String[] esHost;

@Override
@Bean
public RestHighLevelClient elasticsearchClient() {
final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
.connectedTo(esHost[0])
.withBasicAuth(username,password)
.build();
return RestClients.create(clientConfiguration).rest();
}

@Bean
public ElasticsearchOperations elasticsearchOperations(){
return new ElasticsearchRestTemplate(elasticsearchClient());
}
}

//package com.nawabali.nawabali.config;
//
//import org.elasticsearch.client.RestHighLevelClient;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.data.elasticsearch.client.ClientConfiguration;
//import org.springframework.data.elasticsearch.client.RestClients;
//import org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration;
//import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
//import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
//import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;
//
//@Configuration
//@EnableElasticsearchRepositories
//public class ElasticSearchConfig extends AbstractElasticsearchConfiguration {
//
// @Value("${spring.elasticsearch.username}")
// private String username;
//
// @Value("${spring.elasticsearch.password}")
// private String password;
//
// @Value("${spring.elasticsearch.rest.uris}")
// private String[] esHost;
//
// @Override
// @Bean
// public RestHighLevelClient elasticsearchClient() {
// final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
// .connectedTo(esHost[0])
// .withBasicAuth(username,password)
// .build();
// return RestClients.create(clientConfiguration).rest();
// }
//
// @Bean
// public ElasticsearchOperations elasticsearchOperations(){
// return new ElasticsearchRestTemplate(elasticsearchClient());
// }
//}
//
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Excepti
.requestMatchers(
"/users/logout","/users/signup","/users/check-nickname", "users/info").permitAll()
.requestMatchers(HttpMethod.POST, "/users/login").permitAll()
.requestMatchers("/posts","/posts/district/*").permitAll()
.requestMatchers("/posts","/posts/district/*", "posts/searchAll", "posts/updateAll").permitAll()
.requestMatchers(HttpMethod.GET, "/posts/**").permitAll() // 게시글 상세 조회 허가
.requestMatchers("/comments/check/posts/**").permitAll()
.requestMatchers("/swagger/**","/swagger-ui/**","/v3/api-docs/**").permitAll()
Expand Down
14 changes: 14 additions & 0 deletions src/main/java/com/nawabali/nawabali/controller/PostController.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.nawabali.nawabali.constant.Category;
import com.nawabali.nawabali.constant.Period;
import com.nawabali.nawabali.domain.elasticsearch.PostSearch;
import com.nawabali.nawabali.dto.PostDto;
import com.nawabali.nawabali.security.UserDetailsImpl;
import com.nawabali.nawabali.service.PostService;
Expand Down Expand Up @@ -67,6 +68,19 @@ public ResponseEntity<Slice<PostDto.ResponseDto>> getPostsByLatest(
Slice<PostDto.ResponseDto> postsSlice = postService.getPostsByLatest(pageable);
return ResponseEntity.ok(postsSlice);
}
// 전체 게시물 조회(지도용)
@Operation(
summary = "전체 게시글 조회",
description = "ES로 전체 조회, 등록일 기준 내림차순 정렬")
@GetMapping("/searchAll")
public List<PostSearch> searchAll(){
return postService.searchAllPosts();
}

@PatchMapping("/updateAll")
public void updateAll() throws IOException {
postService.updateAll();
}


// 유저 닉네임으로 그 유저의 게시물들 조회
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/com/nawabali/nawabali/domain/Post.java
Original file line number Diff line number Diff line change
Expand Up @@ -68,4 +68,7 @@ public void update(String contents) {
}


public void updateImages(List<PostImage> existsImages) {
this.images = existsImages;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,9 @@ public class PostSearch {
@Field(type = FieldType.Keyword)
private String mainImageUrl;

@Field(type=FieldType.Keyword)
private String resizedImageUrl;

@Field(type = FieldType.Boolean)
private boolean multiImages;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ public class GlobalExceptionAdvice {
@Value("${error.detailed-messages}")
private boolean detailedMessages;

// CustomException: Error Code에 정의된 비즈니스 로직 오류
// CustomException: Error Code에 정의된 비즈니스 로직 오류
// @ExceptionHandler(CustomException.class)
// public ResponseEntity<ErrorResponse> handleCustomException(CustomException e) {
//
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public class RedisConfig {
public RedisConnectionFactory redisConnectionFactory() {

RedisStandaloneConfiguration config = new RedisStandaloneConfiguration(host, redisProperties.getPort());
config.setPassword(password);
// config.setPassword(password);
return new LettuceConnectionFactory(config);

// Localhost 전용
Expand Down
20 changes: 16 additions & 4 deletions src/main/java/com/nawabali/nawabali/s3/AwsS3Service.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
package com.nawabali.nawabali.s3;

import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.model.CannedAccessControlList;
import com.amazonaws.services.s3.model.DeleteObjectRequest;
import com.amazonaws.services.s3.model.ObjectMetadata;
import com.amazonaws.services.s3.model.PutObjectRequest;
import com.amazonaws.services.s3.model.*;
import com.nawabali.nawabali.exception.CustomException;
import com.nawabali.nawabali.exception.ErrorCode;
import lombok.RequiredArgsConstructor;
Expand Down Expand Up @@ -113,4 +110,19 @@ public String uploadSingleFile(MultipartFile multipartFile, String dirName){
throw new CustomException(ErrorCode.PHOTO_UPLOAD_ERROR);
}
}

public S3Object getS3Object(String objectKey){
return amazonS3.getObject(bucket, objectKey);
}

public String getContentType(String objectKey){
S3Object s3Object = amazonS3.getObject(bucket, objectKey);
return s3Object.getObjectMetadata().getContentType();
}

public String saveAndGetUrl(String resizedFilePath, ByteArrayInputStream inputStream, ObjectMetadata resizedMetadata){
amazonS3.putObject(new PutObjectRequest(bucket, resizedFilePath, inputStream, resizedMetadata)
.withCannedAcl(CannedAccessControlList.PublicRead));
return amazonS3.getUrl(bucket, resizedFilePath).toString();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseCookie;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;

Expand Down
Loading

0 comments on commit 235d1d2

Please sign in to comment.