import sqlmodel from sqlalchemy.future import Engine from . import models def get_master_pass( engine: Engine, user_id: int, ) -> models.MasterPass | None: """Gets master password of a user""" statement = sqlmodel.select(models.MasterPass).where( models.MasterPass.user_id == user_id, ) with sqlmodel.Session(engine) as session: result = session.exec(statement).first() return result def get_account_names( engine: Engine, user_id: int, *, to_sort: bool = False, ) -> list[str]: """Gets a list of account names of a user""" statement = sqlmodel.select(models.Account.name).where( models.Account.user_id == user_id, ) if to_sort: statement = statement.order_by(models.Account.name) with sqlmodel.Session(engine) as session: result = session.exec(statement).fetchall() return result def get_accounts(engine: Engine, user_id: int) -> list[models.Account]: """Returns a list of accounts of a user""" statement = sqlmodel.select(models.Account).where( models.Account.user_id == user_id, ) with sqlmodel.Session(engine) as session: result = session.exec(statement).fetchall() return result def get_account_info( engine: Engine, user_id: int, name: str, ) -> models.Account: """Gets account info""" statement = sqlmodel.select(models.Account).where( models.Account.user_id == user_id, models.Account.name == name, ) with sqlmodel.Session(engine) as session: result = session.exec(statement).first() return result