package library.repository;

import library.model.Book;

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

public class BookRepository {
    private final List<Book> books = new ArrayList<>();

    public void add(Book book) {
        books.add(book);
    }

    public Optional<Book> findById(String id) {
        return books.stream().filter(b -> b.getId().equals(id)).findFirst();
    }

    public List<Book> findAll() {
        return new ArrayList<>(books);
    }

    public List<Book> findAvailable() {
        return books.stream().filter(Book::isAvailable).toList();
    }

    public List<Book> searchByTitle(String keyword) {
        return books.stream()
            .filter(b -> b.getTitle().toLowerCase().contains(keyword.toLowerCase()))
            .toList();
    }
}
