implement changing group chat avatar
parent
ea038cab9f
commit
8b1ed7da10
|
@ -116,6 +116,15 @@ async def select_full_profile(group_chat_id: str) -> Tuple[GroupChat, list[Tuple
|
||||||
return group_chat, res.all()
|
return group_chat, res.all()
|
||||||
|
|
||||||
|
|
||||||
|
async def update_group_avatar(id: str, avatar_name: str):
|
||||||
|
session = async_session()
|
||||||
|
await session.execute(
|
||||||
|
update(GroupChat).where(GroupChat.id == id).values(avatar=avatar_name)
|
||||||
|
)
|
||||||
|
await session.commit()
|
||||||
|
await session.close()
|
||||||
|
|
||||||
|
|
||||||
async def update_group_name(group_chat_id: str, new_name: str):
|
async def update_group_name(group_chat_id: str, new_name: str):
|
||||||
session = async_session()
|
session = async_session()
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -115,6 +115,15 @@ async def update_profile_sign(id: str, sign: str):
|
||||||
await session.close()
|
await session.close()
|
||||||
|
|
||||||
|
|
||||||
|
async def update_profile_status(id: str, status: str):
|
||||||
|
session = async_session()
|
||||||
|
await session.execute(
|
||||||
|
update(UserProfile).where(UserProfile.user_id == id).values(status=status)
|
||||||
|
)
|
||||||
|
await session.commit()
|
||||||
|
await session.close()
|
||||||
|
|
||||||
|
|
||||||
async def update_profile_avatar(id: str, avatar_name: str):
|
async def update_profile_avatar(id: str, avatar_name: str):
|
||||||
session = async_session()
|
session = async_session()
|
||||||
await session.execute(
|
await session.execute(
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
|
from anyio import open_file
|
||||||
from fastapi import APIRouter
|
from fastapi import APIRouter
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
|
||||||
|
from .user_profile import Uint8List
|
||||||
from ..crud import group_chat_crud
|
from ..crud import group_chat_crud
|
||||||
from ..response_models.group_chat_response import (
|
from ..response_models.group_chat_response import (
|
||||||
BaseResponseModel,
|
BaseResponseModel,
|
||||||
|
@ -8,6 +10,7 @@ from ..response_models.group_chat_response import (
|
||||||
MemberNameAvatarResponse,
|
MemberNameAvatarResponse,
|
||||||
FullProfileResponse,
|
FullProfileResponse,
|
||||||
)
|
)
|
||||||
|
from ..utils import static_file
|
||||||
|
|
||||||
router = APIRouter(prefix="/group_chat", tags=["group_chat"])
|
router = APIRouter(prefix="/group_chat", tags=["group_chat"])
|
||||||
|
|
||||||
|
@ -102,6 +105,19 @@ async def get_full_profile(group_chat_id: str):
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/change_avatar")
|
||||||
|
async def change_avatar(group_chat_id: str, file: Uint8List):
|
||||||
|
avatar_dir_path = static_file.create_avatar_dir("group_chat", "avatars")
|
||||||
|
avatar_filename = static_file.create_avatar_filename()
|
||||||
|
|
||||||
|
async with await open_file(avatar_dir_path / avatar_filename, "wb") as f:
|
||||||
|
await f.write(bytearray(file.file))
|
||||||
|
|
||||||
|
await group_chat_crud.update_group_avatar(group_chat_id, avatar_filename)
|
||||||
|
|
||||||
|
return {"code": 10300, "msg": "Update Avatar Successfully", "data": avatar_filename}
|
||||||
|
|
||||||
|
|
||||||
@router.post("/change_name", response_model=BaseResponseModel)
|
@router.post("/change_name", response_model=BaseResponseModel)
|
||||||
async def change_name(group_chat_id: str, new_name: str):
|
async def change_name(group_chat_id: str, new_name: str):
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
from typing import Optional
|
|
||||||
|
|
||||||
from fastapi import APIRouter
|
from fastapi import APIRouter
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
from fastapi.responses import FileResponse, JSONResponse
|
from fastapi.responses import FileResponse, JSONResponse
|
||||||
|
@ -25,11 +23,12 @@ class Uint8List(BaseModel):
|
||||||
|
|
||||||
class ChangedProfile(BaseModel):
|
class ChangedProfile(BaseModel):
|
||||||
id: str
|
id: str
|
||||||
nickname: Optional[str] = None
|
nickname: str | None = None
|
||||||
location: Optional[str] = None
|
location: str | None = None
|
||||||
birthday: Optional[str] = None
|
birthday: str | None = None
|
||||||
gender: Optional[str] = None
|
gender: str | None = None
|
||||||
sign: Optional[str] = None
|
sign: str | None = None
|
||||||
|
status: str | None = None
|
||||||
|
|
||||||
|
|
||||||
@router.get("/my", response_model=UserProfileResponse)
|
@router.get("/my", response_model=UserProfileResponse)
|
||||||
|
@ -80,6 +79,10 @@ async def change_profile(aspect: str, changed_profile: ChangedProfile):
|
||||||
await user_crud.update_profile_sign(
|
await user_crud.update_profile_sign(
|
||||||
changed_profile.id, changed_profile.sign
|
changed_profile.id, changed_profile.sign
|
||||||
)
|
)
|
||||||
|
case "status":
|
||||||
|
await user_crud.update_profile_status(
|
||||||
|
changed_profile.id, changed_profile.status
|
||||||
|
)
|
||||||
case _:
|
case _:
|
||||||
return {"code": 10301, "msg": f"No /change/{aspect} Path"}
|
return {"code": 10301, "msg": f"No /change/{aspect} Path"}
|
||||||
return {"code": 10300, "msg": f"Update {aspect} Profile Successfully"}
|
return {"code": 10300, "msg": f"Update {aspect} Profile Successfully"}
|
||||||
|
|
Loading…
Reference in New Issue