From a1a435c7c1b41030c59e213aaba4d2d73fae0d23 Mon Sep 17 00:00:00 2001 From: Cliff Hill Date: Fri, 22 Aug 2025 22:45:02 -0400 Subject: [PATCH] Restructured the schemas correctly now too. Signed-off-by: Cliff Hill --- backend/src/backend/schemas.py | 97 ------------------------- backend/src/backend/schemas/__init__.py | 1 + backend/src/backend/schemas/bookings.py | 31 ++++++++ backend/src/backend/schemas/invitees.py | 30 ++++++++ backend/src/backend/schemas/rooms.py | 27 +++++++ backend/src/backend/schemas/users.py | 25 +++++++ 6 files changed, 114 insertions(+), 97 deletions(-) delete mode 100644 backend/src/backend/schemas.py create mode 100644 backend/src/backend/schemas/__init__.py create mode 100644 backend/src/backend/schemas/bookings.py create mode 100644 backend/src/backend/schemas/invitees.py create mode 100644 backend/src/backend/schemas/rooms.py create mode 100644 backend/src/backend/schemas/users.py diff --git a/backend/src/backend/schemas.py b/backend/src/backend/schemas.py deleted file mode 100644 index d3adb49a..00000000 --- a/backend/src/backend/schemas.py +++ /dev/null @@ -1,97 +0,0 @@ -"""Pydantic schemas for the Numinar coding project backend.""" - -from datetime import datetime -from typing import Optional - -from pydantic import BaseModel -from pydantic import ConfigDict - - -class UserBase(BaseModel): - """Base schema for User.""" - - email: str - name: Optional[str] = None - - -class UserCreate(UserBase): - """Schema for creating a new User.""" - - model_config = ConfigDict(from_attributes=True) - - -class UserResponse(UserBase): - """Response schema for User, including ID.""" - - id: int - - model_config = ConfigDict(from_attributes=True) - - -class RoomBase(BaseModel): - """Base schema for Room.""" - - name: str - location: Optional[str] = None - equipment: Optional[str] = None - capacity: int = 1 - - -class RoomCreate(RoomBase): - """Schema for creating a new Room.""" - - model_config = ConfigDict(from_attributes=True) - - -class RoomResponse(RoomBase): - """Response schema for Room, including ID.""" - - id: int - - model_config = ConfigDict(from_attributes=True) - - -class BookingBase(BaseModel): - """Base schema for Booking.""" - - room_id: int - start_time: datetime - end_time: datetime - - -class BookingCreate(BookingBase): - """Schema for creating a new Booking.""" - - model_config = ConfigDict(from_attributes=True) - - -class BookingResponse(BookingBase): - """Response schema for Booking, including ID and related Room.""" - - id: int - room: RoomResponse - - model_config = ConfigDict(from_attributes=True) - - -class InviteeBase(BaseModel): - """Base schema for Invitee.""" - - booking_id: int - user_id: int - - -class InviteeCreate(InviteeBase): - """Schema for creating a new Invitee.""" - - model_config = ConfigDict(from_attributes=True) - - -class InviteeResponse(InviteeBase): - """Response schema for Invitee, including ID and related Booking and User.""" - - id: int - booking: BookingResponse - user: UserResponse - - model_config = ConfigDict(from_attributes=True) diff --git a/backend/src/backend/schemas/__init__.py b/backend/src/backend/schemas/__init__.py new file mode 100644 index 00000000..e99b48d8 --- /dev/null +++ b/backend/src/backend/schemas/__init__.py @@ -0,0 +1 @@ +"""Schemas package for the Numinar coding project backend.""" diff --git a/backend/src/backend/schemas/bookings.py b/backend/src/backend/schemas/bookings.py new file mode 100644 index 00000000..009679df --- /dev/null +++ b/backend/src/backend/schemas/bookings.py @@ -0,0 +1,31 @@ +"""Booking schemas for request and response validation.""" + +from datetime import datetime + +from pydantic import BaseModel +from pydantic import ConfigDict + +from backend.schemas.rooms import RoomResponse + + +class BookingBase(BaseModel): + """Base schema for Booking.""" + + room_id: int + start_time: datetime + end_time: datetime + + +class BookingCreate(BookingBase): + """Schema for creating a new Booking.""" + + model_config = ConfigDict(from_attributes=True) + + +class BookingResponse(BookingBase): + """Response schema for Booking, including ID and related Room.""" + + id: int + room: RoomResponse + + model_config = ConfigDict(from_attributes=True) diff --git a/backend/src/backend/schemas/invitees.py b/backend/src/backend/schemas/invitees.py new file mode 100644 index 00000000..ed9fa63c --- /dev/null +++ b/backend/src/backend/schemas/invitees.py @@ -0,0 +1,30 @@ +"""Invitee schemas for request and response validation.""" + +from pydantic import BaseModel +from pydantic import ConfigDict + +from backend.schemas.bookings import BookingResponse +from backend.schemas.users import UserResponse + + +class InviteeBase(BaseModel): + """Base schema for Invitee.""" + + booking_id: int + user_id: int + + +class InviteeCreate(InviteeBase): + """Schema for creating a new Invitee.""" + + model_config = ConfigDict(from_attributes=True) + + +class InviteeResponse(InviteeBase): + """Response schema for Invitee, including ID and related Booking and User.""" + + id: int + booking: BookingResponse + user: UserResponse + + model_config = ConfigDict(from_attributes=True) diff --git a/backend/src/backend/schemas/rooms.py b/backend/src/backend/schemas/rooms.py new file mode 100644 index 00000000..7e5446eb --- /dev/null +++ b/backend/src/backend/schemas/rooms.py @@ -0,0 +1,27 @@ +"""Room schemas for request and response validation.""" + +from pydantic import BaseModel +from pydantic import ConfigDict + + +class RoomBase(BaseModel): + """Base schema for Room.""" + + name: str + location: str + equipment: str + capacity: int + + +class RoomCreate(RoomBase): + """Schema for creating a new Room.""" + + model_config = ConfigDict(from_attributes=True) + + +class RoomResponse(RoomBase): + """Response schema for Room, including ID.""" + + id: int + + model_config = ConfigDict(from_attributes=True) diff --git a/backend/src/backend/schemas/users.py b/backend/src/backend/schemas/users.py new file mode 100644 index 00000000..b308fd6a --- /dev/null +++ b/backend/src/backend/schemas/users.py @@ -0,0 +1,25 @@ +"""User schemas for request and response validation.""" + +from pydantic import BaseModel +from pydantic import ConfigDict + + +class UserBase(BaseModel): + """Base schema for User.""" + + email: str + name: str + + +class UserCreate(UserBase): + """Schema for creating a new User.""" + + model_config = ConfigDict(from_attributes=True) + + +class UserResponse(UserBase): + """Response schema for User, including ID.""" + + id: int + + model_config = ConfigDict(from_attributes=True)