-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: add portfolio, portfolio stock entity (#89)
* fix: fix test date time issue * feat: add portfolio, portfolio stock entity * feat: add portfolio, portfolio stock repository * refactor: refactor package structure * test: add test fixture * setting: add db configuration * fix: add @entity annotation * fix: fix portfolio stock to element collection * fix: remove portfolio id from PoltfolioStock * setting: fix db configuration * refactor: delete create method from portfolio entity
- Loading branch information
1 parent
0734962
commit ae2d7d9
Showing
6 changed files
with
120 additions
and
1 deletion.
There are no files selected for viewing
43 changes: 43 additions & 0 deletions
43
domain/src/main/java/nexters/payout/domain/portfolio/domain/Portfolio.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
package nexters.payout.domain.portfolio.domain; | ||
|
||
import jakarta.persistence.CollectionTable; | ||
import jakarta.persistence.ElementCollection; | ||
import jakarta.persistence.Entity; | ||
import jakarta.persistence.JoinColumn; | ||
import lombok.Getter; | ||
import nexters.payout.domain.BaseEntity; | ||
|
||
import java.time.Instant; | ||
import java.util.ArrayList; | ||
import java.util.List; | ||
import java.util.UUID; | ||
|
||
|
||
@Entity | ||
@Getter | ||
public class Portfolio extends BaseEntity { | ||
|
||
@ElementCollection | ||
@CollectionTable(name = "portfolio_stock", joinColumns = @JoinColumn(name = "portfolio_id")) | ||
private List<PortfolioStock> stocks = new ArrayList<>(); | ||
private Instant expireAt; | ||
|
||
public Portfolio() { | ||
super(null); | ||
} | ||
|
||
public Portfolio(final UUID id, final Instant expireAt) { | ||
super(id); | ||
this.expireAt = expireAt; | ||
} | ||
|
||
public Portfolio(final Instant expireAt, List<PortfolioStock> stocks) { | ||
super(null); | ||
this.stocks = stocks; | ||
this.expireAt = expireAt; | ||
} | ||
|
||
public boolean isExpired() { | ||
return expireAt.isAfter(Instant.now()); | ||
} | ||
} |
32 changes: 32 additions & 0 deletions
32
domain/src/main/java/nexters/payout/domain/portfolio/domain/PortfolioStock.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
package nexters.payout.domain.portfolio.domain; | ||
|
||
import jakarta.persistence.Embeddable; | ||
import lombok.AccessLevel; | ||
import lombok.Getter; | ||
import lombok.NoArgsConstructor; | ||
|
||
import java.util.UUID; | ||
|
||
@Embeddable | ||
@Getter | ||
@NoArgsConstructor(access = AccessLevel.PROTECTED) | ||
public class PortfolioStock { | ||
|
||
private UUID stockId; | ||
private Integer shares; | ||
|
||
|
||
public PortfolioStock(final UUID id, final UUID stockId, final Integer shares) { | ||
this.stockId = stockId; | ||
this.shares = shares; | ||
} | ||
|
||
private PortfolioStock(final UUID stockId, final Integer shares) { | ||
this.stockId = stockId; | ||
this.shares = shares; | ||
} | ||
|
||
public PortfolioStock create(final UUID portfolioId, final UUID stockId, final Integer shares) { | ||
return new PortfolioStock(portfolioId, stockId, shares); | ||
} | ||
} |
10 changes: 10 additions & 0 deletions
10
.../src/main/java/nexters/payout/domain/portfolio/domain/repository/PortfolioRepository.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
package nexters.payout.domain.portfolio.domain.repository; | ||
|
||
import nexters.payout.domain.portfolio.domain.Portfolio; | ||
import org.springframework.data.jpa.repository.JpaRepository; | ||
|
||
import java.util.UUID; | ||
|
||
public interface PortfolioRepository extends JpaRepository<Portfolio, UUID> { | ||
|
||
} |
16 changes: 16 additions & 0 deletions
16
domain/src/main/resources/db/migration/V5__add_portfolio.sql
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
create table portfolio | ||
( | ||
id binary (16) not null | ||
primary key, | ||
expire_at datetime(6), | ||
created_at datetime(6), | ||
last_modified_at datetime(6) | ||
) engine = innodb | ||
default charset = utf8mb4; | ||
|
||
create table portfolio_stock ( | ||
portfolio_id binary(16) not null, | ||
stock_id binary(16), | ||
shares integer | ||
) engine=InnoDB | ||
default charset = utf8mb4; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
18 changes: 18 additions & 0 deletions
18
domain/src/testFixtures/java/nexters/payout/domain/PortfolioFixture.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
package nexters.payout.domain; | ||
|
||
import nexters.payout.domain.portfolio.domain.Portfolio; | ||
import nexters.payout.domain.portfolio.domain.PortfolioStock; | ||
|
||
import java.time.Instant; | ||
import java.util.UUID; | ||
|
||
public class PortfolioFixture { | ||
|
||
public static Portfolio createPortfolio(Instant expireAt) { | ||
return new Portfolio(UUID.randomUUID(), expireAt); | ||
} | ||
|
||
public static PortfolioStock createPortfolioStock(UUID portfolioId, UUID stockId, Integer shares) { | ||
return new PortfolioStock(UUID.randomUUID(), stockId, shares); | ||
} | ||
} |