Tag functionality added
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
from fastapi import APIRouter, Header, HTTPException, status
|
||||
from pydantic import BaseModel
|
||||
|
||||
from backend.app.services.link_service import create_link, list_public_links, update_link
|
||||
from backend.app.services.link_service import create_link, list_public_links, list_tags, update_link
|
||||
from backend.app.services.plugin_manager import plugin_manager
|
||||
from backend.app.services.token_service import validate_token
|
||||
|
||||
@@ -13,12 +13,19 @@ class LinkCreate(BaseModel):
|
||||
url: str
|
||||
comment: str = ''
|
||||
timestamp: str | None = None
|
||||
tags: list[str] = []
|
||||
|
||||
|
||||
class LinkUpdate(BaseModel):
|
||||
title: str
|
||||
url: str
|
||||
comment: str = ''
|
||||
tags: list[str] = []
|
||||
|
||||
|
||||
@router.get('/tags')
|
||||
def available_tags():
|
||||
return list_tags()
|
||||
|
||||
|
||||
@router.post('/links', status_code=status.HTTP_201_CREATED)
|
||||
@@ -30,7 +37,10 @@ def create_link_endpoint(payload: LinkCreate, authorization: str | None = Header
|
||||
if info is None:
|
||||
raise HTTPException(status_code=401, detail='Token expired or invalid')
|
||||
|
||||
record = create_link(info['user_id'], payload.title, payload.url, payload.comment, payload.timestamp)
|
||||
try:
|
||||
record = create_link(info['user_id'], payload.title, payload.url, payload.comment, payload.timestamp, payload.tags)
|
||||
except ValueError as error:
|
||||
raise HTTPException(status_code=422, detail=str(error)) from error
|
||||
plugin_manager.dispatch({'type': 'link_created', **record})
|
||||
return record
|
||||
|
||||
@@ -47,7 +57,10 @@ def update_link_endpoint(
|
||||
if info is None:
|
||||
raise HTTPException(status_code=401, detail='Token expired or invalid')
|
||||
|
||||
record = update_link(link_id, info['user_id'], payload.title, payload.url, payload.comment)
|
||||
try:
|
||||
record = update_link(link_id, info['user_id'], payload.title, payload.url, payload.comment, payload.tags)
|
||||
except ValueError as error:
|
||||
raise HTTPException(status_code=422, detail=str(error)) from error
|
||||
if record is None:
|
||||
raise HTTPException(status_code=404, detail='Link not found or not owned by user')
|
||||
return record
|
||||
|
||||
Reference in New Issue
Block a user