feat: CRUD ListEvent
This commit is contained in:
@@ -2,8 +2,9 @@ from api.endpoints.auth import api_router as auth_router
|
||||
from api.endpoints.profile import api_router as profile_router
|
||||
from api.endpoints.account import api_router as account_router
|
||||
from api.endpoints.keyring import api_router as keyring_router
|
||||
from api.endpoints.listevents import api_router as listevents_router
|
||||
|
||||
list_of_routes = [auth_router, profile_router, account_router, keyring_router]
|
||||
list_of_routes = [auth_router, profile_router, account_router, keyring_router,listevents_router]
|
||||
|
||||
__all__ = [
|
||||
"list_of_routes",
|
||||
|
174
api/api/endpoints/listevents.py
Normal file
174
api/api/endpoints/listevents.py
Normal file
@@ -0,0 +1,174 @@
|
||||
from fastapi import (
|
||||
APIRouter,
|
||||
Depends,
|
||||
HTTPException,
|
||||
status,
|
||||
)
|
||||
|
||||
|
||||
from sqlalchemy.ext.asyncio import AsyncConnection
|
||||
|
||||
from api.db.connection.session import get_connection_dep
|
||||
|
||||
from api.db.logic.account import (
|
||||
get_user_by_login
|
||||
)
|
||||
|
||||
from api.db.logic.listevents import (
|
||||
get_listevents_by_name,
|
||||
get_listevents_by_id,
|
||||
create_listevents,
|
||||
update_listevents_by_id,
|
||||
get_listevents_page,
|
||||
get_listevents_page_by_creator_id
|
||||
|
||||
)
|
||||
|
||||
|
||||
from api.schemas.events.list_events import ListEvent
|
||||
from api.db.tables.events import EventStatus
|
||||
|
||||
from api.schemas.base import bearer_schema
|
||||
|
||||
from api.schemas.endpoints.list_events import ListEventUpdate,AllListEventResponse
|
||||
|
||||
from api.services.auth import get_current_user
|
||||
|
||||
from api.services.user_role_validation import db_user_role_validation_for_listevents_by_listevent_id,db_user_role_validation_for_listevents
|
||||
from api.services.update_data_validation import update_listevents_data_changes
|
||||
|
||||
|
||||
api_router = APIRouter(
|
||||
prefix="/listevents",
|
||||
tags=["list events"],
|
||||
)
|
||||
|
||||
@api_router.get("",
|
||||
dependencies=[Depends(bearer_schema)],
|
||||
response_model=AllListEventResponse)
|
||||
async def get_all_list_events(
|
||||
page: int = 1,
|
||||
limit: int = 10,
|
||||
connection: AsyncConnection = Depends(get_connection_dep),
|
||||
current_user=Depends(get_current_user),
|
||||
):
|
||||
|
||||
authorize_user,page_flag = await db_user_role_validation_for_listevents(connection, current_user)
|
||||
|
||||
if page_flag:
|
||||
|
||||
list_eventslist = await get_listevents_page(connection, page, limit)
|
||||
print(list_eventslist)
|
||||
if list_eventslist is None:
|
||||
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="List events not found")
|
||||
|
||||
return list_eventslist
|
||||
else:
|
||||
list_events_list = await get_listevents_page_by_creator_id(connection,authorize_user.id, page, limit)
|
||||
|
||||
if list_events_list is None:
|
||||
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="List events not found")
|
||||
|
||||
return list_events_list
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@api_router.get("/{listevents_id}", dependencies=[Depends(bearer_schema)], response_model=ListEvent)
|
||||
async def get_list_events(
|
||||
listevents_id: int,
|
||||
connection: AsyncConnection = Depends(get_connection_dep),
|
||||
current_user=Depends(get_current_user)
|
||||
):
|
||||
listevents_validation = await get_listevents_by_id(connection, listevents_id)
|
||||
|
||||
if listevents_validation is None:
|
||||
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="List events not found")
|
||||
|
||||
authorize_user = await db_user_role_validation_for_listevents_by_listevent_id(connection, current_user,listevents_validation.creator_id)
|
||||
|
||||
|
||||
if listevents_id is None:
|
||||
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="List events not found")
|
||||
|
||||
return listevents_validation
|
||||
|
||||
|
||||
@api_router.post("", dependencies=[Depends(bearer_schema)], response_model=ListEvent)
|
||||
async def create_list_events(
|
||||
listevents: ListEventUpdate,
|
||||
connection: AsyncConnection = Depends(get_connection_dep),
|
||||
current_user=Depends(get_current_user)
|
||||
):
|
||||
|
||||
user_validation = await get_user_by_login(connection, current_user)
|
||||
listevents_validation = await get_listevents_by_name(connection, listevents.name)
|
||||
|
||||
if listevents_validation is None:
|
||||
await create_listevents(connection, listevents, user_validation.id)
|
||||
user_new = await get_listevents_by_name(connection, listevents.name)
|
||||
return user_new
|
||||
|
||||
else:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_400_BAD_REQUEST, detail="An List events with this information already exists."
|
||||
)
|
||||
|
||||
@api_router.put("/{listevents_id}", dependencies=[Depends(bearer_schema)], response_model=ListEvent)
|
||||
async def update_listevents(
|
||||
listevents_id: int,
|
||||
listevents_update: ListEventUpdate,
|
||||
connection: AsyncConnection = Depends(get_connection_dep),
|
||||
current_user=Depends(get_current_user),
|
||||
):
|
||||
|
||||
listevents_validation = await get_listevents_by_id(connection, listevents_id)
|
||||
|
||||
if listevents_validation is None:
|
||||
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="List events not found")
|
||||
|
||||
authorize_user = await db_user_role_validation_for_listevents_by_listevent_id(connection, current_user,listevents_validation.creator_id)
|
||||
|
||||
update_values = update_listevents_data_changes(listevents_update, listevents_validation)
|
||||
|
||||
if update_values is None:
|
||||
return listevents_validation
|
||||
|
||||
listevents_update_data = ListEvent.model_validate({**listevents_validation.model_dump(), **update_values})
|
||||
|
||||
await update_listevents_by_id(connection, update_values, listevents_validation)
|
||||
|
||||
listevents = await get_listevents_by_id(connection, listevents_id)
|
||||
|
||||
return listevents
|
||||
|
||||
|
||||
@api_router.delete("/{listevents_id}", dependencies=[Depends(bearer_schema)], response_model=ListEvent)
|
||||
async def delete_list_events(
|
||||
listevents_id: int,
|
||||
connection: AsyncConnection = Depends(get_connection_dep),
|
||||
current_user=Depends(get_current_user),
|
||||
):
|
||||
|
||||
listevents_validation = await get_listevents_by_id(connection, listevents_id)
|
||||
|
||||
if listevents_validation is None:
|
||||
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="List events not found")
|
||||
|
||||
authorize_user = await db_user_role_validation_for_listevents_by_listevent_id(connection, current_user,listevents_validation.creator_id)
|
||||
|
||||
listevents_update = ListEventUpdate(status=EventStatus.DELETED.value)
|
||||
|
||||
|
||||
update_values = update_listevents_data_changes(listevents_update, listevents_validation)
|
||||
|
||||
if update_values is None:
|
||||
return listevents_validation
|
||||
|
||||
await update_listevents_by_id(connection, update_values, listevents_validation)
|
||||
|
||||
listevents = await get_listevents_by_id(connection, listevents_id)
|
||||
|
||||
return listevents
|
Reference in New Issue
Block a user