package com.example.todo;

import java.util.List;
import org.springframework.stereotype.Service;
import org.springframework.web.server.ResponseStatusException;
import static org.springframework.http.HttpStatus.NOT_FOUND;

@Service
public class PersonalTodoService {
    private final PersonalTodoRepository repository;
    public PersonalTodoService(PersonalTodoRepository repository) { this.repository=repository; }
    public List<PersonalTodo> list(String owner) { return repository.findByOwnerIdOrderByIdAsc(owner); }
    public PersonalTodo get(String id,String owner) {
        return repository.findByIdAndOwnerId(id,owner)
            .orElseThrow(() -> new ResponseStatusException(NOT_FOUND,"Todo not found"));
    }
    public PersonalTodo create(String owner,TodoRequest request) {
        return repository.save(new PersonalTodo(owner,request.title().strip(),request.completed()));
    }
    public PersonalTodo update(String id,String owner,TodoRequest request) {
        PersonalTodo todo=get(id,owner); todo.setTitle(request.title().strip());
        todo.setCompleted(request.completed()); return repository.save(todo);
    }
    public void delete(String id,String owner) { repository.delete(get(id,owner)); }
}
