Files
2026-02-13 18:40:48 +09:00

62 lines
2.4 KiB
Python

from sqlalchemy import Column, Integer, String, Float, DateTime, Text, ForeignKey
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
from datetime import datetime
Base = declarative_base()
class Asset(Base):
"""자산 마스터 테이블"""
__tablename__ = "assets"
id = Column(Integer, primary_key=True, index=True)
symbol = Column(String(20), unique=True, nullable=False, index=True)
name = Column(String(100), nullable=False)
category = Column(String(50)) # 귀금속, 암호화폐, 환율 등
created_at = Column(DateTime, default=datetime.utcnow)
# --- 새로 추가한 실시간 데이터 컬럼 ---
current_price = Column(Float) # 실시간 현재가
price_state = Column(String(20), default="stable") # up, down, stable
last_updated = Column(DateTime) # 마지막 수집 시각
# ------------------------------------
# 관계
user_assets = relationship("UserAsset", back_populates="asset")
price_history = relationship("PriceHistory", back_populates="asset")
class UserAsset(Base):
"""사용자 자산 정보"""
__tablename__ = "user_assets"
id = Column(Integer, primary_key=True, index=True)
asset_id = Column(Integer, ForeignKey("assets.id"), nullable=False)
previous_close = Column(Float, default=0.0) # 전일종가
average_price = Column(Float, default=0.0) # 평균매입가
quantity = Column(Float, default=0.0) # 보유량
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
# 관계
asset = relationship("Asset", back_populates="user_assets")
class PriceHistory(Base):
"""가격 히스토리 (선택적)"""
__tablename__ = "price_history"
id = Column(Integer, primary_key=True, index=True)
asset_id = Column(Integer, ForeignKey("assets.id"), nullable=False)
price = Column(Float, nullable=False)
timestamp = Column(DateTime, default=datetime.utcnow, index=True)
# 관계
asset = relationship("Asset", back_populates="price_history")
class AlertSetting(Base):
"""알림 설정"""
__tablename__ = "alert_settings"
id = Column(Integer, primary_key=True, index=True)
setting_key = Column(String(100), unique=True, nullable=False)
setting_value = Column(Text) # JSON 형식으로 저장
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)