from app.extensions import db


class Bill(db.Model):
    __tablename__ = 'bills'
    __table_args__ = (
        db.Index('idx_bills_due_date', 'due_date'),
    )

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(200), nullable=False)
    amount = db.Column(db.Numeric(10, 2), nullable=False)
    due_day = db.Column(db.Integer, nullable=False)        # 1–31: day of month for recurrence
    due_date = db.Column(db.Text, nullable=True)           # ISO 8601: computed next occurrence
    payee = db.Column(db.String(200), nullable=True)
    is_active = db.Column(db.Boolean, nullable=False, default=True)
    last_paid_date = db.Column(db.Text, nullable=True)     # ISO 8601: date of last payment

    category_id = db.Column(db.Integer, db.ForeignKey('categories.id', ondelete='RESTRICT'), nullable=True)
    category = db.relationship('Category', back_populates='bills')
