package com.example.web;

import java.io.Serializable;
import java.util.*;

public class SessionTodoStore implements Serializable {
    private static final long serialVersionUID=1L;
    private final Map<String,Todo> todos=new LinkedHashMap<>();
    public synchronized List<Todo> list() { return List.copyOf(todos.values()); }
    public synchronized Optional<Todo> find(String id) { return Optional.ofNullable(todos.get(id)); }
    public synchronized Todo create(String title,boolean completed) {
        Todo todo=new Todo(UUID.randomUUID().toString(),title,completed);
        todos.put(todo.getId(),todo); return todo;
    }
    public synchronized Optional<Todo> update(String id,String title,boolean completed) {
        if(!todos.containsKey(id)) return Optional.empty();
        Todo todo=new Todo(id,title,completed); todos.put(id,todo); return Optional.of(todo);
    }
    public synchronized boolean delete(String id) { return todos.remove(id)!=null; }
}
