feat: pydantic models for swagger
This commit is contained in:
parent
96dbc744d7
commit
98a4692247
@ -10,7 +10,7 @@ from enum import Enum
|
||||
from api.db.tables.account import account_table
|
||||
|
||||
from api.schemas.account.account import User
|
||||
from api.schemas.endpoints.account import UserUpdate, Role, Status
|
||||
from api.schemas.endpoints.account import AllUser,AllUserResponse
|
||||
|
||||
async def get_all_users_login_and_id(connection: AsyncConnection,page,limit) -> Optional[User]:
|
||||
"""
|
||||
@ -27,6 +27,8 @@ async def get_all_users_login_and_id(connection: AsyncConnection,page,limit) ->
|
||||
|
||||
user_list = [{'id': user.id, 'login': user.login} for user in users]
|
||||
|
||||
user_models = [AllUser(id=user['id'], login=user['login']) for user in user_list]
|
||||
|
||||
count_query = select(func.count()).select_from(account_table)
|
||||
|
||||
count_result = await connection.execute(count_query)
|
||||
@ -34,13 +36,7 @@ async def get_all_users_login_and_id(connection: AsyncConnection,page,limit) ->
|
||||
amount_pages = math.ceil(amount_count / limit)
|
||||
|
||||
|
||||
return {
|
||||
'users': user_list,
|
||||
'amount_count': amount_count,
|
||||
'amount_pages': amount_pages
|
||||
}
|
||||
|
||||
return user_list
|
||||
return AllUserResponse(users=user_models, amount_count=amount_count, amount_pages=amount_pages)
|
||||
|
||||
|
||||
async def get_user_id(connection: AsyncConnection, id: int) -> Optional[User]:
|
||||
|
@ -8,7 +8,7 @@ from sqlalchemy.ext.asyncio import AsyncConnection
|
||||
from api.db.tables.account import account_keyring_table
|
||||
|
||||
from api.schemas.account.account_keyring import AccountKeyring
|
||||
from api.schemas.endpoints.account_keyring import AccountKeyringUpdate, StatusKey, TypeKey
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -17,20 +17,21 @@ from api.db.connection.session import get_connection_dep
|
||||
from api.db.logic.account import get_user_id, update_user_id, create_user,get_user_login,get_all_users_login_and_id
|
||||
|
||||
from api.schemas.account.account import User,Status
|
||||
from api.schemas.endpoints.account import UserUpdate
|
||||
from api.schemas.endpoints.account import UserUpdate,AllUserResponse
|
||||
|
||||
|
||||
from api.services.user_role_validation import db_user_role_validation
|
||||
from api.services.update_data_validation import update_user_data_changes
|
||||
|
||||
|
||||
|
||||
api_router = APIRouter(
|
||||
prefix="/account",
|
||||
tags=["User accountModel"],
|
||||
)
|
||||
|
||||
|
||||
@api_router.get("")
|
||||
@api_router.get("",response_model=AllUserResponse)
|
||||
async def get_all_account(
|
||||
|
||||
request: Request,
|
||||
@ -53,27 +54,21 @@ async def get_all_account(
|
||||
return user_list
|
||||
|
||||
|
||||
@api_router.get("/{user_id}")
|
||||
async def get_account(user_id: int,
|
||||
request: Request,
|
||||
connection: AsyncConnection = Depends(get_connection_dep)
|
||||
):
|
||||
|
||||
|
||||
@api_router.get("/{user_id}", response_model=User)
|
||||
async def get_account(user_id: int, request: Request, connection: AsyncConnection = Depends(get_connection_dep)):
|
||||
current_user = request.state.current_user
|
||||
authorize_user = await db_user_role_validation(connection, current_user)
|
||||
|
||||
user = await get_user_id(connection, user_id)
|
||||
|
||||
if user is None:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND,
|
||||
detail="Account not found")
|
||||
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Account not found")
|
||||
|
||||
return user
|
||||
|
||||
|
||||
@api_router.post("")
|
||||
|
||||
@api_router.post("", response_model=User)
|
||||
async def create_account(
|
||||
user: UserUpdate,
|
||||
request: Request,
|
||||
@ -100,7 +95,7 @@ async def create_account(
|
||||
|
||||
|
||||
|
||||
@api_router.put("/{user_id}")
|
||||
@api_router.put("/{user_id}", response_model=User)
|
||||
async def update_account(
|
||||
user_id: int,
|
||||
request: Request,
|
||||
@ -134,7 +129,7 @@ async def update_account(
|
||||
|
||||
return user
|
||||
|
||||
@api_router.delete("/{user_id}")
|
||||
@api_router.delete("/{user_id}", response_model=User)
|
||||
async def delete_account(
|
||||
user_id: int,
|
||||
request: Request,
|
||||
|
@ -26,7 +26,7 @@ from api.services.auth import authenticate_user
|
||||
|
||||
from api.db.logic.auth import add_new_refresh_token,upgrade_old_refresh_token
|
||||
|
||||
from api.schemas.endpoints.auth import Auth
|
||||
from api.schemas.endpoints.auth import Auth, Access
|
||||
|
||||
api_router = APIRouter(
|
||||
prefix="/auth",
|
||||
@ -52,7 +52,7 @@ def get_config():
|
||||
return Settings()
|
||||
|
||||
|
||||
@api_router.post("")
|
||||
@api_router.post("", response_model=Access)
|
||||
async def login_for_access_token(
|
||||
user: Auth,
|
||||
response: Response,
|
||||
@ -95,16 +95,11 @@ async def login_for_access_token(
|
||||
|
||||
Authorize.set_refresh_cookies(refresh_token)
|
||||
|
||||
|
||||
return {
|
||||
"access_token": access_token,
|
||||
# "access_token_expires": access_token_expires_time,
|
||||
# "refresh_token": refresh_token,
|
||||
# "refresh_token_expires": refresh_token_expires_time
|
||||
}
|
||||
return Access(access_token=access_token)
|
||||
|
||||
|
||||
@api_router.post("/refresh")
|
||||
|
||||
@api_router.post("/refresh",response_model=Access)
|
||||
async def refresh(
|
||||
request: Request,
|
||||
connection: AsyncConnection = Depends(get_connection_dep),
|
||||
@ -138,9 +133,4 @@ async def refresh(
|
||||
subject=current_user, expires_time=access_token_expires
|
||||
)
|
||||
|
||||
return {
|
||||
"access_token": new_access_token,
|
||||
# "access_token_expires": access_token_expires_time,
|
||||
# "refresh_token": refresh_token,
|
||||
# "refresh_token_expires": refresh_token_expires_time
|
||||
}
|
||||
return Access(access_token=new_access_token)
|
||||
|
@ -32,7 +32,7 @@ api_router = APIRouter(
|
||||
)
|
||||
|
||||
|
||||
@api_router.get("/{user_id}/{key_id}")
|
||||
@api_router.get("/{user_id}/{key_id}", response_model=AccountKeyring)
|
||||
async def get_keyring(
|
||||
key_id: str,
|
||||
request: Request,
|
||||
@ -53,7 +53,7 @@ async def get_keyring(
|
||||
return keyring
|
||||
|
||||
|
||||
@api_router.post("/{user_id}/{key_id}")
|
||||
@api_router.post("/{user_id}/{key_id}", response_model=AccountKeyring)
|
||||
async def create_keyring(
|
||||
user_id: int,
|
||||
key_id: str,
|
||||
@ -69,8 +69,8 @@ async def create_keyring(
|
||||
keyring = await get_key_id(connection, key_id)
|
||||
|
||||
if keyring is None:
|
||||
user_new = await create_key(connection,key, key_id, )
|
||||
return user_new
|
||||
keyring_new = await create_key(connection,key, key_id, )
|
||||
return keyring_new
|
||||
|
||||
else:
|
||||
raise HTTPException(
|
||||
@ -79,7 +79,7 @@ async def create_keyring(
|
||||
|
||||
|
||||
|
||||
@api_router.put("/{user_id}/{key_id}")
|
||||
@api_router.put("/{user_id}/{key_id}", response_model=AccountKeyring)
|
||||
async def update_keyring(
|
||||
user_id: int,
|
||||
key_id: str,
|
||||
@ -115,7 +115,7 @@ async def update_keyring(
|
||||
|
||||
return keyring
|
||||
|
||||
@api_router.delete("/{user_id}/{key_id}")
|
||||
@api_router.delete("/{user_id}/{key_id}", response_model=AccountKeyring)
|
||||
async def delete_keyring(
|
||||
user_id: int,
|
||||
key_id: str,
|
||||
|
@ -17,7 +17,7 @@ from api.db.logic.account import get_user_id, update_user_id,get_user_login
|
||||
from api.services.update_data_validation import update_user_data_changes
|
||||
|
||||
from api.schemas.endpoints.account import UserUpdate
|
||||
|
||||
from api.schemas.account.account import User
|
||||
|
||||
|
||||
api_router = APIRouter(
|
||||
@ -26,7 +26,7 @@ api_router = APIRouter(
|
||||
)
|
||||
|
||||
|
||||
@api_router.get("")
|
||||
@api_router.get("",response_model=User)
|
||||
async def get_profile(
|
||||
request: Request,
|
||||
connection: AsyncConnection = Depends(get_connection_dep),
|
||||
@ -44,7 +44,7 @@ async def get_profile(
|
||||
return user
|
||||
|
||||
|
||||
@api_router.put("")
|
||||
@api_router.put("",response_model=User)
|
||||
async def update_profile(
|
||||
request: Request,
|
||||
user_updata: UserUpdate,
|
||||
|
@ -1,5 +1,5 @@
|
||||
from enum import Enum
|
||||
from typing import Optional
|
||||
from typing import Optional, List
|
||||
from datetime import datetime
|
||||
from pydantic import BaseModel, EmailStr, Field
|
||||
|
||||
@ -28,3 +28,12 @@ class UserUpdate(BaseModel):
|
||||
creator_id: Optional[int] = None
|
||||
created_at: Optional[datetime] = None
|
||||
status: Optional[Status] = None
|
||||
|
||||
class AllUser(BaseModel):
|
||||
id: int
|
||||
login: str
|
||||
|
||||
class AllUserResponse(BaseModel):
|
||||
users: List[AllUser]
|
||||
amount_count: int
|
||||
amount_pages: int
|
||||
|
@ -9,3 +9,6 @@ class Auth(BaseModel):
|
||||
|
||||
class Refresh(BaseModel):
|
||||
refresh_token: str
|
||||
|
||||
class Access(BaseModel):
|
||||
access_token: str
|
||||
|
Loading…
Reference in New Issue
Block a user