from sqlalchemy import Column, String, Float, Text, DateTime
from sqlalchemy.sql import func
from sqlalchemy.types import JSON

from database import Base


class ChartResult(Base):
    __tablename__ = "chart_results"

    id = Column(String(20), primary_key=True, index=True)
    chart_type = Column(String(80), nullable=False, index=True)

    name = Column(String(150), nullable=True)

    birth_date = Column(String(20), nullable=True)
    birth_time = Column(String(20), nullable=True)
    birth_place = Column(Text, nullable=True)
    birth_latitude = Column(Float, nullable=True)
    birth_longitude = Column(Float, nullable=True)
    birth_timezone = Column(String(100), nullable=True)

    partner_name = Column(String(150), nullable=True)
    partner_birth_date = Column(String(20), nullable=True)
    partner_birth_time = Column(String(20), nullable=True)
    partner_birth_place = Column(Text, nullable=True)
    partner_birth_latitude = Column(Float, nullable=True)
    partner_birth_longitude = Column(Float, nullable=True)
    partner_birth_timezone = Column(String(100), nullable=True)

    current_date = Column(String(20), nullable=True)
    return_date = Column(String(20), nullable=True)
    progressed_date = Column(String(20), nullable=True)

    chart_image = Column(Text, nullable=True)

    input_data = Column(JSON, nullable=True)
    result_data = Column(JSON, nullable=True)

    created_at = Column(DateTime(timezone=True), server_default=func.now())
