from app.extensions import db


class Category(db.Model):
    __tablename__ = 'categories'
    __table_args__ = (
        db.UniqueConstraint('name', name='uq_categories_name'),
    )

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100), nullable=False)
    is_system = db.Column(db.Boolean, nullable=False, default=False)
    is_active = db.Column(db.Boolean, nullable=False, default=True)

    # Relationships
    transactions = db.relationship('Transaction', back_populates='category', lazy='dynamic')
    budgets = db.relationship('Budget', back_populates='category', lazy='dynamic')
    bills = db.relationship('Bill', back_populates='category', lazy='dynamic')
    merchant_mappings = db.relationship('MerchantMapping', back_populates='category', lazy='dynamic')
