"""Payment Hold Model.""" import typing from abacus_common_logic.models.base import BaseModel, db class PaymentHold(BaseModel): """Payment Hold model.""" __tablename__ = 'payment_hold' payment_hold_id = db.Column(db.Integer, primary_key=True) history = db.relationship('PaymentHoldHistory', backref='payment_hold') is_on_hold = db.Column(db.Boolean, nullable=False) account_id = db.Column( db.Integer, db.ForeignKey('account.account_id'), nullable=False ) reason = db.Column(db.String(255), nullable=False) start_date = db.Column(db.Date, nullable=False) __table_args__ = (db.UniqueConstraint('account_id', name='account_id'),) @classmethod def get_filtered_items( cls, limit: int, offset: int, account_ids: typing.Optional[typing.Sequence[int]] = None, ): """Retrieve payment holds with optional account filter.""" query = cls.query if account_ids: query = query.filter(cls.account_id.in_(account_ids)) total_count = query.count() items = query.limit(limit).offset(offset).all() if limit > 0 else [] return items, total_count