package org.ntlab.citrusserver.resources;
import jakarta.ws.rs.*;
import jakarta.ws.rs.core.MediaType;
import org.ntlab.citrusserver.entities.Book;
import org.ntlab.citrusserver.repositories.PublicBookManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;
import java.util.ArrayList;
@Path("/public_books")
@Component
public class PublicBooksRest {
private final PublicBookManager publicBookManager;
@Autowired
public PublicBooksRest(PublicBookManager pbm) {
publicBookManager = pbm;
}
//公開されている本の一覧を返す
@GET
@Produces(MediaType.APPLICATION_JSON)
public ArrayList<Book> getAllPublicBooks() {
return publicBookManager.getAllPublicBooks();
}
// //検索条件を指定して本を検索(タイトル)
// @Path("/search")
// @GET
// @Produces(MediaType.APPLICATION_JSON)
// public ArrayList<Book> searchBooksByTitle(@QueryParam("search_title") String search_title) {
// return publicBookManager.searchBooksByTitle(search_title);
// }
// //検索条件を指定して本を検索(タイトル ソート可能)
// @Path("/search")
// @GET
// @Produces(MediaType.APPLICATION_JSON)
// public ArrayList<Book> searchBooksByTitle(@QueryParam("search_title") String search_title, @QueryParam("sort_by") Integer sort_by) {
// return publicBookManager.searchBooksByTitle(search_title, sort_by);
// }
//
// //検索条件を指定して本を検索(アカウント)
// @Path("/search")
// @GET
// @Produces(MediaType.APPLICATION_JSON)
// public ArrayList<Book> searchBooksByAccount(@QueryParam("search_account_id") String search_account_id) {
// return publicBookManager.searchBooksByAccount(search_account_id);
// }
//
// //検索条件を指定して本を検索(アカウント ソート可能)
// @Path("/search")
// @GET
// @Produces(MediaType.APPLICATION_JSON)
// public ArrayList<Book> searchBooksByAccount(@QueryParam("search_account_id") String search_account_id, @QueryParam("sort_by") int sort_by) {
// return publicBookManager.searchBooksByAccount(search_account_id, sort_by);
// }
//検索条件を指定して本を検索(アカウントとタイトル)
@Path("/search")
@GET
@Produces(MediaType.APPLICATION_JSON)
public ArrayList<Book> searchBooksByTitleAndAccount(@QueryParam("search_title") String search_title, @QueryParam("search_account_id") String search_account_id) {
if(search_title != null && search_account_id != null) {
return publicBookManager.searchBooksByTitleAndAccount(search_title, search_account_id);
} else if(search_title!= null) {
return publicBookManager.searchBooksByTitle(search_title);
} else if(search_account_id != null) {
return publicBookManager.searchBooksByAccount(search_account_id);
} else {
return publicBookManager.getAllPublicBooks();
}
}
}