diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..09bf5d6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.pyc +__pycache__/ \ No newline at end of file diff --git a/__pycache__/dependencies.cpython-310.pyc b/__pycache__/dependencies.cpython-310.pyc deleted file mode 100644 index 1beb803..0000000 Binary files a/__pycache__/dependencies.cpython-310.pyc and /dev/null differ diff --git a/__pycache__/main.cpython-310.pyc b/__pycache__/main.cpython-310.pyc deleted file mode 100644 index 4c5f515..0000000 Binary files a/__pycache__/main.cpython-310.pyc and /dev/null differ diff --git a/__pycache__/test.cpython-310.pyc b/__pycache__/test.cpython-310.pyc deleted file mode 100644 index 84329ce..0000000 Binary files a/__pycache__/test.cpython-310.pyc and /dev/null differ diff --git a/internal/__pycache__/__init__.cpython-310.pyc b/internal/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index a220ec0..0000000 Binary files a/internal/__pycache__/__init__.cpython-310.pyc and /dev/null differ diff --git a/internal/__pycache__/database.cpython-310.pyc b/internal/__pycache__/database.cpython-310.pyc deleted file mode 100644 index 3bfa0cb..0000000 Binary files a/internal/__pycache__/database.cpython-310.pyc and /dev/null differ diff --git a/internal/__pycache__/models.cpython-310.pyc b/internal/__pycache__/models.cpython-310.pyc deleted file mode 100644 index 61623b6..0000000 Binary files a/internal/__pycache__/models.cpython-310.pyc and /dev/null differ diff --git a/internal/__pycache__/schemas.cpython-310.pyc b/internal/__pycache__/schemas.cpython-310.pyc deleted file mode 100644 index 3ea6ffa..0000000 Binary files a/internal/__pycache__/schemas.cpython-310.pyc and /dev/null differ diff --git a/internal/models.py b/internal/models.py index a52d42a..ce1eaf9 100644 --- a/internal/models.py +++ b/internal/models.py @@ -9,6 +9,9 @@ class Token(BaseModel): class TokenData(BaseModel): username: str = None + + + # User相关的模型 class User(BaseModel): username: Annotated[str,Field( @@ -56,10 +59,10 @@ class Blog(BaseModel): description="备注允许为空" )] -class BlogResponse(BaseModel): +class ResponseMessage(BaseModel): status:int message:str - blog:Blog + data: object class TypeList(BaseModel): diff --git a/routers/__pycache__/__init__.cpython-310.pyc b/routers/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 016286f..0000000 Binary files a/routers/__pycache__/__init__.cpython-310.pyc and /dev/null differ diff --git a/routers/__pycache__/blogmanage.cpython-310.pyc b/routers/__pycache__/blogmanage.cpython-310.pyc deleted file mode 100644 index 4ed574e..0000000 Binary files a/routers/__pycache__/blogmanage.cpython-310.pyc and /dev/null differ diff --git a/routers/__pycache__/typemanage.cpython-310.pyc b/routers/__pycache__/typemanage.cpython-310.pyc deleted file mode 100644 index 711cf26..0000000 Binary files a/routers/__pycache__/typemanage.cpython-310.pyc and /dev/null differ diff --git a/routers/__pycache__/usermanage.cpython-310.pyc b/routers/__pycache__/usermanage.cpython-310.pyc deleted file mode 100644 index 4c2e70c..0000000 Binary files a/routers/__pycache__/usermanage.cpython-310.pyc and /dev/null differ diff --git a/routers/__pycache__/users.cpython-310.pyc b/routers/__pycache__/users.cpython-310.pyc deleted file mode 100644 index d0d4c59..0000000 Binary files a/routers/__pycache__/users.cpython-310.pyc and /dev/null differ diff --git a/routers/blogmanage.py b/routers/blogmanage.py index c763a55..e655264 100644 --- a/routers/blogmanage.py +++ b/routers/blogmanage.py @@ -1,18 +1,70 @@ -from fastapi import Depends,APIRouter,status +from fastapi import Depends, APIRouter, status,Query from internal.models import * -from dependencies import get_current_active_user,execute_query +from dependencies import get_current_active_user, execute_query -router=APIRouter( +router = APIRouter( prefix="/blogs", tags=['博客管理'] ) -@router.post('/add',response_model=BlogResponse) -async def blog_add(blog:Blog,_:User=Depends(get_current_active_user)): - select_query="INSERT INTO blogs (blogtitle,blogcontent,typeid,descr) VALUES (%s,%s,%s,%s)" - blog_data=(blog.blogtitle,blog.blogcontent,blog.typeid,blog.descr) - execute_query(select_query,blog_data) + + +@router.post('/add', response_model=ResponseMessage) +async def blog_add(blog: Blog, _: User = Depends(get_current_active_user)): + select_query = "INSERT INTO blogs (blogtitle,blogcontent,typeid,descr) VALUES (%s,%s,%s,%s)" + blog_data = (blog.blogtitle, blog.blogcontent, blog.typeid, blog.descr) + execute_query(select_query, blog_data) + return { + 'status': status.HTTP_200_OK, + 'message': 'blog create successfully!', + 'data': blog + } + + +@router.get("/list") +async def blog_list(): + select_query = "SELECT blogtitle, blogcontent, typename, create_at, update_at, blogs.descr FROM blogs LEFT JOIN `types` ON blogs.typeid = types.id ORDER BY create_at DESC;" + blog_list = execute_query(select_query, fetchall=True) + return { + 'status': status.HTTP_200_OK, + 'message': 'blog search succuessfully!', + 'data': blog_list + } + +@router.get("/list/bytitle") +async def blog_list_bytitle( + blogtitle: str= Query(None, description="博客标题"), + typename: str = Query(None, description="博客类型"), + # start_date:str=Query(None,description="开始时间"), + # end_date:str=Query(None,description="开始时间"), + + ): + select_query = "SELECT blogtitle, blogcontent, typename, create_at, update_at, blogs.descr FROM blogs LEFT JOIN `types` ON blogs.typeid = types.id WHERE 1=1" + params = [] + + if blogtitle: + select_query += " AND blogtitle LIKE %s" + params.append(f"%{blogtitle}%") + + if typename: + select_query += " AND typename LIKE %s" + params.append(f"%{typename}%") + + # if start_date: + # select_query += " AND create_at >= %s" + # params.append(start_date) + + # if end_date: + # select_query += " AND create_at <= %s" + # params.append(end_date) + + # 添加排序条件 + select_query += " ORDER BY create_at DESC" + + # 执行查询 + blog_list = execute_query(select_query, params=params, fetchall=True) + return { - 'status':status.HTTP_200_OK, - 'message':'blog create successfully!', - 'blog':blog + 'status': status.HTTP_200_OK, + 'message': 'blog bytitle succuessfully!', + 'data': blog_list } \ No newline at end of file diff --git a/routers/typemanage.py b/routers/typemanage.py index a3e1cfa..bf12239 100644 --- a/routers/typemanage.py +++ b/routers/typemanage.py @@ -1,12 +1,17 @@ -from fastapi import APIRouter,Depends -from internal.models import* -from dependencies import get_current_active_user,execute_query -router=APIRouter( +from fastapi import APIRouter, Depends, status +from internal.models import * +from dependencies import get_current_active_user, execute_query +router = APIRouter( + prefix="/types", tags=["分类管理"] ) -@router.get("/typelist",response_model=list[TypeList]) -async def read_type_all(_:User=Depends(get_current_active_user)): - select_query="SELECT blogid,typename,descr FROM types;" - type_all=execute_query(select_query,fetchall=True) - return type_all +@router.get("/list") +async def read_type_all(): + select_query = "SELECT id,typename,descr FROM types;" + type_all = execute_query(select_query, fetchall=True) + return { + "status": status.HTTP_200_OK, + "message": "type search successfully!", + "data": type_all + }