penti/backend/app/models/asset.py

33 lines
1.2 KiB
Python

"""Asset model (종목 정보)."""
from sqlalchemy import Column, String, BigInteger, Numeric, Date, Boolean
from sqlalchemy.dialects.postgresql import UUID
import uuid
try:
from app.database import Base
except ModuleNotFoundError:
from backend.app.database import Base
class Asset(Base):
"""Asset model (kor_ticker → assets)."""
__tablename__ = "assets"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
ticker = Column(String(20), unique=True, nullable=False, index=True)
name = Column(String(100), nullable=False)
market = Column(String(20)) # KOSPI, KOSDAQ
market_cap = Column(BigInteger) # 시가총액
stock_type = Column(String(20)) # 보통주, 우선주
sector = Column(String(100)) # 섹터
last_price = Column(Numeric(15, 2)) # 최종 가격
eps = Column(Numeric(15, 2)) # 주당순이익
bps = Column(Numeric(15, 2)) # 주당순자산
dividend_per_share = Column(Numeric(15, 2)) # 주당배당금
base_date = Column(Date) # 기준일
is_active = Column(Boolean, default=True) # 활성 여부
def __repr__(self):
return f"<Asset(ticker={self.ticker}, name={self.name})>"