from datetime import datetime
from app.extensions import db


class School(db.Model):
    __tablename__ = 'schools'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(200), nullable=False)
    npsn = db.Column(db.String(20), unique=True, nullable=False)
    address = db.Column(db.Text, nullable=True)
    phone = db.Column(db.String(20), nullable=True)
    email = db.Column(db.String(120), nullable=True)
    status = db.Column(db.Enum('pending', 'approved', 'rejected', 'suspended', name='school_status'),
                       default='pending', nullable=False)
    rejection_reason = db.Column(db.Text, nullable=True)
    created_at = db.Column(db.DateTime, default=datetime.utcnow)
    updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)

    users = db.relationship('User', backref='school', lazy='dynamic')
    kelas = db.relationship('Kelas', backref='school', lazy='dynamic')
    mata_pelajaran = db.relationship('MataPelajaran', backref='school', lazy='dynamic')
    jadwal = db.relationship('Jadwal', backref='school', lazy='dynamic')

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