|
@@ -11,6 +11,7 @@ from apps.web.models.documents import (
|
|
|
DocumentForm,
|
|
|
DocumentUpdateForm,
|
|
|
DocumentModel,
|
|
|
+ DocumentResponse,
|
|
|
)
|
|
|
|
|
|
from utils.utils import get_current_user
|
|
@@ -23,9 +24,18 @@ router = APIRouter()
|
|
|
############################
|
|
|
|
|
|
|
|
|
-@router.get("/", response_model=List[DocumentModel])
|
|
|
+@router.get("/", response_model=List[DocumentResponse])
|
|
|
async def get_documents(user=Depends(get_current_user)):
|
|
|
- return Documents.get_docs()
|
|
|
+ docs = [
|
|
|
+ DocumentResponse(
|
|
|
+ **{
|
|
|
+ **doc.model_dump(),
|
|
|
+ "content": json.loads(doc.content if doc.content else "{}"),
|
|
|
+ }
|
|
|
+ )
|
|
|
+ for doc in Documents.get_docs()
|
|
|
+ ]
|
|
|
+ return docs
|
|
|
|
|
|
|
|
|
############################
|
|
@@ -33,7 +43,7 @@ async def get_documents(user=Depends(get_current_user)):
|
|
|
############################
|
|
|
|
|
|
|
|
|
-@router.post("/create", response_model=Optional[DocumentModel])
|
|
|
+@router.post("/create", response_model=Optional[DocumentResponse])
|
|
|
async def create_new_doc(form_data: DocumentForm, user=Depends(get_current_user)):
|
|
|
if user.role != "admin":
|
|
|
raise HTTPException(
|
|
@@ -46,7 +56,12 @@ async def create_new_doc(form_data: DocumentForm, user=Depends(get_current_user)
|
|
|
doc = Documents.insert_new_doc(user.id, form_data)
|
|
|
|
|
|
if doc:
|
|
|
- return doc
|
|
|
+ return DocumentResponse(
|
|
|
+ **{
|
|
|
+ **doc.model_dump(),
|
|
|
+ "content": json.loads(doc.content if doc.content else "{}"),
|
|
|
+ }
|
|
|
+ )
|
|
|
else:
|
|
|
raise HTTPException(
|
|
|
status_code=status.HTTP_400_BAD_REQUEST,
|
|
@@ -64,12 +79,45 @@ async def create_new_doc(form_data: DocumentForm, user=Depends(get_current_user)
|
|
|
############################
|
|
|
|
|
|
|
|
|
-@router.get("/name/{name}", response_model=Optional[DocumentModel])
|
|
|
+@router.get("/name/{name}", response_model=Optional[DocumentResponse])
|
|
|
async def get_doc_by_name(name: str, user=Depends(get_current_user)):
|
|
|
doc = Documents.get_doc_by_name(name)
|
|
|
|
|
|
if doc:
|
|
|
- return doc
|
|
|
+ return DocumentResponse(
|
|
|
+ **{
|
|
|
+ **doc.model_dump(),
|
|
|
+ "content": json.loads(doc.content if doc.content else "{}"),
|
|
|
+ }
|
|
|
+ )
|
|
|
+ else:
|
|
|
+ raise HTTPException(
|
|
|
+ status_code=status.HTTP_401_UNAUTHORIZED,
|
|
|
+ detail=ERROR_MESSAGES.NOT_FOUND,
|
|
|
+ )
|
|
|
+
|
|
|
+
|
|
|
+############################
|
|
|
+# TagDocByName
|
|
|
+############################
|
|
|
+
|
|
|
+
|
|
|
+class TagDocumentForm(BaseModel):
|
|
|
+ name: str
|
|
|
+ tags: List[dict]
|
|
|
+
|
|
|
+
|
|
|
+@router.post("/name/{name}/tags", response_model=Optional[DocumentResponse])
|
|
|
+async def tag_doc_by_name(form_data: TagDocumentForm, user=Depends(get_current_user)):
|
|
|
+ doc = Documents.update_doc_content_by_name(form_data.name, {"tags": form_data.tags})
|
|
|
+
|
|
|
+ if doc:
|
|
|
+ return DocumentResponse(
|
|
|
+ **{
|
|
|
+ **doc.model_dump(),
|
|
|
+ "content": json.loads(doc.content if doc.content else "{}"),
|
|
|
+ }
|
|
|
+ )
|
|
|
else:
|
|
|
raise HTTPException(
|
|
|
status_code=status.HTTP_401_UNAUTHORIZED,
|
|
@@ -82,7 +130,7 @@ async def get_doc_by_name(name: str, user=Depends(get_current_user)):
|
|
|
############################
|
|
|
|
|
|
|
|
|
-@router.post("/name/{name}/update", response_model=Optional[DocumentModel])
|
|
|
+@router.post("/name/{name}/update", response_model=Optional[DocumentResponse])
|
|
|
async def update_doc_by_name(
|
|
|
name: str, form_data: DocumentUpdateForm, user=Depends(get_current_user)
|
|
|
):
|
|
@@ -94,7 +142,12 @@ async def update_doc_by_name(
|
|
|
|
|
|
doc = Documents.update_doc_by_name(name, form_data)
|
|
|
if doc:
|
|
|
- return doc
|
|
|
+ return DocumentResponse(
|
|
|
+ **{
|
|
|
+ **doc.model_dump(),
|
|
|
+ "content": json.loads(doc.content if doc.content else "{}"),
|
|
|
+ }
|
|
|
+ )
|
|
|
else:
|
|
|
raise HTTPException(
|
|
|
status_code=status.HTTP_400_BAD_REQUEST,
|