from sqlalchemy import Column, Integer, String, Float, DateTime, ForeignKey, Text, Boolean from sqlalchemy.dialects.postgresql import JSON from sqlalchemy.sql import func from app.core.database import Base class Ujianfonem(Base): __tablename__ = 'ujianfonem' idujian = Column(Integer, primary_key=True, autoincrement=True) idmateriujian = Column(Integer, ForeignKey('materiujian.idmateriujian')) idtalent = Column(Integer, ForeignKey('talent.idtalent')) kategori = Column(String(255)) nilai = Column(Float) waktuujian = Column(DateTime) updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now()) class Detailujianfonem(Base): __tablename__ = 'detailujianfonem' iddetail = Column(Integer, primary_key=True, autoincrement=True) idujian = Column(Integer, ForeignKey('ujianfonem.idujian')) idsoal = Column(Integer, ForeignKey('materiujiankalimat.idmateriujiankalimat')) nilai = Column(Float) updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now()) class Materiujian(Base): __tablename__ = 'materiujian' idmateriujian = Column(Integer, primary_key=True, autoincrement=True) kategori = Column(String(255)) updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now()) class Materiujiankalimat(Base): __tablename__ = 'materiujiankalimat' idmateriujiankalimat = Column(Integer, primary_key=True, autoincrement=True) idmateriujian = Column(Integer, ForeignKey('materiujian.idmateriujian')) kalimat = Column(String(255)) fonem = Column(String(255)) updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now()) class Hasillatihanfonem(Base): __tablename__ = 'hasillatihanfonem' idhasilfonem = Column(Integer, primary_key=True, autoincrement=True) typelatihan = Column(String(255)) idtalent = Column(Integer, ForeignKey('talent.idtalent')) idsoal = Column(Integer) nilai = Column(Float) waktulatihan = Column(DateTime) phoneme_comparison = Column(JSON) class Hasillatihanpercakapan(Base): __tablename__ = 'hasillatihanpercakapan' idhasilpercakapan = Column(Integer, primary_key=True, autoincrement=True) idtalent = Column(Integer, ForeignKey('talent.idtalent')) idmateripercakapan = Column(Integer, ForeignKey('materipercakapan.idmateripercakapan')) wpm = Column(Float) grammar = Column(String(255)) waktulatihan = Column(DateTime) class Hasillatihaninterview(Base): __tablename__ = 'hasillatihaninterview' idhasilinterview = Column(Integer, primary_key=True, autoincrement=True) idtalent = Column(Integer, ForeignKey('talent.idtalent')) waktulatihan = Column(DateTime) feedback = Column(Text) wpm = Column(Float) grammar = Column(String(255)) class Manajemen(Base): __tablename__ = 'manajemen' idmanajemen = Column(Integer, primary_key=True) namamanajemen = Column(String(255)) email = Column(String(255)) password = Column(String(255)) class Materifonemkalimat(Base): __tablename__ = 'materifonemkalimat' idmaterifonemkalimat = Column(Integer, primary_key=True, autoincrement=True) kategori = Column(String(255)) kalimat = Column(String(255)) fonem = Column(String(255)) updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now()) class Materifonemkata(Base): __tablename__ = 'materifonemkata' idmaterifonemkata = Column(Integer, primary_key=True, autoincrement=True) kategori = Column(String(255)) kata = Column(String(255)) fonem = Column(String(255)) meaning = Column(String(255)) definition = Column(String(255)) updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now()) class Materipercakapan(Base): __tablename__ = 'materipercakapan' idmateripercakapan = Column(Integer, primary_key=True, autoincrement=True) topic = Column(String(255)) class Materiinterview(Base): __tablename__ = 'materiinterview' idmateriinterview = Column(Integer, primary_key=True, autoincrement=True) question = Column(String(255)) updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now()) is_active = Column(Boolean, nullable=False, server_default='true') class Talent(Base): __tablename__ = 'talent' idtalent = Column(Integer, primary_key=True, autoincrement=True) nama = Column(String(255)) email = Column(String(255), unique=True) password = Column(String(255)) pretest_score = Column(Float) role = Column(String(50), default='talent')