Added _add_model helper function to reduce code duplication Added add_accounts for future use
47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
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
|