Skip to content

Commit

Permalink
[feat] 모델프로필 단건조회 및 생성 api 완성 (#21)
Browse files Browse the repository at this point in the history
* feat(#18) : 모델 레포지토리 생성

* feat : #18 Model 레포지토리, dto, 서비스 생성

* feat #18 : 모델 조회 api 생성 완료

* feat #18 : 모델 생성 및 단건조회 api 완료

* feat #18 : 커스텀에러 코드 적용, 자잘한 버그 수정

* feat : #18 모델소개 조회 api 생성

* refactor : #18 식별관계로 변경

* feat : #18 모델 조회 및 생성 api
  • Loading branch information
j2noo authored Mar 5, 2024
1 parent 61cd696 commit 2ce738e
Show file tree
Hide file tree
Showing 20 changed files with 384 additions and 12 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package com.backend.soullive_a.controller;

import com.backend.soullive_a.dto.request.ModelRequest;
import com.backend.soullive_a.dto.response.ModelResponse;
import com.backend.soullive_a.exception.base.BaseResponse;
import com.backend.soullive_a.service.ModelService;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

@RestController
@RequiredArgsConstructor
@RequestMapping("/api/model")
public class ModelController {
private final ModelService modelService;

/**
* 모델 조회 api
* @param modelId
* @return
*/
@GetMapping("/{modelId}")
public BaseResponse<ModelResponse> getModel(@PathVariable Long modelId) {
return BaseResponse.<ModelResponse>builder()
.isSuccess(true)
.code(200)
.message("모델 조회에 성공했습니다.")
.data(modelService.getModel(modelId))
.build();

}

/**
* 모델 등록 api
* @param request
* @return
*/
@PostMapping("")
public BaseResponse<ModelResponse> createModel(@RequestBody @Valid ModelRequest request) {
System.out.println("@");
return BaseResponse.<ModelResponse>builder()
.isSuccess(true)
.code(200)
.message("모델 생성에 성공했습니다.")
.data(modelService.createModel(request))
.build();

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
//package com.backend.soullive_a.controller;
//
//import com.backend.soullive_a.dto.request.ModelIntroduceRequest;
//import com.backend.soullive_a.dto.response.ModelIntroductionResponse;
//import com.backend.soullive_a.dto.response.ModelResponse;
//import com.backend.soullive_a.exception.base.BaseResponse;
//import com.backend.soullive_a.service.ModelIntroductionService;
//import jakarta.validation.Valid;
//import lombok.RequiredArgsConstructor;
//import org.springframework.web.bind.annotation.*;
//
//@RestController
//@RequiredArgsConstructor
//@RequestMapping("/api/model/introduction")
//public class ModelIntroductionController {
//
// private final ModelIntroductionService modelIntroductionService;
//
// /**
// * 모델소개 조회 api
// * @param modelId
// * @return
// */
// @GetMapping("/{modelId}")
// public BaseResponse<ModelIntroductionResponse> getModelIntroduction(@PathVariable Long modelId) {
// return BaseResponse.<ModelIntroductionResponse>builder()
// .isSuccess(true)
// .code(2006)
// .message("모델소개 정보 조회에 성공했습니다.")
// .data(modelIntroductionService.getModelIntroduction(modelId))
// .build();
// }
//
// @PostMapping("/{modelId}")
// public BaseResponse<ModelIntroductionResponse> createModelIntroduction(
// @PathVariable Long modelId,
// @RequestBody @Valid ModelIntroduceRequest request) {
// return BaseResponse.<ModelIntroductionResponse>builder()
// .isSuccess(true)
// .code(2006)
// .message("모델소개 정보 생성에 성공했습니다.")
// .data(modelIntroductionService.createModelIntroduction(request, modelId))
// .build();
// }
//}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.backend.soullive_a.dto.request;

import com.backend.soullive_a.entity.model.introduction.ModelImageKeyword;
import com.backend.soullive_a.entity.model.introduction.ModelRecentAdvertisement;
import com.backend.soullive_a.entity.model.introduction.ModelRecentWork;

import java.util.List;

public record ModelIntroduceRequest(
List<ModelImageKeyword> modelImageKeywords,
List<ModelRecentWork> modelRecentWorks,
List<ModelRecentAdvertisement> modelRecentAdvertisements) {
}
14 changes: 14 additions & 0 deletions src/main/java/com/backend/soullive_a/dto/request/ModelRequest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.backend.soullive_a.dto.request;

import jakarta.validation.constraints.NotNull;

import java.time.LocalDate;

public record ModelRequest(
@NotNull String modelName,
@NotNull LocalDate birth,
@NotNull String job,
String info,
@NotNull String agency,
@NotNull Float aiRate) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.backend.soullive_a.dto.response;

import com.backend.soullive_a.entity.model.introduction.ModelImageKeyword;
import com.backend.soullive_a.entity.model.introduction.ModelRecentAdvertisement;
import com.backend.soullive_a.entity.model.introduction.ModelRecentWork;
import lombok.Builder;

import java.util.List;

@Builder
public record ModelIntroductionResponse(
List<ModelImageKeyword> modelImageKeywords,
List<ModelRecentWork> modelRecentWorks,
List<ModelRecentAdvertisement> modelRecentAdvertisements
) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.backend.soullive_a.dto.response;

import lombok.Builder;

import java.time.LocalDate;
import java.time.LocalDateTime;

@Builder
public record ModelResponse(
Long modelId,
String modelName,
LocalDate birth,
String job,
String info,
String agency,
Float aiRate

) {}
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package com.backend.soullive_a.entity;
package com.backend.soullive_a.entity.model;

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

import java.time.LocalDate;
import java.time.LocalDateTime;

@Entity
Expand All @@ -20,12 +21,12 @@ public class Model {
private String modelName;

@Column(name = "BIRTH", nullable = false)
private LocalDateTime birth;
private LocalDate birth;

@Column(name = "JOB", nullable = false)
private String job;

@Column(name = "INFO", nullable = false)
@Column(name = "INFO")
private String info;

@Column(name = "AGENCY", nullable = false)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.backend.soullive_a.entity;
package com.backend.soullive_a.entity.model.introduction;

import com.backend.soullive_a.entity.model.Model;
import jakarta.persistence.*;
import lombok.*;

Expand All @@ -8,18 +9,17 @@
@Builder
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)

public class ModelImageKeyword {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "MODEL_IMAGE_KEYWORD_ID", nullable = false)
private Long id;

@Column(name = "KEYWORD", nullable = false)
private String keyword;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "MODEL_ID", nullable = false)
private Model model;

@Column(name = "KEYWORD", nullable = false)
private String keyword;
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.backend.soullive_a.entity;
package com.backend.soullive_a.entity.model.introduction;

import com.backend.soullive_a.entity.model.Model;
import jakarta.persistence.*;
import lombok.*;

Expand All @@ -8,9 +9,12 @@
@Builder
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class ModelIntroduction {
public class ModelIntroduction{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "MODEL_INTRODUCTION_ID", nullable = false)
private Long id;

@OneToOne
@JoinColumn(name = "MODEL_ID", nullable = false) //식별 관계
private Model model;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.backend.soullive_a.entity;
package com.backend.soullive_a.entity.model.introduction;

import com.backend.soullive_a.entity.model.Model;
import jakarta.persistence.*;
import lombok.*;

Expand All @@ -14,6 +15,12 @@ public class ModelRecentAdvertisement {
@Column(name = "MODEL_RECENT_ADVERTISEMENT_ID", nullable = false)
private Long id;

@Column(name = "YEAR", nullable = false)
private Integer year;

@Column(name = "BRAND", nullable = false)
private String brand;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "MODEL_ID", nullable = false)
private Model model;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.backend.soullive_a.entity;
package com.backend.soullive_a.entity.model.introduction;

import com.backend.soullive_a.entity.model.Model;
import jakarta.persistence.*;
import lombok.*;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.backend.soullive_a.repository;

import com.backend.soullive_a.entity.model.introduction.ModelImageKeyword;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

public interface ModelImageKeywordRepository extends JpaRepository<ModelImageKeyword, Long> {
public List<ModelImageKeyword> findAllById(Long modelId);
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.backend.soullive_a.repository;

import com.backend.soullive_a.entity.model.introduction.ModelIntroduction;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

public interface ModelIntroductionRepository extends JpaRepository<ModelIntroduction, Long> {
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.backend.soullive_a.repository;

import com.backend.soullive_a.entity.model.introduction.ModelRecentAdvertisement;
import com.backend.soullive_a.entity.model.introduction.ModelRecentWork;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

public interface ModelRecentAdvertisementRepository extends JpaRepository<ModelRecentAdvertisement, Long> {
public List<ModelRecentAdvertisement> findAllById(Long modelId);
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.backend.soullive_a.repository;

import com.backend.soullive_a.entity.model.introduction.ModelRecentWork;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

public interface ModelRecentWorkRepository extends JpaRepository<ModelRecentWork, Long> {
public List<ModelRecentWork> findAllById(Long modelId);
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.backend.soullive_a.repository;

import com.backend.soullive_a.entity.model.Model;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.util.Optional;


public interface ModelRepository extends JpaRepository<Model, Long> {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
//package com.backend.soullive_a.service;
//
//import com.backend.soullive_a.dto.request.ModelIntroduceRequest;
//import com.backend.soullive_a.dto.response.ModelIntroductionResponse;
//
//import java.util.List;
//
//public interface ModelIntroductionService {
// public ModelIntroductionResponse getModelIntroduction(Long modelId);
//
// public ModelIntroductionResponse createModelIntroduction(ModelIntroduceRequest request, Long modelId);
//}
10 changes: 10 additions & 0 deletions src/main/java/com/backend/soullive_a/service/ModelService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.backend.soullive_a.service;

import com.backend.soullive_a.dto.request.ModelRequest;
import com.backend.soullive_a.dto.response.ModelResponse;

public interface ModelService {
public ModelResponse getModel(Long modelId );

public ModelResponse createModel(ModelRequest request);
}
Loading

0 comments on commit 2ce738e

Please sign in to comment.