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.BookManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.HashMap; @Path("/accounts") @Component public class BookRest {//BookRestはクラス private final BookManager bookManager; @Autowired //スプリングブートにいうサイン public BookRest(BookManager bm){ //public クラス名()がコンストラクタ bookManager = bm; } /// {account_id}/books private final HashMap<String, HashMap<Integer, Book>> books = new HashMap<>(); @Path("/{account_id}/books") /// 本一覧を返す @GET @Produces(MediaType.APPLICATION_JSON) public Book getBook(@PathParam("account_id") String account_id){ Book book = bookManager.getBook(account_id); return book; } /// 本の新規作成 @POST @Consumes(MediaType.APPLICATION_JSON) /// {account_id}/books/{book_id} @Path("/{account_id}/books/{book_id}") /// 本の情報を取得 @GET @Produces(MediaType.APPLICATION_JSON) public Book getBook(@PathParam("account_id") String account_id, @PathParam("book_id") Integer book_id){ Book book = bookManager.getBook(account_id, book_id); return book; } /// 本の削除 @DELETE /// /{account_id}/books/{book_id}/favorited @Path("/{account_id}/books/{book_id}/favorited") /// いいねしたアカウントを返す @GET @Produces(MediaType.APPLICATION_JSON) public Book getBook(@PathParam("account_id") String account_id, @PathParam("book_id") Integer book_id){ Book book = bookManager.getBook(account_id, book_id); return book; } /// /{account_id}/books/{book_id}/favorited/{other_account_id} @Path("/{account_id}/books/{book_id}/favorited/{other_account_id}") /// いいねした人を追加 @PUT /// いいねしたアカウントの削除 @DELETE /// /{account_id}/books/{book_id}/title @Path("/{account_id}/books/{book_id}/title") /// 本のタイトルを返す @GET @Produces(MediaType.TEXT_PLAIN) public Book getBook(@PathParam("account_id") String account_id, @PathParam("book_id") Integer book_id){ Book book = bookManager.getBook(account_id, book_id); return book; } /// 本のタイトル変更 @PUT /// /accounts/{account_id}/books/{book_id}/public @Path("/{account_id}/books/{book_id}/public") /// 本の公開状態を返す @GET @Produces(MediaType.APPLICATION_JSON) public Book getBook(@PathParam("account_id") String account_id, @PathParam("book_id") Integer book_id){ Book book = bookManager.getBook(account_id, book_id); return book; } /// 公開状態を変更する @PUT /// /accounts/{account_id}/books/{book_id}/goals/{year}/{month} @Path("/accounts/{account_id}/books/{book_id}/goals/{year}/{month}") /// }