from app.extensions import db


class Kelas(db.Model):
    __tablename__ = 'kelas'

    id = db.Column(db.Integer, primary_key=True)
    school_id = db.Column(db.Integer, db.ForeignKey('schools.id'), nullable=False)
    name = db.Column(db.String(100), nullable=False)
    academic_year = db.Column(db.String(20), nullable=False)

    murid = db.relationship('KelasMurid', backref='kelas', lazy='dynamic')
    jadwal = db.relationship('Jadwal', backref='kelas', lazy='dynamic')

    def __repr__(self):
        return f'<Kelas {self.name}>'


class KelasMurid(db.Model):
    __tablename__ = 'kelas_murid'

    id = db.Column(db.Integer, primary_key=True)
    school_id = db.Column(db.Integer, db.ForeignKey('schools.id'), nullable=False)
    kelas_id = db.Column(db.Integer, db.ForeignKey('kelas.id'), nullable=False)
    murid_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)

    student = db.relationship('User', backref='kelas_enrollments')

    __table_args__ = (
        db.UniqueConstraint('kelas_id', 'murid_id', name='uq_kelas_murid'),
    )
