File size: 1,089 Bytes
c6cc0f2
 
211d915
c6cc0f2
aabf8ec
 
c6cc0f2
 
 
 
 
 
 
 
 
 
 
 
 
 
aabf8ec
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import asyncio

from trauma.api.account.dto import AccountType
from trauma.api.account.model import AccountModel
from trauma.api.account.schemas import CreateAccountRequest
from trauma.api.common.db_requests import check_unique_fields_existence
from trauma.core.config import settings


async def get_all_model_obj(page_size: int, page_index: int) -> tuple[list[AccountModel], int]:
    skip = page_size * page_index
    objects, total_count = await asyncio.gather(
        settings.DB_CLIENT.accounts
        .find()
        .skip(skip)
        .limit(page_size)
        .to_list(length=page_size),
        settings.DB_CLIENT.accounts.count_documents({})
    )
    return objects, total_count


async def create_account_obj(data: CreateAccountRequest) -> AccountModel:
    await check_unique_fields_existence("email", data.email)
    account = AccountModel(**data.model_dump())
    await settings.DB_CLIENT.accounts.insert_one(account.to_mongo())
    return account


async def delete_account(account_id: str) -> None:
    await settings.DB_CLIENT.accounts.delete_one({"id": account_id})