package library.service;

import library.model.Book;
import library.model.Member;
import library.repository.BookRepository;
import library.repository.MemberRepository;

import java.util.List;
import java.util.UUID;

public class LibraryService {
    private final BookRepository bookRepo;
    private final MemberRepository memberRepo;

    public LibraryService(BookRepository bookRepo, MemberRepository memberRepo) {
        this.bookRepo = bookRepo;
        this.memberRepo = memberRepo;
    }

    public Book addBook(String title, String author, String isbn) {
        String id = "B" + UUID.randomUUID().toString().substring(0, 6).toUpperCase();
        Book book = new Book(id, title, author, isbn);
        bookRepo.add(book);
        return book;
    }

    public Member registerMember(String name, String email) {
        String id = "M" + UUID.randomUUID().toString().substring(0, 6).toUpperCase();
        Member member = new Member(id, name, email);
        memberRepo.add(member);
        return member;
    }

    public List<Book> listAllBooks() {
        return bookRepo.findAll();
    }

    public List<Book> listAvailableBooks() {
        return bookRepo.findAvailable();
    }

    public List<Book> searchBooks(String keyword) {
        return bookRepo.searchByTitle(keyword);
    }

    public List<Member> listAllMembers() {
        return memberRepo.findAll();
    }
}
