Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion api/src/main/java/com/pinback/api/PinbackApiApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;

import com.pinback.application.config.JobImageConfig;
import com.pinback.application.config.ProfileImageConfig;

@SpringBootApplication(scanBasePackages = {
Expand All @@ -22,7 +23,7 @@
@EnableJpaAuditing
@EnableAsync
@EnableScheduling
@EnableConfigurationProperties(ProfileImageConfig.class)
@EnableConfigurationProperties({ProfileImageConfig.class, JobImageConfig.class})
public class PinbackApiApplication {
public static void main(String[] args) {
SpringApplication.run(PinbackApiApplication.class, args);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,8 @@ protected boolean shouldNotFilter(HttpServletRequest request) throws ServletExce
path.startsWith("/login/oauth2/code/google") ||
path.startsWith("/api/v2/auth/signup") ||
path.startsWith("/api/v3/auth/signup") ||
path.startsWith("/api/v3/auth/google")
path.startsWith("/api/v3/auth/google") ||
path.startsWith("/api/v3/enums/jobs")
;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,10 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
"/login/oauth2/code/google"
).permitAll()

.requestMatchers(
"/api/v3/enums/jobs"
).permitAll()

.anyRequest().authenticated()
)
.formLogin(AbstractHttpConfigurer::disable)
Expand Down
25 changes: 25 additions & 0 deletions api/src/main/java/com/pinback/api/constant/ConstantController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.pinback.api.constant;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.pinback.application.constant.dto.response.JobsResponse;
import com.pinback.application.constant.port.in.ConstantManagementPort;
import com.pinback.shared.dto.ResponseDto;

import lombok.RequiredArgsConstructor;

@RestController
@RequiredArgsConstructor
@RequestMapping("/api/v3/enums")
public class ConstantController {
private final ConstantManagementPort constantManagementPort;

@GetMapping("/jobs")
public ResponseDto<JobsResponse> getJobs() {
JobsResponse response = constantManagementPort.getJobs();
return ResponseDto.ok(response);
}

}
9 changes: 8 additions & 1 deletion api/src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,4 +53,11 @@ profile-images:
IMAGE2: ${PROFILE_IMAGE2:}
IMAGE3: ${PROFILE_IMAGE3:}

default-thumbnail: ${DEFAULT_THUMBNAIL:}
default-thumbnail: ${DEFAULT_THUMBNAIL:}

job-images:
images:
plan: ${JOB_IMAGE_PLAN}
design: ${JOB_IMAGE_DESIGN}
frontend: ${JOB_IMAGE_FRONTEND}
backend: ${JOB_IMAGE_BACKEND}
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@
import com.pinback.application.article.dto.SharedArticleDto;
import com.pinback.domain.article.entity.Article;
import com.pinback.domain.category.entity.Category;
import com.pinback.domain.common.enums.Job;
import com.pinback.domain.user.entity.User;
import com.pinback.domain.user.enums.Job;

public interface ArticleGetServicePort {
Optional<Article> findRecentByUser(User user);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@
import com.pinback.application.user.port.out.UserUpdateServicePort;
import com.pinback.application.user.port.out.UserValidateServicePort;
import com.pinback.application.user.usecase.UserOAuthUsecase;
import com.pinback.domain.common.enums.Job;
import com.pinback.domain.user.entity.User;
import com.pinback.domain.user.enums.Job;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.pinback.application.config;

import java.util.Map;

import org.springframework.boot.context.properties.ConfigurationProperties;

@ConfigurationProperties(prefix = "job-images")
public class JobImageConfig {
private Map<String, String> images;

public String getImageUrl(String key) {
if (images == null)
return null;
return images.get(key.toLowerCase());
}

public Map<String, String> getImages() {
return images;
}

public void setImages(Map<String, String> images) {
this.images = images;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.pinback.application.constant.dto.response;

public record JobResponse(
String imageUrl,
String job
) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.pinback.application.constant.dto.response;

import java.util.List;

public record JobsResponse(
List<JobResponse> jobs
) {
public static JobsResponse of(List<JobResponse> jobs) {
return new JobsResponse(jobs);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.pinback.application.constant.port.in;

import com.pinback.application.constant.dto.response.JobsResponse;

public interface ConstantManagementPort {
JobsResponse getJobs();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.pinback.application.constant.usecase.command;

import java.util.Arrays;
import java.util.List;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.pinback.application.config.JobImageConfig;
import com.pinback.application.constant.dto.response.JobResponse;
import com.pinback.application.constant.dto.response.JobsResponse;
import com.pinback.application.constant.port.in.ConstantManagementPort;
import com.pinback.domain.common.enums.Job;

import lombok.RequiredArgsConstructor;

@Service
@RequiredArgsConstructor
public class ConstantManagementUsecase implements ConstantManagementPort {
private final JobImageConfig jobImageConfig;

@Override
@Transactional(readOnly = true)
public JobsResponse getJobs() {
List<JobResponse> jobResponses = Arrays.stream(Job.values())
.map(job -> new JobResponse(
jobImageConfig.getImageUrl(job.getKey()),
job.getValue()
))
.toList();

return JobsResponse.of(jobResponses);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
import java.time.LocalTime;
import java.util.UUID;

import com.pinback.domain.common.enums.Job;
import com.pinback.domain.user.entity.User;
import com.pinback.domain.user.enums.Job;

import reactor.core.publisher.Mono;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@
import com.pinback.application.user.port.in.UserManagementPort;
import com.pinback.application.user.port.out.AcornServicePort;
import com.pinback.application.user.port.out.UserGetServicePort;
import com.pinback.domain.common.enums.Job;
import com.pinback.domain.user.entity.User;
import com.pinback.domain.user.enums.Job;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.pinback.domain.user.enums;
package com.pinback.domain.common.enums;

import com.pinback.domain.user.exception.JobNotFoundException;

Expand All @@ -9,10 +9,10 @@
@Getter
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public enum Job {
PLAN("PLAN", "기획자"),
DESIGN("DESIGN", "디자이너"),
FRONTEND("FRONTEND", "프론트엔드 개발자"),
BACKEND("BACKEND", "백엔드 개발자");
PLAN("PLAN", "기획"),
DESIGN("DESIGN", "디자인"),
FRONTEND("FRONTEND", "프론트엔드"),
BACKEND("BACKEND", "백엔드");

private final String key;
private final String value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import java.util.UUID;

import com.pinback.domain.common.BaseEntity;
import com.pinback.domain.user.enums.Job;
import com.pinback.domain.common.enums.Job;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import org.springframework.data.domain.Pageable;

import com.pinback.domain.article.entity.Article;
import com.pinback.domain.user.enums.Job;
import com.pinback.domain.common.enums.Job;
import com.pinback.infrastructure.article.repository.dto.ArticleCountInfoV3;
import com.pinback.infrastructure.article.repository.dto.ArticleWithCountV3;
import com.pinback.infrastructure.article.repository.dto.ArticlesWithUnreadCount;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
import org.springframework.stereotype.Repository;

import com.pinback.domain.article.entity.Article;
import com.pinback.domain.user.enums.Job;
import com.pinback.domain.common.enums.Job;
import com.pinback.infrastructure.article.repository.dto.ArticleCountInfoV3;
import com.pinback.infrastructure.article.repository.dto.ArticleInfoV3;
import com.pinback.infrastructure.article.repository.dto.ArticleWithCountV3;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@
import com.pinback.application.common.exception.ArticleNotOwnedException;
import com.pinback.domain.article.entity.Article;
import com.pinback.domain.category.entity.Category;
import com.pinback.domain.common.enums.Job;
import com.pinback.domain.user.entity.User;
import com.pinback.domain.user.enums.Job;
import com.pinback.infrastructure.article.repository.ArticleRepository;
import com.pinback.infrastructure.article.repository.dto.ArticleCountInfoV3;
import com.pinback.infrastructure.article.repository.dto.ArticleWithCountV3;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import com.pinback.application.article.dto.SharedArticleDto;
import com.pinback.application.article.port.out.ArticleGetServicePort;
import com.pinback.application.article.port.out.SharedArticleRedisPort;
import com.pinback.domain.user.enums.Job;
import com.pinback.domain.common.enums.Job;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import com.pinback.domain.common.enums.Job;
import com.pinback.domain.user.entity.User;
import com.pinback.domain.user.enums.Job;

public interface UserRepository extends JpaRepository<User, UUID> {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
import org.springframework.transaction.annotation.Transactional;

import com.pinback.application.user.port.out.UserUpdateServicePort;
import com.pinback.domain.common.enums.Job;
import com.pinback.domain.user.entity.User;
import com.pinback.domain.user.enums.Job;
import com.pinback.infrastructure.user.repository.UserRepository;

import lombok.RequiredArgsConstructor;
Expand Down