포트폴리오 서비스(포트폴리오 저장하기)

·2024년 3월 7일
0

Portfolio Backtest

목록 보기
22/31

시작하면서

  • 이제 실상 마지막 기능이다.
  • 사용자가 만든 포트폴리오를 저장하고 조회하는 페이지를 만들어보자!

메뉴, 저장버튼 추가하기

<li><a href="/" sec:authorize="isAuthenticated()" class="nav-link px-2 text-white">내 포트폴리오</a></li>

다음과 같이 로그인한 사용자에 대해서 메뉴를 추가하였다.

DB 구성하기

무엇을 저장하나?

  • 포트폴리오의 구성 종목과 비중을 저장해야한다.
  • 소유한 사용자를 저장해야한다.
  • 포트폴리오의 이름을 저장해야한다.

DB 구성하기

  • 포트폴리오 이름과 사용자, 설명을 저장하는 테이블(Many to One)
  • 포트폴리오 이름과 구성 종목과 비중을 저장하는 테이블(Many to One)

Portfolio

@Entity
@Getter
@Setter
public class PortfolioComposition {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @ManyToOne
    @JoinColumn(name = "portfolio_id")
    private Portfolio portfolio;

    private String itmsNm;

    private double allocation;

}

다음과 같이 구성하였다.

PortfolioComposition

@Entity
@Getter
@Setter
public class PortfolioComposition {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @ManyToOne
    @JoinColumn(name = "portfolio_id")
    private Portfolio portfolio;

    private String itmsNm;

    private double allocation;

}

Controller 구성하기

요청한 사용자 정보 가져오기

	@PostMapping("/save")
    public String savePortfolio(@RequestParam Map<String, Object> portfolio, Principal principal) {
    		String username = principal.getName();
        	SiteUser siteUser = siteUserService.getUser(username);
    }
    

다음과 같은 방식으로 사용자의 이름을 가져온다.
SiteUserService에 다음과 같은 사용자의 이름으로 유저를 반환하는 것을 추가하였다.

    public SiteUser getUser(String username) {
        Optional<SiteUser> siteUser = this.siteUserRepository.findByusername(username);
        if (siteUser.isPresent()) {
            return siteUser.get();
        } else {
            throw new DataNotFoundException("siteuser not found");
        }
    }

성공적으로 저장에 성공하였다. 다음시간에는 조회하는 기능을 만들어 보자!

profile
백엔드 개발자가 꿈인 컴공과

0개의 댓글

관련 채용 정보