import sqlmodel from sqlalchemy.exc import IntegrityError from sqlalchemy.future import Engine from . import models def _add_model( session: sqlmodel.Session, model: models.Account | models.MasterPass ) -> bool: """Adds model to the session. Returns true on success, false otherwise""" try: session.add(model) except IntegrityError: return False else: return True def add_account(engine: Engine, account: models.Account) -> bool: """Adds account to the database. Returns true on success, false otherwise""" with sqlmodel.Session(engine) as session: result = _add_model(session, account) session.commit() return result def add_master_pass(engine: Engine, master_pass: models.MasterPass) -> bool: """Adds master password the database. Returns true on success, false otherwise""" with sqlmodel.Session(engine) as session: result = _add_model(session, master_pass) session.commit() return result def add_accounts( engine: Engine, accounts: list[models.Account], ) -> list[bool]: with sqlmodel.Session(engine) as session: result = [_add_model(session, account) for account in accounts] session.commit() return result