Create S3Client bean

This commit is contained in:
2025-11-10 21:56:50 +05:00
parent 6ccb1af8e5
commit 19b555e9f9
7 changed files with 100 additions and 3 deletions

View File

@ -0,0 +1,31 @@
package com.bivashy.backend.composer.config;
import java.net.URI;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;
@Configuration
public class StorageS3Config {
@Value("${spring.s3.endpoint}")
private String endpoint;
@Value("${spring.s3.access-key}")
private String accessKey;
@Value("${spring.s3.secret-key}")
private String secretKey;
@Bean
public S3Client s3Client() {
return S3Client.builder()
.endpointOverride(URI.create(endpoint))
.region(Region.US_WEST_1)
.credentialsProvider(() -> AwsBasicCredentials.create(accessKey, secretKey))
.build();
}
}

View File

@ -0,0 +1,20 @@
package com.bivashy.backend.composer.dto;
public class ErrorResponse {
private final int status;
private final String message;
public ErrorResponse(int status, String message) {
this.status = status;
this.message = message;
}
public int getStatus() {
return status;
}
public String getMessage() {
return message;
}
}

View File

@ -0,0 +1,25 @@
package com.bivashy.backend.composer.exception;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import com.bivashy.backend.composer.dto.ErrorResponse;
@ControllerAdvice
public class GlobalExceptionHandler {
private static final Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);
@ExceptionHandler(DataIntegrityViolationException.class)
public ResponseEntity<ErrorResponse> handleDataIntegrityViolation(DataIntegrityViolationException ex) {
ErrorResponse error = new ErrorResponse(
HttpStatus.CONFLICT.value(),
"Conflict: " + ex.getMostSpecificCause().getMessage());
logger.error("SQL create conflict", ex);
return ResponseEntity.status(HttpStatus.CONFLICT).body(error);
}
}

View File

@ -3,9 +3,14 @@ spring:
name: composer
datasource:
driver-class-name: org.postgresql.Driver
password: password
url: jdbc:postgresql://postgres:5432/db
username: user
username: ${DATABASE_USERNAME}
password: ${DATABASE_PASSWORD}
url: ${DATABASE_URL}
s3:
endpoint: ${S3_ENDPOINT}
access-key: ${S3_ACCESS_KEY}
secret-key: ${S3_SECRET_KEY}
bucket: ${S3_BUCKET}
logging:
level: