HouseholdController.java
package com.hwhub.backend.presentation.rest.household;
import com.hwhub.backend.application.service.HouseholdService;
import com.hwhub.backend.domain.model.HouseholdModel;
import com.hwhub.backend.presentation.rest.household.dto.CreateHouseholdRequest;
import com.hwhub.backend.presentation.rest.household.dto.HouseholdDto;
import com.hwhub.backend.presentation.rest.household.dto.TransferOwnerRequest;
import com.hwhub.backend.security.CurrentUserId;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api/households")
@RequiredArgsConstructor
public class HouseholdController {
private final HouseholdService householdService;
@PostMapping
public HouseholdDto create(
@Valid @RequestBody CreateHouseholdRequest request, @CurrentUserId Long userId) {
HouseholdModel model = householdService.createHousehold(userId, request.getName());
return HouseholdDto.fromModel(model);
}
@DeleteMapping("/{householdId}")
@ResponseStatus(HttpStatus.NO_CONTENT)
public void delete(@PathVariable("householdId") Long householdId, @CurrentUserId Long userId) {
householdService.deleteHousehold(householdId, userId);
}
@PutMapping("/{householdId}/transfer-owner")
public void transferOwner(
@PathVariable("householdId") Long householdId,
@Valid @RequestBody TransferOwnerRequest request,
@CurrentUserId Long userId) {
householdService.transferOwnership(householdId, userId, request.getNewOwnerUserId());
}
}