package com.example.todo;

import java.net.URI;
import java.util.List;
import jakarta.validation.Valid;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api/todos")
public class TodoRestController {
    private final TodoService service;
    public TodoRestController(TodoService service) { this.service=service; }
    @GetMapping public List<Todo> list() { return service.list(); }
    @GetMapping("/{id}") public Todo get(@PathVariable String id) { return service.get(id); }
    @PostMapping public ResponseEntity<Todo> create(@Valid @RequestBody TodoRequest request) {
        Todo todo=service.create(request.title(),request.completed());
        return ResponseEntity.created(URI.create("/api/todos/"+todo.getId())).body(todo);
    }
    @PutMapping("/{id}") public Todo update(@PathVariable String id,@Valid @RequestBody TodoRequest request) {
        return service.update(id,request.title(),request.completed());
    }
    @DeleteMapping("/{id}") public ResponseEntity<Void> delete(@PathVariable String id) {
        service.delete(id); return ResponseEntity.noContent().build();
    }
}
