package org.ntlab.citrusserver.resources;
import jakarta.ws.rs.*;
import jakarta.ws.rs.core.MediaType;
import org.ntlab.citrusserver.entities.Account;
import org.ntlab.citrusserver.repositories.AccountManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Set;
@Path("/accounts")
@Component //accountRestのインスタンスを一個作る
public class AccountsRest {
private final AccountManager accountManager; //finalは書き換えられない
@Autowired//springbootの決まり
public AccountsRest(AccountManager am) {
accountManager = am;
}
//accountの一覧を返す
@GET
@Produces(MediaType.APPLICATION_JSON)
public Set<String> getAccount(){
return accountManager.getAccountsID();
}
//accountの新規作成
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)//bodyに入力する値がある時
public String signup(@FormParam("account_id") String accountId, @FormParam("password") String password) {
String token;
token = accountManager.createAccount(accountId, password);
return token;
}
//////////
@Path("/{account_id}")
//account_idの情報を返す”introduction”と[本]
@GET
@Produces(MediaType.APPLICATION_JSON)
public Account getAccountInfo(@PathParam("account_id") String accountId){ //account_idを渡してManegerから値が返ってくる
Account ac = accountManager.getAccount(accountId);
return ac;
}
// @DELETE
///////
// @Path("/{account_id}/password")
////
// @PUT
//
//
/////////
@Path("/accounts/{account_id}/introduction")
//自己紹介を返す
@GET
@Produces(MediaType.APPLICATION_JSON)
public String getAccount(@PathParam("account_id") String accountId){ //account_idを渡してintroductionが返ってくる
String ac = accountManager.AccountIntro(accountId);
return ac;
}
// @PUT
/////////
// @Path("/accounts/{account_id}/photo")
// //画像を返す
// @GET
// public String getAccount(@PathParam("account_id") String accountId){ //account_idを渡してManegerから値が返ってくる
// Account ac = accountManager.getAccount(accountId);
// return ac.getPhoto();
// }
//
// @PUT
/////////
@Path("/accounts/{account_id}/favorites")
//指定されたIDのお気に入りの本のリストを返す
@GET
@Produces(MediaType.APPLICATION_JSON)
public ArrayList<HashMap<String, String>> favoriteBook(@PathParam("account_id") String accountId, @QueryParam("token")String token){
return accountManager.favoriteBook(accountId,token);
}
////////
@Path("/accounts/{account_id}/favorites/{other_account_id}")
//指定されたIDのお気に入りの本のリストを返す(指定した人物)
@GET
@Produces(MediaType.APPLICATION_JSON)
public ArrayList<Integer> FavoriteBook(@PathParam("account_id") String accountId,@PathParam("other_account_id") String otherAccountId,@QueryParam("token")String token){ //account_idを渡してManegerから値が返ってくる
return accountManager.FavoriteBook(accountId,otherAccountId,token);
}
//////////
// @Path("/accounts/{account_id}/favorites/{other_account_id}/{book_id}")
// @DELETE
// @PUT
////////
// @Path("/accounts/{account_id}/login")
// @POST
// @Consumes(MediaType.APPLICATION_JSON)
// public void login(@PathParam("account_id") String accountId,@FormParam("password") String password) {
// accountManager.put(accountId, password);
// }
}