ProyectoFinal/app/src/main/java/com/santiparra/yomitrack/api/ApiService.java

94 lines
2.9 KiB
Java

package com.santiparra.yomitrack.api;
import com.santiparra.yomitrack.db.entities.AnimeEntity;
import com.santiparra.yomitrack.db.entities.MangaEntity;
import com.santiparra.yomitrack.db.entities.UserEntity;
import com.santiparra.yomitrack.model.AniListMedia;
import com.santiparra.yomitrack.model.AnimePageResponse;
import com.santiparra.yomitrack.model.LoginResponse;
import com.santiparra.yomitrack.model.MangaPageResponse;
import com.santiparra.yomitrack.model.RegisterResponse;
import com.santiparra.yomitrack.model.UserStatsResponse;
import com.santiparra.yomitrack.utils.ActivityLog;
import org.json.JSONObject;
import java.util.List;
import java.util.Map;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.DELETE;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.PUT;
import retrofit2.http.Path;
import retrofit2.http.Query;
public interface ApiService {
// ---------------- Usuario ----------------
@POST("users/register")
Call<RegisterResponse> registerUser(@Body UserEntity user);
@POST("users/login")
Call<LoginResponse> loginUser(@Body UserEntity user);
// ---------------- Anime ----------------
@POST("anime/add")
Call<String> insertAnime(@Body AnimeEntity anime);
@GET("anime/list/{userId}")
Call<List<AnimeEntity>> getAnimeByUser(@Path("userId") int userId);
// Scroll infinito: obtener lista paginada
@GET("/anime/list/{userId}")
Call<AnimePageResponse> getAnimes(
@Path("userId") int userId,
@Query("page") int page,
@Query("size") int size
);
@PUT("anime/{id}")
Call<String> updateAnime(@Path("id") int animeId, @Body AnimeEntity anime);
@DELETE("anime/delete/{id}")
Call<String> deleteAnime(@Path("id") int id);
// ---------------- Manga ----------------
@POST("manga/add")
Call<String> insertManga(@Body MangaEntity manga);
@GET("manga/list/{userId}")
Call<List<MangaEntity>> getMangaByUser(@Path("userId") int userId);
@GET("/manga/list/{userId}")
Call<MangaPageResponse> getMangas(
@Path("userId") int userId,
@Query("page") int page,
@Query("size") int size
);
@PUT("manga/{id}")
Call<String> updateManga(@Path("id") int mangaId, @Body MangaEntity manga);
@DELETE("manga/delete/{id}")
Call<String> deleteManga(@Path("id") int id);
// ---------------- Activity -------------------
@GET("user/{id}/stats")
Call<Map<String, Map<String, Integer>>> getUserStats(@Path("id") int userId);
@GET("api/activity/list/{userId}")
Call<List<ActivityLog>> getActivityLog(@Path("userId") int userId);
@POST("activity/add")
Call<JSONObject> postActivity(@Body Map<String, Object> body);
// ---------------- AniList API ----------------
@GET("anilist/search")
Call<List<AniListMedia>> searchAniList(@Query("query") String query, @Query("type") String type);
}