Implement Recipe, Planning, Shopping, Pantry, and Admin domains
Outside-in TDD for all 5 remaining domains (128 tests total): - Recipe: CRUD, ingredients autocomplete/patch, tags, categories (27 tests) - Planning: week plans, slots, confirm, suggestions, variety score, cooking logs (24 tests) - Shopping: generate from plan, publish, check/add/remove items (15 tests) - Pantry: CRUD with expiry sorting (11 tests) - Admin: user management, password reset, audit logging (13 tests) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
package com.recipeapp.planning;
|
||||
|
||||
import com.recipeapp.planning.dto.*;
|
||||
import com.recipeapp.recipe.HouseholdResolver;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.security.Principal;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/v1/cooking-logs")
|
||||
public class CookingLogController {
|
||||
|
||||
private final PlanningService planningService;
|
||||
private final HouseholdResolver householdResolver;
|
||||
|
||||
public CookingLogController(PlanningService planningService, HouseholdResolver householdResolver) {
|
||||
this.planningService = planningService;
|
||||
this.householdResolver = householdResolver;
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
public ResponseEntity<CookingLogResponse> createCookingLog(
|
||||
Principal principal,
|
||||
@Valid @RequestBody CreateCookingLogRequest request) {
|
||||
UUID householdId = householdResolver.resolve(principal.getName());
|
||||
UUID userId = householdResolver.resolveUserId(principal.getName());
|
||||
CookingLogResponse response = planningService.createCookingLog(householdId, userId, request);
|
||||
return ResponseEntity.status(HttpStatus.CREATED).body(response);
|
||||
}
|
||||
|
||||
@GetMapping
|
||||
public List<CookingLogResponse> listCookingLogs(
|
||||
Principal principal,
|
||||
@RequestParam(defaultValue = "30") int limit,
|
||||
@RequestParam(defaultValue = "0") int offset) {
|
||||
UUID householdId = householdResolver.resolve(principal.getName());
|
||||
return planningService.listCookingLogs(householdId, limit, offset);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user