from functools import wraps

from pycs import db

def commit_on_return(method):
    """
        Decorator for model's methods. It provides an extra argument to the method: commit.
        On return if commit is True, then the database session is commited.
    """

    @wraps(method)
    def inner(self, *args, commit: bool = True, **kwargs):

        res = method(self, *args, **kwargs)

        if commit:
            db.session.commit()

        return res

    return inner
