Spaces:
Running
Running
from typing import Optional | |
from fastapi import Depends, Query | |
from trauma.api.account import account_router | |
from trauma.api.account.db_requests import get_all_model_obj, create_account_obj, delete_account | |
from trauma.api.account.dto import AccountType | |
from trauma.api.account.model import AccountModel | |
from trauma.api.account.schemas import AccountWrapper, AllAccountsResponse, CreateAccountRequest | |
from trauma.api.common.dto import Paging | |
from trauma.core.security import PermissionDependency | |
from trauma.core.wrappers import TraumaResponseWrapper | |
async def get_all_accounts( | |
pageSize: Optional[int] = Query(10, description="Number of countries to return per page"), | |
pageIndex: Optional[int] = Query(0, description="Page index to retrieve"), | |
_: AccountModel = Depends(PermissionDependency([AccountType.Admin])) | |
) -> TraumaResponseWrapper[AllAccountsResponse]: | |
countries, total_count = await get_all_model_obj(pageSize, pageIndex) | |
response = AllAccountsResponse( | |
paging=Paging(pageSize=pageSize, pageIndex=pageIndex, totalCount=total_count), | |
data=countries | |
) | |
return TraumaResponseWrapper(data=response) | |
async def get_account( | |
account: AccountModel = Depends(PermissionDependency([AccountType.Admin, AccountType.User])) | |
) -> AccountWrapper: | |
return AccountWrapper(data=account) | |
async def create_account( | |
account_data: CreateAccountRequest, | |
_: AccountModel = Depends(PermissionDependency([AccountType.Admin])) | |
) -> AccountWrapper: | |
account = await create_account_obj(account_data) | |
return AccountWrapper(data=account) | |
async def update_account( | |
accountId: str, | |
_: AccountModel = Depends(PermissionDependency([AccountType.Admin])) | |
) -> TraumaResponseWrapper: | |
await delete_account(accountId) | |
return TraumaResponseWrapper() | |