Label editing

This commit is contained in:
Olaf
2026-08-24 21:24:39 +02:00
parent 2810fd914d
commit 95992cc466
17 changed files with 259 additions and 7 deletions
+36
View File
@@ -6,6 +6,7 @@ from pydantic import BaseModel
from backend.app.api.dependencies import get_current_user
from backend.app.database import AVATARS_DIR, get_connection, hash_password
from backend.app.services.link_service import create_label, delete_label, list_user_labels, update_label
router = APIRouter()
@@ -27,6 +28,10 @@ class UserPluginConfigUpdate(BaseModel):
hashtag: str | None = None
class LabelUpdate(BaseModel):
name: str
@router.get('/me')
def get_current_user_profile(user: dict = Depends(get_current_user)):
with get_connection() as conn:
@@ -81,6 +86,37 @@ def update_password(payload: PasswordUpdate, user: dict = Depends(get_current_us
return {'status': 'password_updated'}
@router.get('/labels')
def get_labels(user: dict = Depends(get_current_user)):
return list_user_labels(user['id'])
@router.post('/labels', status_code=201)
def add_label(payload: LabelUpdate, user: dict = Depends(get_current_user)):
try:
return create_label(user['id'], payload.name)
except ValueError as error:
raise HTTPException(status_code=409, detail=str(error)) from error
@router.put('/labels/{label_id}')
def edit_label(label_id: str, payload: LabelUpdate, user: dict = Depends(get_current_user)):
try:
result = update_label(label_id, user['id'], payload.name)
except ValueError as error:
raise HTTPException(status_code=409, detail=str(error)) from error
if result is None:
raise HTTPException(status_code=404, detail='Label not found or not owned by user')
return result
@router.delete('/labels/{label_id}')
def remove_label(label_id: str, user: dict = Depends(get_current_user)):
if not delete_label(label_id, user['id']):
raise HTTPException(status_code=404, detail='Label not found or not owned by user')
return {'status': 'deleted', 'id': label_id}
@router.post('/avatar')
async def upload_avatar(
avatar: UploadFile = File(...),