33 lines
1.2 KiB
Python
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})>"
|