68 lines
1.9 KiB
Java
68 lines
1.9 KiB
Java
package com.goldenchart.entity;
|
|
|
|
import jakarta.persistence.*;
|
|
import lombok.*;
|
|
import org.hibernate.annotations.JdbcTypeCode;
|
|
import org.hibernate.type.SqlTypes;
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
/**
|
|
* GoldenChart 투자전략 DSL 엔티티.
|
|
* frontend StrategyPage 에서 작성한 LogicNode 트리를 JSON 으로 저장.
|
|
*/
|
|
@Entity
|
|
@Table(name = "gc_strategy")
|
|
@Getter @Setter @NoArgsConstructor @AllArgsConstructor @Builder
|
|
public class GcStrategy {
|
|
|
|
@Id
|
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
|
private Long id;
|
|
|
|
/** 로그인 사용자 ID (nullable — 비회원은 device_id 사용) */
|
|
@Column(name = "user_id")
|
|
private Long userId;
|
|
|
|
/** 비회원 기기 식별자 */
|
|
@Column(name = "device_id", length = 100)
|
|
private String deviceId;
|
|
|
|
@Column(name = "name", nullable = false, length = 200)
|
|
private String name;
|
|
|
|
@Column(name = "description", columnDefinition = "TEXT")
|
|
private String description;
|
|
|
|
/** 매수 조건 DSL JSON — frontend LogicNode 구조 */
|
|
@Column(name = "buy_condition_json", columnDefinition = "JSON")
|
|
@JdbcTypeCode(SqlTypes.JSON)
|
|
private String buyConditionJson;
|
|
|
|
/** 매도 조건 DSL JSON — frontend LogicNode 구조 */
|
|
@Column(name = "sell_condition_json", columnDefinition = "JSON")
|
|
@JdbcTypeCode(SqlTypes.JSON)
|
|
private String sellConditionJson;
|
|
|
|
@Column(name = "enabled", nullable = false)
|
|
@Builder.Default
|
|
private Boolean enabled = true;
|
|
|
|
@Column(name = "created_at", nullable = false, updatable = false)
|
|
private LocalDateTime createdAt;
|
|
|
|
@Column(name = "updated_at")
|
|
private LocalDateTime updatedAt;
|
|
|
|
@PrePersist
|
|
protected void onCreate() {
|
|
createdAt = LocalDateTime.now();
|
|
updatedAt = LocalDateTime.now();
|
|
}
|
|
|
|
@PreUpdate
|
|
protected void onUpdate() {
|
|
updatedAt = LocalDateTime.now();
|
|
}
|
|
}
|