86 lines
2.2 KiB
Python
86 lines
2.2 KiB
Python
from fastapi import APIRouter, Depends
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
|
from app.database.session import get_db
|
|
from app.domain.entities.lens import LensEntity
|
|
from app.domain.entities.set import SetEntity
|
|
from app.infrastructure.dependencies import get_current_user
|
|
from app.infrastructure.sets_service import SetsService
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.get(
|
|
'/sets/',
|
|
response_model=list[SetEntity],
|
|
summary='Get all sets',
|
|
description='Returns a list of all sets',
|
|
)
|
|
async def get_all_sets(
|
|
db: AsyncSession = Depends(get_db),
|
|
user=Depends(get_current_user),
|
|
):
|
|
sets_service = SetsService(db)
|
|
return await sets_service.get_all_sets()
|
|
|
|
|
|
@router.post(
|
|
'/sets/',
|
|
response_model=SetEntity,
|
|
summary='Create a new set',
|
|
description='Create a new set',
|
|
)
|
|
async def create_set(
|
|
_set: SetEntity,
|
|
db: AsyncSession = Depends(get_db),
|
|
user=Depends(get_current_user),
|
|
):
|
|
sets_service = SetsService(db)
|
|
return await sets_service.create_set(_set)
|
|
|
|
|
|
@router.put(
|
|
'/sets/{set_id}/',
|
|
response_model=SetEntity,
|
|
summary='Update a set',
|
|
description='Update a set,'
|
|
)
|
|
async def update_set(
|
|
set_id: int,
|
|
_set: SetEntity,
|
|
db: AsyncSession = Depends(get_db),
|
|
user=Depends(get_current_user),
|
|
):
|
|
sets_service = SetsService(db)
|
|
return await sets_service.update_set(set_id, _set)
|
|
|
|
|
|
@router.post(
|
|
'/sets/append_lenses/{set_id}/',
|
|
response_model=list[LensEntity],
|
|
summary='Append content from set to lenses',
|
|
description='Get all content from set, converting to lens and appending to database',
|
|
)
|
|
async def append_lenses_set(
|
|
set_id: int,
|
|
db: AsyncSession = Depends(get_db),
|
|
user=Depends(get_current_user),
|
|
):
|
|
sets_service = SetsService(db)
|
|
return await sets_service.append_set_content_to_lenses(set_id)
|
|
|
|
|
|
@router.delete(
|
|
'/sets/{set_id}/',
|
|
response_model=SetEntity,
|
|
summary='Delete set',
|
|
description='Delete an existing set',
|
|
)
|
|
async def delete_set(
|
|
set_id: int,
|
|
db: AsyncSession = Depends(get_db),
|
|
user=Depends(get_current_user),
|
|
):
|
|
sets_service = SetsService(db)
|
|
return await sets_service.delete_set(set_id)
|