VORKOUT-7 #9

Merged
ivan.dev merged 12 commits from VORKOUT-7 into master 2025-06-05 16:29:14 +05:00
8 changed files with 43 additions and 50 deletions
Showing only changes of commit 98a4692247 - Show all commits

View File

@ -10,7 +10,7 @@ from enum import Enum
from api.db.tables.account import account_table from api.db.tables.account import account_table
from api.schemas.account.account import User 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]: 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_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_query = select(func.count()).select_from(account_table)
count_result = await connection.execute(count_query) 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) amount_pages = math.ceil(amount_count / limit)
return { return AllUserResponse(users=user_models, amount_count=amount_count, amount_pages=amount_pages)
'users': user_list,
'amount_count': amount_count,
'amount_pages': amount_pages
}
return user_list
async def get_user_id(connection: AsyncConnection, id: int) -> Optional[User]: async def get_user_id(connection: AsyncConnection, id: int) -> Optional[User]:

View File

@ -8,7 +8,7 @@ from sqlalchemy.ext.asyncio import AsyncConnection
from api.db.tables.account import account_keyring_table from api.db.tables.account import account_keyring_table
from api.schemas.account.account_keyring import AccountKeyring from api.schemas.account.account_keyring import AccountKeyring
from api.schemas.endpoints.account_keyring import AccountKeyringUpdate, StatusKey, TypeKey

View File

@ -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.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.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.user_role_validation import db_user_role_validation
from api.services.update_data_validation import update_user_data_changes from api.services.update_data_validation import update_user_data_changes
api_router = APIRouter( api_router = APIRouter(
prefix="/account", prefix="/account",
tags=["User accountModel"], tags=["User accountModel"],
) )
@api_router.get("") @api_router.get("",response_model=AllUserResponse)
async def get_all_account( async def get_all_account(
request: Request, request: Request,
@ -53,27 +54,21 @@ async def get_all_account(
return user_list return user_list
@api_router.get("/{user_id}") @api_router.get("/{user_id}", response_model=User)
async def get_account(user_id: int, async def get_account(user_id: int, request: Request, connection: AsyncConnection = Depends(get_connection_dep)):
request: Request,
connection: AsyncConnection = Depends(get_connection_dep)
):
current_user = request.state.current_user current_user = request.state.current_user
authorize_user = await db_user_role_validation(connection, current_user) authorize_user = await db_user_role_validation(connection, current_user)
user = await get_user_id(connection, user_id) user = await get_user_id(connection, user_id)
if user is None: if user is None:
raise HTTPException( raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Account not found")
status_code=status.HTTP_404_NOT_FOUND,
detail="Account not found")
return user return user
@api_router.post("")
@api_router.post("", response_model=User)
async def create_account( async def create_account(
user: UserUpdate, user: UserUpdate,
request: Request, 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( async def update_account(
user_id: int, user_id: int,
request: Request, request: Request,
@ -134,7 +129,7 @@ async def update_account(
return user return user
@api_router.delete("/{user_id}") @api_router.delete("/{user_id}", response_model=User)
async def delete_account( async def delete_account(
user_id: int, user_id: int,
request: Request, request: Request,

View File

@ -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.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( api_router = APIRouter(
prefix="/auth", prefix="/auth",
@ -52,7 +52,7 @@ def get_config():
return Settings() return Settings()
@api_router.post("") @api_router.post("", response_model=Access)
async def login_for_access_token( async def login_for_access_token(
user: Auth, user: Auth,
response: Response, response: Response,
@ -95,16 +95,11 @@ async def login_for_access_token(
Authorize.set_refresh_cookies(refresh_token) Authorize.set_refresh_cookies(refresh_token)
return Access(access_token=access_token)
return {
"access_token": access_token,
# "access_token_expires": access_token_expires_time,
# "refresh_token": refresh_token,
# "refresh_token_expires": refresh_token_expires_time
}
@api_router.post("/refresh")
@api_router.post("/refresh",response_model=Access)
async def refresh( async def refresh(
request: Request, request: Request,
connection: AsyncConnection = Depends(get_connection_dep), connection: AsyncConnection = Depends(get_connection_dep),
@ -138,9 +133,4 @@ async def refresh(
subject=current_user, expires_time=access_token_expires subject=current_user, expires_time=access_token_expires
) )
return { return Access(access_token=new_access_token)
"access_token": new_access_token,
# "access_token_expires": access_token_expires_time,
# "refresh_token": refresh_token,
# "refresh_token_expires": refresh_token_expires_time
}

View File

@ -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( async def get_keyring(
key_id: str, key_id: str,
request: Request, request: Request,
@ -53,7 +53,7 @@ async def get_keyring(
return keyring return keyring
@api_router.post("/{user_id}/{key_id}") @api_router.post("/{user_id}/{key_id}", response_model=AccountKeyring)
async def create_keyring( async def create_keyring(
user_id: int, user_id: int,
key_id: str, key_id: str,
@ -69,8 +69,8 @@ async def create_keyring(
keyring = await get_key_id(connection, key_id) keyring = await get_key_id(connection, key_id)
if keyring is None: if keyring is None:
user_new = await create_key(connection,key, key_id, ) keyring_new = await create_key(connection,key, key_id, )
return user_new return keyring_new
else: else:
raise HTTPException( 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( async def update_keyring(
user_id: int, user_id: int,
key_id: str, key_id: str,
@ -115,7 +115,7 @@ async def update_keyring(
return keyring return keyring
@api_router.delete("/{user_id}/{key_id}") @api_router.delete("/{user_id}/{key_id}", response_model=AccountKeyring)
async def delete_keyring( async def delete_keyring(
user_id: int, user_id: int,
key_id: str, key_id: str,

View File

@ -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.services.update_data_validation import update_user_data_changes
from api.schemas.endpoints.account import UserUpdate from api.schemas.endpoints.account import UserUpdate
from api.schemas.account.account import User
api_router = APIRouter( api_router = APIRouter(
@ -26,7 +26,7 @@ api_router = APIRouter(
) )
@api_router.get("") @api_router.get("",response_model=User)
async def get_profile( async def get_profile(
request: Request, request: Request,
connection: AsyncConnection = Depends(get_connection_dep), connection: AsyncConnection = Depends(get_connection_dep),
@ -44,7 +44,7 @@ async def get_profile(
return user return user
@api_router.put("") @api_router.put("",response_model=User)
async def update_profile( async def update_profile(
request: Request, request: Request,
user_updata: UserUpdate, user_updata: UserUpdate,

View File

@ -1,5 +1,5 @@
from enum import Enum from enum import Enum
from typing import Optional from typing import Optional, List
from datetime import datetime from datetime import datetime
from pydantic import BaseModel, EmailStr, Field from pydantic import BaseModel, EmailStr, Field
@ -28,3 +28,12 @@ class UserUpdate(BaseModel):
creator_id: Optional[int] = None creator_id: Optional[int] = None
created_at: Optional[datetime] = None created_at: Optional[datetime] = None
status: Optional[Status] = None status: Optional[Status] = None
class AllUser(BaseModel):
id: int
login: str
class AllUserResponse(BaseModel):
users: List[AllUser]
amount_count: int
amount_pages: int

View File

@ -9,3 +9,6 @@ class Auth(BaseModel):
class Refresh(BaseModel): class Refresh(BaseModel):
refresh_token: str refresh_token: str
class Access(BaseModel):
access_token: str