Created basic backend structure, auth and CRUD endpoints.
This commit is contained in:
75
app/connections.py
Normal file
75
app/connections.py
Normal file
@@ -0,0 +1,75 @@
|
||||
from fastapi.routing import APIRouter
|
||||
from data.schemas import Connection, ConnectionCreate, ConnectionUpdate
|
||||
from fastapi import Depends, HTTPException, status
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from data.crud import (
|
||||
read_connection,
|
||||
read_all_connections,
|
||||
create_connection,
|
||||
update_connection,
|
||||
delete_connection,
|
||||
)
|
||||
from core.dependencies import get_db, get_current_user, get_admin_user
|
||||
|
||||
connections_router = APIRouter()
|
||||
|
||||
|
||||
@connections_router.post("/", status_code=status.HTTP_201_CREATED)
|
||||
async def create_connection_endpoint(
|
||||
connection: ConnectionCreate,
|
||||
db: AsyncSession = Depends(get_db),
|
||||
admin=Depends(get_admin_user),
|
||||
) -> Connection:
|
||||
return await create_connection(db=db, connection=connection, user_id=admin.id)
|
||||
|
||||
|
||||
@connections_router.get(
|
||||
"/",
|
||||
response_model=list[Connection],
|
||||
dependencies=[Depends(get_current_user)],
|
||||
)
|
||||
async def read_connections_endpoint(
|
||||
db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
db_connection = await read_all_connections(db)
|
||||
return db_connection
|
||||
|
||||
|
||||
@connections_router.get(
|
||||
"/{connection_id}",
|
||||
response_model=Connection,
|
||||
dependencies=[Depends(get_current_user)],
|
||||
)
|
||||
async def read_connection_endpoint(connection_id: int, db: AsyncSession = Depends(get_db)):
|
||||
db_connection = await read_connection(db, connection_id)
|
||||
if db_connection is None:
|
||||
raise HTTPException(status_code=404, detail="Connection not found")
|
||||
return db_connection
|
||||
|
||||
|
||||
@connections_router.put(
|
||||
"/{connection_id}",
|
||||
response_model=Connection,
|
||||
dependencies=[Depends(get_admin_user)],
|
||||
)
|
||||
async def update_connection_endpoint(
|
||||
connection_id: int, connection: ConnectionUpdate, db: AsyncSession = Depends(get_db)
|
||||
):
|
||||
db_connection = await update_connection(
|
||||
db=db, connection_id=connection_id, connection=connection
|
||||
)
|
||||
if db_connection is None:
|
||||
raise HTTPException(status_code=404, detail="Connection not found")
|
||||
return db_connection
|
||||
|
||||
|
||||
@connections_router.delete(
|
||||
"/{connection_id}",
|
||||
status_code=status.HTTP_204_NO_CONTENT,
|
||||
dependencies=[Depends(get_admin_user)],
|
||||
)
|
||||
async def delete_connection_endpoint(connection_id: int, db: AsyncSession = Depends(get_db)):
|
||||
db_connection = await delete_connection(db=db, connection_id=connection_id)
|
||||
if db_connection is None:
|
||||
raise HTTPException(status_code=404, detail="Connection not found")
|
||||
return None
|
||||
Reference in New Issue
Block a user