60 lines
1.6 KiB
Python
60 lines
1.6 KiB
Python
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
|