2025-02-19 15:09:45 +01:00

42 lines
1.4 KiB
Python

from fastapi import APIRouter, Depends
from typing import Annotated
from ..providers.auth_provider import AuthContext
from ..repositories.house_repository import HouseRepository
from ..models.house import House
from ..dtos.house_create_request import HouseCreateRequest
from ..dtos.house_create_response import HouseCreateResponse
from ..dtos.houses_list_response import HousesListResponse, HouseResponse
router = APIRouter()
@router.post("")
async def create_house(body: HouseCreateRequest, auth: Annotated[AuthContext, Depends()], house_repository: Annotated[HouseRepository, Depends()]) -> HouseCreateResponse:
owner = auth.user
house = House(
owner_id=owner.id,
address=body.address,
city=body.city,
country=body.country,
price=body.price,
description=body.description
)
await house_repository.save(house)
return HouseCreateResponse(
id=str(house.id)
)
@router.get("")
async def get_all_houses(house_repository: Annotated[HouseRepository, Depends()], limit: int = 100, offset: int = 0) -> HousesListResponse:
all_houses = await house_repository.get_all(offset=offset, limit=limit)
house_responses = ([HouseResponse(id=str(house.id), description=house.description, address=house.address, city=house.city, country=house.country, price=house.price) for house in all_houses])
print(house_responses)
return HousesListResponse(
houses=house_responses
)