1- from fastapi import APIRouter , Depends , Request
2- from apps .system .crud .user import get_user_info
3- from apps .system .models .user import user_grid
4- from apps .system .schemas .system_schema import UserLanguage
1+ from fastapi import APIRouter
2+ from apps .system .crud .user import get_db_user , get_user_info
3+ from apps .system .models .user import UserModel
4+ from apps .system .schemas .system_schema import UserCreator , UserEditor , UserGrid , UserLanguage
55from common .core .deps import CurrentUser , SessionDep
66from common .core .pagination import Paginator
77from common .core .schemas import PaginatedResponse , PaginationParams
8+ from common .utils .time import get_timestamp
89
910router = APIRouter (tags = ["user" ], prefix = "/user" )
1011
@@ -18,7 +19,7 @@ async def user_info(session: SessionDep, current_user: CurrentUser):
1819 return db_user
1920
2021
21- @router .get ("/pager/{pageNum}/{pageSize}" , response_model = PaginatedResponse [user_grid ])
22+ @router .get ("/pager/{pageNum}/{pageSize}" , response_model = PaginatedResponse [UserGrid ])
2223async def pager (
2324 session : SessionDep ,
2425 pageNum : int ,
@@ -28,16 +29,44 @@ async def pager(
2829 paginator = Paginator (session )
2930 filters = {}
3031 return await paginator .get_paginated_response (
31- model = user_grid ,
32+ model = UserModel ,
3233 pagination = pagination ,
3334 ** filters )
35+
36+ @router .get ("/{id}" , response_model = UserEditor )
37+ async def query (session : SessionDep , id : int ) -> UserEditor :
38+ db_user : UserModel = get_db_user (session = session , user_id = id )
39+ return db_user
40+
41+ @router .post ("" )
42+ async def create (session : SessionDep , creator : UserCreator ):
43+ data = creator .model_dump (exclude_unset = True )
44+ user_model = UserModel .model_validate (data )
45+ #user_model.create_time = get_timestamp()
46+ user_model .language = "zh-CN"
47+ session .add (user_model )
48+ session .commit ()
49+
50+ @router .put ("" )
51+ async def update (session : SessionDep , editor : UserEditor ):
52+ user_model : UserModel = get_db_user (session = session , user_id = editor .id )
53+ data = editor .model_dump (exclude_unset = True )
54+ user_model .sqlmodel_update (data )
55+ session .add (user_model )
56+ session .commit ()
57+
58+ @router .delete ("/{id}" )
59+ async def delete (session : SessionDep , id : int ):
60+ user_model : UserModel = get_db_user (session = session , user_id = id )
61+ session .delete (user_model )
62+ session .commit ()
3463
3564@router .put ("/language" )
3665async def langChange (session : SessionDep , current_user : CurrentUser , language : UserLanguage ):
3766 lang = language .language
3867 if lang not in ["zh-CN" , "en" ]:
3968 return {"message" : "Language not supported" }
40- db_user = get_user_info ( session = session , user_id = current_user .id )
69+ db_user = session . get ( UserModel , current_user .id )
4170 if not db_user :
4271 return {"message" : "User not found" }
4372 db_user .language = lang
0 commit comments