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
296
Backend/schemas/room.py
Normal file
296
Backend/schemas/room.py
Normal file
|
|
@ -0,0 +1,296 @@
|
|||
import enum
|
||||
from pydantic import BaseModel, field_validator
|
||||
from typing import Optional, List
|
||||
|
||||
|
||||
class RoomNameUpdateRequest(BaseModel):
|
||||
new_name: str
|
||||
|
||||
|
||||
class RoomTypes(enum.Enum):
|
||||
ROOM_1 = "room_1"
|
||||
ROOM_2 = "room_2"
|
||||
|
||||
|
||||
class UpdateRoomTypeRequest(BaseModel):
|
||||
type: RoomTypes
|
||||
|
||||
|
||||
class RoomTypeResponse(BaseModel):
|
||||
type: str
|
||||
image_path: str
|
||||
|
||||
|
||||
class RoomResponse(BaseModel):
|
||||
id: int
|
||||
user_id: int
|
||||
room_name: str
|
||||
room_type: RoomTypes
|
||||
room_image_path: str
|
||||
|
||||
|
||||
room_path = {
|
||||
"room_1": "public/room/room_1.png",
|
||||
"room_2": "public/room/room_2.png",
|
||||
}
|
||||
|
||||
|
||||
class FurnitureItem(BaseModel):
|
||||
name: str
|
||||
image_path: str
|
||||
width: int
|
||||
|
||||
|
||||
class Furniture(str, enum.Enum):
|
||||
BLACK_LAPTOP1_0 = "검정 노트북1-01"
|
||||
BLACK_LAPTOP1_180 = "검정 노트북1-1801"
|
||||
BLACK_LAPTOP1_270 = "검정 노트북1-2701"
|
||||
BLACK_LAPTOP1_90 = "검정 노트북1-901"
|
||||
BLACK_LAPTOP2_0 = "검정 노트북2-01"
|
||||
BLACK_LAPTOP2_180 = "검정 노트북2-1801"
|
||||
BLACK_LAPTOP2_270 = "검정 노트북2-2701"
|
||||
BLACK_LAPTOP2_90 = "검정 노트북2-901"
|
||||
BLACK_LAPTOP3_0 = "검정 노트북3-01"
|
||||
BLACK_LAPTOP3_180 = "검정 노트북3-1801"
|
||||
BLACK_LAPTOP3_270 = "검정 노트북3-2701"
|
||||
BLACK_LAPTOP3_90 = "검정 노트북3-901"
|
||||
WOODEN_TABLE_90 = "나무 탁자-901"
|
||||
WOODEN_TABLE_0 = "나무 탁자-01"
|
||||
LAPTOP1_0 = "노트북1-01"
|
||||
LAPTOP1_180 = "노트북1-1801"
|
||||
LAPTOP1_270 = "노트북1-2701"
|
||||
LAPTOP1_90 = "노트북1-901"
|
||||
LAPTOP2_0 = "노트북2-01"
|
||||
LAPTOP2_180 = "노트북2-1801"
|
||||
LAPTOP2_270 = "노트북2-2701"
|
||||
LAPTOP2_90 = "노트북2-901"
|
||||
LAPTOP3_0 = "노트북3-01"
|
||||
LAPTOP3_180 = "노트북3-1801"
|
||||
LAPTOP3_270 = "노트북3-2701"
|
||||
LAPTOP3_90 = "노트북3-901"
|
||||
GREEN_TABLE = "녹색 탁자1"
|
||||
MINI_FRIDGE_0 = "미니 냉장고-01"
|
||||
MINI_FRIDGE_180 = "미니 냉장고-1801"
|
||||
MINI_FRIDGE_90 = "미니 냉장고-901"
|
||||
BOX_0 = "박스-01"
|
||||
BOX_90 = "박스-901"
|
||||
PINK_TABLE = "분홍색 탁자1"
|
||||
SHELF_0 = "선반-01"
|
||||
SHELF_180 = "선반-1801"
|
||||
SHELF_270 = "선반-2701"
|
||||
SHELF_90 = "선반-901"
|
||||
TRASH_CAN_CLOSED = "쓰레기통 닫힘1"
|
||||
TRASH_CAN_OPEN = "쓰레기통 열림1"
|
||||
FISHBOWL_0 = "어항-01"
|
||||
FISHBOWL_180 = "어항-1801"
|
||||
FISHBOWL_270 = "어항-2701"
|
||||
FISHBOWL_90 = "어항-901"
|
||||
BEVERAGE_FRIDGE_0 = "음료 냉장고-01"
|
||||
BEVERAGE_FRIDGE_180 = "음료 냉장고-1801"
|
||||
BEVERAGE_FRIDGE_270 = "음료 냉장고-2701"
|
||||
BEVERAGE_FRIDGE_90 = "음료 냉장고-901"
|
||||
CHAIR_0 = "의자-01"
|
||||
CHAIR_180 = "의자-1801"
|
||||
CHAIR_270 = "의자-2701"
|
||||
CHAIR_90 = "의자-901"
|
||||
SMALL_SHELF_0 = "작은 선반-01"
|
||||
SMALL_SHELF_180 = "작은 선반-1801"
|
||||
SMALL_SHELF_270 = "작은 선반-2701"
|
||||
SMALL_SHELF_90 = "작은 선반-901"
|
||||
SMALL_PLANT = "작은 식물1"
|
||||
BOOKSHELF_0 = "책장-01"
|
||||
BOOKSHELF_180 = "책장-1801"
|
||||
BOOKSHELF_270 = "책장-2701"
|
||||
BOOKSHELF_90 = "책장-901"
|
||||
LARGE_PLANT = "큰 식물1"
|
||||
TV_0 = "티비-01"
|
||||
TV_180 = "티비-1801"
|
||||
TV_270 = "티비-2701"
|
||||
TV_90 = "티비-901"
|
||||
BLUE_TABLE = "파란색 탁자1"
|
||||
GRAY_TABLE = "회색 탁자1"
|
||||
WHITE_LAPTOP1_0 = "흰 노트북1-01"
|
||||
WHITE_LAPTOP1_180 = "흰 노트북1-1801"
|
||||
WHITE_LAPTOP1_270 = "흰 노트북1-2701"
|
||||
WHITE_LAPTOP1_90 = "흰 노트북1-901"
|
||||
WHITE_LAPTOP2_0 = "흰 노트북2-01"
|
||||
WHITE_LAPTOP2_180 = "흰 노트북2-1801"
|
||||
WHITE_LAPTOP2_270 = "흰 노트북2-2701"
|
||||
WHITE_LAPTOP2_90 = "흰 노트북2-901"
|
||||
WHITE_LAPTOP3_0 = "흰 노트북3-01"
|
||||
WHITE_LAPTOP3_180 = "흰 노트북3-1801"
|
||||
WHITE_LAPTOP3_270 = "흰 노트북3-2701"
|
||||
WHITE_LAPTOP3_90 = "흰 노트북3-901"
|
||||
WHITE_SHELF_0 = "흰색 선반-01"
|
||||
WHITE_SHELF_180 = "흰색 선반-1801"
|
||||
WHITE_SHELF_270 = "흰색 선반-2701"
|
||||
WHITE_SHELF_90 = "흰색 선반-901"
|
||||
WHITE_SMALL_SHELF_0 = "흰색 작은 선반-01"
|
||||
WHITE_SMALL_SHELF_180 = "흰색 작은 선반-1801"
|
||||
WHITE_SMALL_SHELF_270 = "흰색 작은 선반-2701"
|
||||
WHITE_SMALL_SHELF_90 = "흰색 작은 선반-901"
|
||||
WHITE_TABLE = "흰색 탁자1"
|
||||
EMPTY = "1"
|
||||
|
||||
|
||||
class RoomFurniturePlacement(BaseModel):
|
||||
id: int
|
||||
room_id: int
|
||||
furniture_name: Furniture
|
||||
x: int
|
||||
y: int
|
||||
|
||||
|
||||
class FurniturePlacementRequest(BaseModel):
|
||||
furniture_name: Furniture
|
||||
x: int
|
||||
y: int
|
||||
|
||||
@field_validator("x", "y")
|
||||
@classmethod
|
||||
def validate_coordinates(cls, v):
|
||||
if v < 0 or v >= 10:
|
||||
raise ValueError("position must be between 0 and 10")
|
||||
return v
|
||||
|
||||
|
||||
class FurniturePlacementResponse(BaseModel):
|
||||
furniture_name: Furniture
|
||||
x: int
|
||||
y: int
|
||||
image_path: str
|
||||
|
||||
|
||||
class RoomFurnitureResponse(BaseModel):
|
||||
room: RoomResponse
|
||||
furniture: List[FurniturePlacementResponse]
|
||||
|
||||
|
||||
furniture_path = {
|
||||
"검정 노트북1-01": "public/funiture/검정 노트북1-0.png",
|
||||
"검정 노트북1-1801": "public/funiture/검정 노트북1-180.png",
|
||||
"검정 노트북1-2701": "public/funiture/검정 노트북1-270.png",
|
||||
"검정 노트북1-901": "public/funiture/검정 노트북1-90.png",
|
||||
"검정 노트북2-01": "public/funiture/검정 노트북2-0.png",
|
||||
"검정 노트북2-1801": "public/funiture/검정 노트북2-180.png",
|
||||
"검정 노트북2-2701": "public/funiture/검정 노트북2-270.png",
|
||||
"검정 노트북2-901": "public/funiture/검정 노트북2-90.png",
|
||||
"검정 노트북3-01": "public/funiture/검정 노트북3-0.png",
|
||||
"검정 노트북3-1801": "public/funiture/검정 노트북3-180.png",
|
||||
"검정 노트북3-2701": "public/funiture/검정 노트북3-270.png",
|
||||
"검정 노트북3-901": "public/funiture/검정 노트북3-90.png",
|
||||
"나무 탁자-901": "public/funiture/나무 탁자-90.png",
|
||||
"나무 탁자-01": "public/funiture/나무탁자-0.png",
|
||||
"노트북1-01": "public/funiture/노트북1-0.png",
|
||||
"노트북1-1801": "public/funiture/노트북1-180.png",
|
||||
"노트북1-2701": "public/funiture/노트북1-270.png",
|
||||
"노트북1-901": "public/funiture/노트북1-90.png",
|
||||
"노트북2-01": "public/funiture/노트북2-0.png",
|
||||
"노트북2-1801": "public/funiture/노트북2-180.png",
|
||||
"노트북2-2701": "public/funiture/노트북2-270.png",
|
||||
"노트북2-901": "public/funiture/노트북2-90.png",
|
||||
"노트북3-01": "public/funiture/노트북3-0.png",
|
||||
"노트북3-1801": "public/funiture/노트북3-180.png",
|
||||
"노트북3-2701": "public/funiture/노트북3-270.png",
|
||||
"노트북3-901": "public/funiture/노트북3-90.png",
|
||||
"녹색 침대-02": "public/funiture/녹색 침대-0.png",
|
||||
"녹색 침대-1802": "public/funiture/녹색 침대-180.png",
|
||||
"녹색 침대-2702": "public/funiture/녹색 침대-270.png",
|
||||
"녹색 침대-902": "public/funiture/녹색 침대-90.png",
|
||||
"녹색 탁자1": "public/funiture/녹색 탁자.png",
|
||||
"미니 냉장고-01": "public/funiture/미니 냉장고-0.png",
|
||||
"미니 냉장고-1801": "public/funiture/미니 냉장고-180.png",
|
||||
"미니 냉장고-901": "public/funiture/미니 냉장고-90.png",
|
||||
"박스-01": "public/funiture/박스-0.png",
|
||||
"박스-901": "public/funiture/박스-90.png",
|
||||
"분홍색 탁자1": "public/funiture/분홍색 탁자.png",
|
||||
"빨간 침대-02": "public/funiture/빨간 침대-0.png",
|
||||
"빨간 침대-1802": "public/funiture/빨간 침대-180.png",
|
||||
"빨간 침대-2702": "public/funiture/빨간 침대-270.png",
|
||||
"빨간 침대-902": "public/funiture/빨간 침대-90.png",
|
||||
"선반-01": "public/funiture/선반-0.png",
|
||||
"선반-1801": "public/funiture/선반-180.png",
|
||||
"선반-2701": "public/funiture/선반-270.png",
|
||||
"선반-901": "public/funiture/선반-90.png",
|
||||
"소파-02": "public/funiture/소파-0.png",
|
||||
"소파-1802": "public/funiture/소파-180.png",
|
||||
"소파-2702": "public/funiture/소파-270.png",
|
||||
"소파-902": "public/funiture/소파-90.png",
|
||||
"쓰레기통 닫힘1": "public/funiture/쓰레기통닫힘.png",
|
||||
"쓰레기통 열림1": "public/funiture/쓰레기통열림.png",
|
||||
"어항-01": "public/funiture/어항-0.png",
|
||||
"어항-1801": "public/funiture/어항-180.png",
|
||||
"어항-2701": "public/funiture/어항-270.png",
|
||||
"어항-901": "public/funiture/어항-90.png",
|
||||
"음료 냉장고-01": "public/funiture/음료 냉장고-0.png",
|
||||
"음료 냉장고-1801": "public/funiture/음료 냉장고-180.png",
|
||||
"음료 냉장고-2701": "public/funiture/음료 냉장고-270.png",
|
||||
"음료 냉장고-901": "public/funiture/음료 냉장고-90.png",
|
||||
"의자-01": "public/funiture/의자-0.png",
|
||||
"의자-1801": "public/funiture/의자-180.png",
|
||||
"의자-2701": "public/funiture/의자-270.png",
|
||||
"의자-901": "public/funiture/의자-90.png",
|
||||
"작은 선반-01": "public/funiture/작은 선반-0.png",
|
||||
"작은 선반-1801": "public/funiture/작은 선반-180.png",
|
||||
"작은 선반-2701": "public/funiture/작은 선반-270.png",
|
||||
"작은 선반-901": "public/funiture/작은 선반-90.png",
|
||||
"작은 식물1": "public/funiture/작은 식물.png",
|
||||
"주황 침대-02": "public/funiture/주황 침대-0.png",
|
||||
"주황 침대-1802": "public/funiture/주황 침대-180.png",
|
||||
"주황 침대-2702": "public/funiture/주황 침대-270.png",
|
||||
"주황 침대-902": "public/funiture/주황 침대-90.png",
|
||||
"책장-01": "public/funiture/책장-0.png",
|
||||
"책장-1801": "public/funiture/책장-180.png",
|
||||
"책장-2701": "public/funiture/책장-270.png",
|
||||
"책장-901": "public/funiture/책장-90.png",
|
||||
"큰 식물1": "public/funiture/큰 식물.png",
|
||||
"티비-01": "public/funiture/티비-0.png",
|
||||
"티비-1801": "public/funiture/티비-180.png",
|
||||
"티비-2701": "public/funiture/티비-270.png",
|
||||
"티비-901": "public/funiture/티비-90.png",
|
||||
"파란 침대-02": "public/funiture/파란 침대-0.png",
|
||||
"파란 침대-1802": "public/funiture/파란 침대-180.png",
|
||||
"파란 침대-2702": "public/funiture/파란 침대-270.png",
|
||||
"파란 침대-902": "public/funiture/파란 침대-90.png",
|
||||
"파란색 탁자1": "public/funiture/파란색 탁자.png",
|
||||
"회색 탁자1": "public/funiture/회색 탁자.png",
|
||||
"흰 노트북1-01": "public/funiture/흰 노트북1-0.png",
|
||||
"흰 노트북1-1801": "public/funiture/흰 노트북1-180.png",
|
||||
"흰 노트북1-2701": "public/funiture/흰 노트북1-270.png",
|
||||
"흰 노트북1-901": "public/funiture/흰 노트북1-90.png",
|
||||
"흰 노트북2-01": "public/funiture/흰 노트북2-0.png",
|
||||
"흰 노트북2-1801": "public/funiture/흰 노트북2-180.png",
|
||||
"흰 노트북2-2701": "public/funiture/흰 노트북2-270.png",
|
||||
"흰 노트북2-901": "public/funiture/흰 노트북2-90.png",
|
||||
"흰 노트북3-01": "public/funiture/흰 노트북3-0.png",
|
||||
"흰 노트북3-1801": "public/funiture/흰 노트북3-180.png",
|
||||
"흰 노트북3-2701": "public/funiture/흰 노트북3-270.png",
|
||||
"흰 노트북3-901": "public/funiture/흰 노트북3-90.png",
|
||||
"흰색 선반-01": "public/funiture/흰색 선반-0.png",
|
||||
"흰색 선반-1801": "public/funiture/흰색 선반-180.png",
|
||||
"흰색 선반-2701": "public/funiture/흰색 선반-270.png",
|
||||
"흰색 선반-901": "public/funiture/흰색 선반-90.png",
|
||||
"흰색 작은 선반-01": "public/funiture/흰색 작은 선반-0.png",
|
||||
"흰색 작은 선반-1801": "public/funiture/흰색 작은 선반-180.png",
|
||||
"흰색 작은 선반-2701": "public/funiture/흰색 작은 선반-270.png",
|
||||
"흰색 작은 선반-901": "public/funiture/흰색 작은 선반-90.png",
|
||||
"흰색 탁자1": "public/funiture/흰색 탁자.png",
|
||||
"1": "1",
|
||||
}
|
||||
|
||||
|
||||
class Room:
|
||||
def __init__(self, id: int, user_id: int, room_name: str, room_type: RoomTypes):
|
||||
self.id = id
|
||||
self.user_id = user_id
|
||||
self.room_name = room_name
|
||||
self.room_type = room_type
|
||||
|
||||
def to_response(self) -> RoomResponse:
|
||||
return RoomResponse(
|
||||
id=self.id,
|
||||
user_id=self.user_id,
|
||||
room_name=self.room_name,
|
||||
room_type=self.room_type,
|
||||
room_image_path=room_path[self.room_type],
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue