22from fastapi .responses import FileResponse
33from fastapi import BackgroundTasks
44from sqlalchemy .ext .asyncio import AsyncSession
5- from typing import Optional
5+ from typing import Optional , List
66import os
77import io
88from zipfile import ZipFile
1111
1212from app .utils .get_db import get_db
1313from app .utils .auth import get_current_user
14- from app .curd .article import crud_upload_to_self_folder , crud_get_self_folders , crud_get_articles_in_folder , crud_self_create_folder , crud_self_article_to_recycle_bin , crud_self_folder_to_recycle_bin , crud_read_article , crud_import_self_folder , crud_export_self_folder ,crud_create_tag , crud_delete_tag , crud_get_article_tags
14+ from app .curd .article import crud_upload_to_self_folder , crud_get_self_folders , crud_get_articles_in_folder , crud_self_create_folder , crud_self_article_to_recycle_bin , crud_self_folder_to_recycle_bin , crud_read_article , crud_import_self_folder , crud_export_self_folder ,crud_create_tag , crud_delete_tag , crud_get_article_tags , crud_all_tags_order , crud_change_folder_name , crud_change_article_name
1515from app .schemas .article import SelfCreateFolder
1616
1717router = APIRouter ()
@@ -130,7 +130,7 @@ async def import_self_folder(folder_name: str = Query(...), zip: UploadFile = Fi
130130 with open (target_path , "wb" ) as out_file :
131131 out_file .write (source_file .read ())
132132
133- return {"msg" : "Succesfully import articles" }
133+ return {"msg" : "Successfully import articles" }
134134
135135@router .get ("/exportSelfFolder" , response_class = FileResponse )
136136async def export_self_folder (background_tasks : BackgroundTasks , folder_id : int = Query (...), db : AsyncSession = Depends (get_db )):
@@ -158,7 +158,7 @@ async def create_tag(article_id: int = Body(...), content: str = Body(...), db:
158158 if len (content ) > 30 :
159159 raise HTTPException (status_code = 405 , detail = "Invalid tag content, longer than 30" )
160160 await crud_create_tag (article_id , content , db )
161- return {"msg" : "Tag Created Succesfully " }
161+ return {"msg" : "Tag Created Successfully " }
162162
163163@router .delete ("/deleteTag" , response_model = "dict" )
164164async def delete_tag (tag_id : int = Query (...), db : AsyncSession = Depends (get_db )):
@@ -169,4 +169,24 @@ async def delete_tag(tag_id: int = Query(...), db: AsyncSession = Depends(get_db
169169async def get_article_tags (article_id : int = Query (...), db : AsyncSession = Depends (get_db )):
170170 tags = await crud_get_article_tags (article_id , db )
171171 result = [{"tag_id" : tag .id , "tag_content" : tag .content } for tag in tags ]
172- return {"result" : result }
172+ return {"result" : result }
173+
174+ @router .post ("/allTagsOrder" , response_model = "dict" )
175+ async def all_tags_order (article_id : int = Body (...), tag_contents : List [str ] = Body (...), db : AsyncSession = Depends (get_db )):
176+ for tag_content in tag_contents :
177+ if len (tag_content ) > 30 :
178+ raise HTTPException (status_code = 405 , detail = "Invalid tag content existed, longer than 30" )
179+ await crud_all_tags_order (article_id , tag_contents , db )
180+ return {"msg" : "Tags and order changed successfully" }
181+
182+ @router .post ("/changeFolderName" , response_model = "dict" )
183+ async def change_folder_name (folder_id : int = Body (...), folder_name : str = Body (...), db : AsyncSession = Depends (get_db )):
184+ if folder_name == "" or len (folder_name ) > 30 :
185+ raise HTTPException (status_code = 405 , detail = "Invalid folder name, empty or longer than 30" )
186+ await crud_change_folder_name (folder_id , folder_name , db )
187+ return {"msg" : "Folder name changed successfully" }
188+
189+ @router .post ("/changeArticleName" , response_model = "dict" )
190+ async def change_article_name (article_id : int = Body (...), article_name : str = Body (...), db : AsyncSession = Depends (get_db )):
191+ await crud_change_article_name (article_id , article_name , db )
192+ return {"msg" : "Article name changed successfully" }
0 commit comments