40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
import sqlmodel
|
|
from sqlalchemy.future import Engine
|
|
|
|
from . import models
|
|
|
|
|
|
def get_master_pass(engine: Engine, user_id: int) -> tuple[bytes, bytes] | None:
|
|
"""Gets master pass. Returns tuple of salt and password"""
|
|
statement = sqlmodel.select(models.MasterPass).where(
|
|
models.MasterPass.user_id == user_id
|
|
)
|
|
with sqlmodel.Session(engine) as session:
|
|
result = session.exec(statement).first()
|
|
print(result)
|
|
if result is None:
|
|
return
|
|
return (result.salt, result.passwd)
|
|
|
|
|
|
def get_accounts(engine: Engine, user_id: int) -> list[str]:
|
|
"""Gets list of account names"""
|
|
statement = sqlmodel.select(models.Account).where(models.Account.user_id == user_id)
|
|
with sqlmodel.Session(engine) as session:
|
|
result = session.exec(statement)
|
|
return [account.name for account in result]
|
|
|
|
|
|
def get_account_info(
|
|
engine: Engine, user_id: int, name: str
|
|
) -> tuple[bytes, bytes, bytes]:
|
|
"""Gets account info. Returns tuple of salt, login and password"""
|
|
statement = sqlmodel.select(models.Account).where(
|
|
models.Account.user_id == user_id and models.Account.name == name
|
|
)
|
|
with sqlmodel.Session(engine) as session:
|
|
result = session.exec(statement).first()
|
|
if result is None:
|
|
return
|
|
return (result.salt, result.enc_login, result.enc_pass)
|