From 917bbef59ecc0632d252cfbd78d4e2bc40056e1a Mon Sep 17 00:00:00 2001 From: JiHwan Date: Mon, 6 Oct 2025 09:59:02 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=9D=B8=EB=8D=B1=EC=8A=A4=20=EC=B5=9C?= =?UTF-8?q?=EC=A0=81=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tradin/core/account/domain/Account.java | 5 ++--- .../tradin/core/balance/domain/Balance.java | 11 +++++----- .../futuresOrder/domain/FuturesOrder.java | 7 ++----- .../domain/FuturesPosition.java | 8 +++++--- .../tradin/core/history/domain/History.java | 7 +++---- .../core/outbox/domain/OutboxMessage.java | 11 ++++------ .../tradin/core/strategy/domain/Strategy.java | 8 -------- .../subscription/domain/Subscription.java | 20 +++++++++---------- .../com/tradin/core/users/domain/Users.java | 4 ++-- 9 files changed, 33 insertions(+), 48 deletions(-) diff --git a/Tradin-Core/src/main/java/com/tradin/core/account/domain/Account.java b/Tradin-Core/src/main/java/com/tradin/core/account/domain/Account.java index 16fcf7b..0b8199b 100644 --- a/Tradin-Core/src/main/java/com/tradin/core/account/domain/Account.java +++ b/Tradin-Core/src/main/java/com/tradin/core/account/domain/Account.java @@ -13,6 +13,7 @@ import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; +import jakarta.persistence.Index; import java.time.LocalDateTime; import lombok.AccessLevel; import lombok.Builder; @@ -24,9 +25,7 @@ @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) @Table(indexes = { - @Index(name = "idx_account_user_id", columnList = "user_id"), - @Index(name = "idx_account_is_deleted", columnList = "is_deleted"), - @Index(name = "idx_account_user_deleted", columnList = "user_id, is_deleted") + @Index(name = "ix_account_user_is_deleted", columnList = "user_id, is_deleted") }) public class Account extends AuditTime { diff --git a/Tradin-Core/src/main/java/com/tradin/core/balance/domain/Balance.java b/Tradin-Core/src/main/java/com/tradin/core/balance/domain/Balance.java index 8539e84..7726b36 100644 --- a/Tradin-Core/src/main/java/com/tradin/core/balance/domain/Balance.java +++ b/Tradin-Core/src/main/java/com/tradin/core/balance/domain/Balance.java @@ -23,6 +23,8 @@ import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; +import jakarta.persistence.Index; +import jakarta.persistence.UniqueConstraint; import lombok.AccessLevel; import lombok.Builder; import lombok.Getter; @@ -31,11 +33,10 @@ @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) -@Table(name = "balance", indexes = { - @Index(name = "idx_balance_account_id", columnList = "account_id"), - @Index(name = "idx_balance_coin_type", columnList = "coin_type"), - @Index(name = "idx_balance_account_coin", columnList = "account_id, coin_type") -}) +@Table( + uniqueConstraints = { + @UniqueConstraint(name = "uk_balance_account_coin_type", columnNames = {"account_id", "coin_type"}) + }) public class Balance extends AuditTime { @Id diff --git a/Tradin-Core/src/main/java/com/tradin/core/futuresOrder/domain/FuturesOrder.java b/Tradin-Core/src/main/java/com/tradin/core/futuresOrder/domain/FuturesOrder.java index 3ef59f8..2db7bba 100644 --- a/Tradin-Core/src/main/java/com/tradin/core/futuresOrder/domain/FuturesOrder.java +++ b/Tradin-Core/src/main/java/com/tradin/core/futuresOrder/domain/FuturesOrder.java @@ -24,6 +24,7 @@ import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; import jakarta.persistence.Index; +import jakarta.persistence.Index; import java.math.BigDecimal; import java.math.RoundingMode; import lombok.AccessLevel; @@ -35,11 +36,7 @@ @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) @Table(indexes = { - @Index(name = "idx_futures_order_account_id", columnList = "account_id"), - @Index(name = "idx_futures_order_strategy_id", columnList = "strategy_id"), - @Index(name = "idx_futures_order_status", columnList = "order_status"), - @Index(name = "idx_futures_order_created_at", columnList = "created_at"), - @Index(name = "idx_futures_order_account_strategy", columnList = "account_id, strategy_id") + @Index(name = "ix_futures_order_account_strategy", columnList = "account_id, strategy_id") }) public class FuturesOrder extends AuditTime { diff --git a/Tradin-Core/src/main/java/com/tradin/core/futuresPosition/domain/FuturesPosition.java b/Tradin-Core/src/main/java/com/tradin/core/futuresPosition/domain/FuturesPosition.java index 3185413..e792bd0 100644 --- a/Tradin-Core/src/main/java/com/tradin/core/futuresPosition/domain/FuturesPosition.java +++ b/Tradin-Core/src/main/java/com/tradin/core/futuresPosition/domain/FuturesPosition.java @@ -24,6 +24,7 @@ import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; +import jakarta.persistence.Index; import jakarta.persistence.UniqueConstraint; import java.math.BigDecimal; import java.math.RoundingMode; @@ -37,10 +38,11 @@ @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @Table( - uniqueConstraints = @UniqueConstraint(columnNames = {"account_id", "coinType"}), + uniqueConstraints = { + @UniqueConstraint(name = "uk_futures_position_account_coin_type", columnNames = {"account_id", "coin_type"}) + }, indexes = { - @Index(name = "idx_futures_position_account_coin", columnList = "account_id, coinType"), - @Index(name = "idx_futures_position_created_at", columnList = "created_at") + @Index(name = "ix_futures_position_coin_type_liquidation_price", columnList = "coin_type, liquidation_price") } ) public class FuturesPosition extends AuditTime { diff --git a/Tradin-Core/src/main/java/com/tradin/core/history/domain/History.java b/Tradin-Core/src/main/java/com/tradin/core/history/domain/History.java index 97e6a39..ea0244b 100644 --- a/Tradin-Core/src/main/java/com/tradin/core/history/domain/History.java +++ b/Tradin-Core/src/main/java/com/tradin/core/history/domain/History.java @@ -21,6 +21,7 @@ import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; +import jakarta.persistence.Index; import lombok.AccessLevel; import lombok.Builder; import lombok.Getter; @@ -28,12 +29,10 @@ @Entity @Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) @Table(indexes = { - @Index(name = "idx_history_strategy_id", columnList = "strategy_id"), - @Index(name = "idx_history_created_at", columnList = "created_at"), - @Index(name = "idx_history_strategy_created", columnList = "strategy_id, created_at") + @Index(name = "idx_history_strategy_exit", columnList = "strategy_id, exit_time DESC") }) -@NoArgsConstructor(access = AccessLevel.PROTECTED) public class History extends AuditTime { @Id diff --git a/Tradin-Core/src/main/java/com/tradin/core/outbox/domain/OutboxMessage.java b/Tradin-Core/src/main/java/com/tradin/core/outbox/domain/OutboxMessage.java index affdd50..abf2067 100644 --- a/Tradin-Core/src/main/java/com/tradin/core/outbox/domain/OutboxMessage.java +++ b/Tradin-Core/src/main/java/com/tradin/core/outbox/domain/OutboxMessage.java @@ -11,6 +11,7 @@ import jakarta.persistence.Id; import jakarta.persistence.Table; import jakarta.persistence.Index; +import jakarta.persistence.Index; import lombok.AccessLevel; import lombok.Builder; import lombok.Getter; @@ -20,13 +21,9 @@ @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) -@Table(name = "outbox_message", indexes = { - @Index(name = "idx_outbox_message_type", columnList = "message_type"), - @Index(name = "idx_outbox_message_id", columnList = "message_id"), - @Index(name = "idx_outbox_status", columnList = "status"), - @Index(name = "idx_outbox_type_status", columnList = "message_type, status"), - @Index(name = "idx_outbox_created_at", columnList = "created_at"), - @Index(name = "idx_outbox_updated_at", columnList = "updated_at") +@Table(indexes = { + @Index(name = "idx_outbox_message_type_status", columnList = "message_type, status"), + @Index(name = "idx_outbox_message_id", columnList = "message_id") }) public class OutboxMessage extends AuditTime { diff --git a/Tradin-Core/src/main/java/com/tradin/core/strategy/domain/Strategy.java b/Tradin-Core/src/main/java/com/tradin/core/strategy/domain/Strategy.java index a1c7f0c..671e6fa 100644 --- a/Tradin-Core/src/main/java/com/tradin/core/strategy/domain/Strategy.java +++ b/Tradin-Core/src/main/java/com/tradin/core/strategy/domain/Strategy.java @@ -24,14 +24,6 @@ @Getter @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) -@Table(indexes = { - @Index(name = "idx_strategy_name", columnList = "name"), - @Index(name = "idx_strategy_type_strategy", columnList = "strategy_type"), - @Index(name = "idx_strategy_type_coin", columnList = "coin_type"), - @Index(name = "idx_strategy_type_timeframe", columnList = "time_frame_type"), - @Index(name = "idx_strategy_profit_factor", columnList = "profit_factor"), - @Index(name = "idx_strategy_created_at", columnList = "created_at") -}) public class Strategy extends AuditTime { @Id diff --git a/Tradin-Core/src/main/java/com/tradin/core/subscription/domain/Subscription.java b/Tradin-Core/src/main/java/com/tradin/core/subscription/domain/Subscription.java index 553f8eb..fcec2ea 100644 --- a/Tradin-Core/src/main/java/com/tradin/core/subscription/domain/Subscription.java +++ b/Tradin-Core/src/main/java/com/tradin/core/subscription/domain/Subscription.java @@ -16,6 +16,7 @@ import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; +import jakarta.persistence.Index; import jakarta.persistence.UniqueConstraint; import java.time.LocalDateTime; import lombok.AccessLevel; @@ -27,14 +28,11 @@ @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) @Table( - uniqueConstraints = @UniqueConstraint(columnNames = {"account_id", "strategy_id"}), + uniqueConstraints = { + @UniqueConstraint(name = "uk_subscription_strategy_account", columnNames = {"strategy_id", "account_id"}) + }, indexes = { - @Index(name = "idx_subscription_account_id", columnList = "account_id"), - @Index(name = "idx_subscription_strategy_id", columnList = "strategy_id"), - @Index(name = "idx_subscription_status", columnList = "status"), - @Index(name = "idx_subscription_strategy_status", columnList = "strategy_id, status"), - @Index(name = "idx_subscription_start_date", columnList = "start_date"), - @Index(name = "idx_subscription_end_date", columnList = "end_date") + @Index(name = "ix_subscription_strategy_status_account", columnList = "strategy_id, status, account_id") } ) public class Subscription extends AuditTime { @@ -43,14 +41,14 @@ public class Subscription extends AuditTime { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - @ManyToOne - @JoinColumn(name = "account_id", nullable = false) - private Account account; - @ManyToOne @JoinColumn(name = "strategy_id", nullable = false) private Strategy strategy; + @ManyToOne + @JoinColumn(name = "account_id", nullable = false) + private Account account; + @Enumerated(EnumType.STRING) @Column(nullable = false) private SubscriptionStatus status; diff --git a/Tradin-Core/src/main/java/com/tradin/core/users/domain/Users.java b/Tradin-Core/src/main/java/com/tradin/core/users/domain/Users.java index 84b16cb..4d21969 100644 --- a/Tradin-Core/src/main/java/com/tradin/core/users/domain/Users.java +++ b/Tradin-Core/src/main/java/com/tradin/core/users/domain/Users.java @@ -23,8 +23,8 @@ @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) @Table(indexes = { - @Index(name = "idx_users_email", columnList = "email"), - @Index(name = "idx_users_sub", columnList = "sub") + @Index(name = "ix_users_email", columnList = "email"), + @Index(name = "ix_users_sub", columnList = "sub") }) public class Users extends AuditTime implements UserDetails {