mirror of
https://github.com/sunrin-ana/2025-SSF.git
synced 2026-03-09 18:40:02 +00:00
2025 SSF Public
This commit is contained in:
commit
76a02076c9
192 changed files with 5016 additions and 0 deletions
110
Backend/router/endpoints/room.py
Normal file
110
Backend/router/endpoints/room.py
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
from fastapi import APIRouter, Depends, HTTPException
|
||||
from typing import List
|
||||
from Backend.schemas.room import (
|
||||
FurnitureItem,
|
||||
RoomFurniturePlacement,
|
||||
FurniturePlacementRequest,
|
||||
RoomNameUpdateRequest,
|
||||
UpdateRoomTypeRequest,
|
||||
RoomResponse,
|
||||
RoomTypeResponse,
|
||||
RoomFurnitureResponse,
|
||||
)
|
||||
from Backend.schemas.user import User
|
||||
from Backend.core.security import get_current_user
|
||||
from Backend.services.room_service import RoomService
|
||||
|
||||
router = APIRouter(prefix="/room", tags=["room"])
|
||||
room_service = RoomService()
|
||||
|
||||
|
||||
@router.get("/catalog", response_model=List[FurnitureItem])
|
||||
async def get_furniture_catalog() -> List[FurnitureItem]:
|
||||
return await room_service.get_furniture_catalog()
|
||||
|
||||
|
||||
@router.get("/layout", response_model=RoomFurnitureResponse)
|
||||
async def get_my_room_layout(current_user: User = Depends(get_current_user)):
|
||||
room_id = await room_service.get_or_create_room(current_user.id)
|
||||
return await room_service.get_room_furnitures(room_id)
|
||||
|
||||
|
||||
@router.get("/layout/{user_id}", response_model=RoomFurnitureResponse)
|
||||
async def get_user_room_layout(user_id: int) -> RoomFurnitureResponse:
|
||||
room_id = await room_service.get_or_create_room(user_id)
|
||||
return await room_service.get_room_furnitures(room_id)
|
||||
|
||||
|
||||
@router.post("/furniture")
|
||||
async def place_furniture(
|
||||
request: FurniturePlacementRequest, current_user: User = Depends(get_current_user)
|
||||
):
|
||||
room_id = await room_service.get_or_create_room(current_user.id)
|
||||
try:
|
||||
await room_service.place_furniture(room_id, request)
|
||||
return {"message": "Furniture placed successfully"}
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=400, detail=str(e))
|
||||
|
||||
|
||||
@router.delete("/furniture")
|
||||
async def remove_furniture(
|
||||
x: int, y: int, furniture_name: str, current_user: User = Depends(get_current_user)
|
||||
):
|
||||
room_id = await room_service.get_or_create_room(current_user.id)
|
||||
await room_service.remove_furniture(room_id, x, y, furniture_name)
|
||||
return {"message": "Furniture removed successfully"}
|
||||
|
||||
|
||||
@router.put("/")
|
||||
async def update_room_name(
|
||||
data: RoomNameUpdateRequest, current_user: User = Depends(get_current_user)
|
||||
):
|
||||
try:
|
||||
room_id = await room_service.get_or_create_room(current_user.id)
|
||||
await room_service.update_room_name(room_id, data.new_name)
|
||||
return {"message": "Room name updated successfully"}
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=400, detail=str(e))
|
||||
|
||||
|
||||
@router.get("/")
|
||||
async def get_my_room(current_user: User = Depends(get_current_user)) -> RoomResponse:
|
||||
try:
|
||||
room_id = await room_service.get_or_create_room(current_user.id)
|
||||
return (await room_service.get_room_by_id(room_id)).to_response()
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=400, detail=str(e))
|
||||
|
||||
|
||||
@router.get("/types")
|
||||
async def get_room_types() -> List[RoomTypeResponse]:
|
||||
return await room_service.get_room_types()
|
||||
|
||||
|
||||
@router.patch("/")
|
||||
async def update_room_type(
|
||||
data: UpdateRoomTypeRequest, current_user: User = Depends(get_current_user)
|
||||
) -> RoomResponse:
|
||||
try:
|
||||
room_id = await room_service.get_or_create_room(current_user.id)
|
||||
return (await room_service.update_room_type(room_id, data.type)).to_response()
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=400, detail=str(e))
|
||||
|
||||
|
||||
@router.get("/my")
|
||||
async def get_my_furniture(current_user: User = Depends(get_current_user)):
|
||||
try:
|
||||
list_ = await room_service.get_user_furniture(current_user.id)
|
||||
return list_
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=400, detail=str(e))
|
||||
|
||||
@router.get("/{user_id}", response_model=RoomResponse)
|
||||
async def get_room_by_userId(user_id: int) -> RoomResponse:
|
||||
try:
|
||||
room = await room_service.get_room_by_userId(user_id)
|
||||
return room.to_response()
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=400, detail=str(e))
|
||||
Loading…
Add table
Add a link
Reference in a new issue