from sqlalchemy import Column, Integer, String, Text, SmallInteger, Numeric, DateTime
from sqlalchemy.ext.declarative import declarative_base
from .Model import Model
from datetime import datetime

Base = declarative_base()


class Book(Base, Model):
    __tablename__ = 'books'
    id = Column(Integer, primary_key=True)
    url = Column(String(255))

    title = Column(String(255), nullable=False, index=True)
    description = Column(Text)
    image_path = Column(String(255))
    rating = Column(SmallInteger, index=True)

    upc = Column(String(32), unique=True)
    product_type = Column(String(32), index=True)
    price_excl_tax = Column(Numeric(6, 2), index=True)
    price_incl_tax = Column(Numeric(6, 2), index=True)
    tax = Column(Numeric(6, 2), index=True)
    in_stock = Column(Integer, index=True)
    count_reviews = Column(Integer, index=True)

    category = Column(String(32), index=True)

    currency_type = Column(String(4), index=True)
    
    created_at = Column(DateTime, default=datetime.utcnow)
    updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)