/**
 * @copyright 2026 NHCarrigan
 * @license Naomi's Public License
 * @author Naomi Carrigan
 */

import { Injectable, inject } from '@angular/core';
import { Observable } from 'rxjs';
import { ApiService } from './api.service';
import { Book, CreateBookDto, UpdateBookDto } from '@library/shared-types';

@Injectable({
  providedIn: 'root'
})
export class BooksService {
  private api = inject(ApiService);


  getAllBooks(): Observable<Book[]> {
    return this.api.get<Book[]>('/books');
  }

  getBookById(id: string): Observable<Book | null> {
    return this.api.get<Book | null>(`/books/${id}`);
  }

  createBook(book: CreateBookDto): Observable<Book> {
    return this.api.post<Book>('/books', book);
  }

  updateBook(id: string, book: UpdateBookDto): Observable<Book> {
    return this.api.put<Book>(`/books/${id}`, book);
  }

  deleteBook(id: string): Observable<{ success: boolean }> {
    return this.api.delete<{ success: boolean }>(`/books/${id}`);
  }
}