from sqlalchemy import Column, Integer, String, ForeignKey, TIMESTAMP, Text, JSON, UniqueConstraint
from passlib.context import CryptContext
from sqlalchemy.orm import sessionmaker, relationship
from datetime import datetime
from db.session import Base

pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")

class Course(Base):
    __tablename__ = "courses"
    
    id = Column(Integer, primary_key=True, index=True)
    course_id = Column(String(255), nullable=True)
    topic = Column(String, nullable=True)
    task_id = Column(String(255), nullable=True)
    skills = Column(String(255), nullable=True)
    degree = Column(String(255), nullable=True)
    allocated_time = Column(String(255), nullable=True)
    mode_of_delivery = Column(String(255), nullable=True)
    tone = Column(String(255), nullable=True)
    weblinks = Column(Text, nullable=True)
    language = Column(String(255), nullable=True)
    content_description = Column(Text, nullable=True)
    content_outcomes = Column(Text, nullable=True)
    taxonomy = Column(Text, nullable=True)
    content_objectives = Column(Text, nullable=True)
    content_summary = Column(Text, nullable=True)
    outline = Column(Text, nullable=True)
    learning_approach = Column(Text, nullable=True)
    no_of_modules = Column(Integer, nullable=True)
    level_of_difficulty = Column(String(255), nullable=True)
    type_of_assessment = Column(String(255), nullable=True)
    no_of_questions = Column(Integer, nullable=True)
    # markdown_content = Column(Text, nullable=True)
    email = Column(String(255), unique=True, nullable=True)
    status = Column(String(255), nullable=True)
    course_step = Column(Integer, default=1, nullable=False)
    course_imscc_url = Column(String, nullable=True)
    is_deleted = Column(String(10), default="no", nullable=False)
    created_at = Column(TIMESTAMP, default=datetime.utcnow)
    updated_at = Column(TIMESTAMP, default=datetime.utcnow, onupdate=datetime.utcnow)
    deleted_at = Column(TIMESTAMP, nullable=True)
    user_id = Column(Integer, ForeignKey("users.id"))  # 👈 foreign key defined here

    user = relationship("User", back_populates="courses")










