import 'package:dio/dio.dart'; import 'package:eatvio_app/features/feed/models/comment_model.dart'; import 'package:eatvio_app/features/feed/models/diets_pagination_model.dart'; import 'package:eatvio_app/features/feed/models/feed_blog_post_model.dart'; import 'package:eatvio_app/features/feed/models/feed_blog_post_settings_model.dart'; import 'package:eatvio_app/features/feed/models/feed_consultant_model.dart'; import 'package:eatvio_app/features/feed/models/plan_pagination_model.dart'; import 'package:eatvio_app/features/feed/models/post_feed_pagination_model.dart'; import 'package:eatvio_app/features/feed/models/recipes_pagination_model.dart'; import 'package:eatvio_app/features/feed/models/view_model.dart'; import 'package:retrofit/retrofit.dart'; part 'feed_service.g.dart'; @RestApi() abstract class FeedService { factory FeedService(Dio dio, {String baseUrl}) = _FeedService; @GET('/api/blogPosts/index') Future getBlogPostList({@Query('page') required int page, @Query('query_search') String? query}); @GET('/api/feed') Future getFeed({ @Query('search') String? search, @Query('cursor') String? cursor, }); @GET('/api/blogPosts/show/{postId}') Future getBlogPost({@Path('postId') required int postId}); @GET('/api/recipes/index') Future getRecipes({ @Query('page') required int page, @Query('filters[tags][tags.id][\$in][]') required List? tags, @Query('filters[title][\$contains]') required String? query, }); @GET('/api/diets/index') Future getDiets({ @Query('page') required int page, @Query('filters[name][\$startsWith]') String? query, @Query('filters[type][\$contains]') String? types, @Query('filters[duration][\$eq]') int? duration, @Query('sort') String? sorting, }); @GET('/api/plans/index') Future getPlans({ @Query('page') required int page, @Query('filters[name][\$startsWith]') String? query, @Query('filters[type][\$contains]') String? types, @Query('filters[duration][\$eq]') int? duration, @Query('filters[min_price_of_options][\$between][0]') int? minPrice, @Query('filters[min_price_of_options][\$between][1]') int? maxPrice, }); @GET('/api/blogPosts/{id}/comments/show') Future getBlogPostComments({@Path() required String id}); @POST('/api/blogPosts/{id}/comment/create') Future sendBlogPostComment({@Path() required String id, @Part() required String body, @Part() int? parentCommentId}); @GET('/api/diets/{id}/comments/show') Future getDietsComments({@Path() required String id}); @POST('/api/diets/{id}/comment/create') Future sendDietsComment({@Path() required String id, @Part() required String body, @Part() int? parentCommentId}); @GET('/api/plans/{slug}/comments/show') Future getPlansComments({@Path() required String slug}); @POST('/api/plans/{slug}/comment/create') Future sendPlansComment({@Path() required String slug, @Part() required String body, @Part() int? parentCommentId}); @GET('/api/recipes/{id}/comments/show') Future getRecipesComments({@Path() required String id}); @POST('/api/recipes/{id}/comment/create') Future sendRecipesComment({@Path() required String id, @Part() required String body, @Part() int? parentCommentId}); @POST('/api/blogPosts/{id}/like') Future likeBlogPost({@Path() required int id}); @POST('/api/blogPosts/{id}/unliked') Future unlikedBlogPost({@Path() required int id}); @GET('/api/consultants/index') Future getConsultants({@Query('filters[name][\$startsWith]') String? name}); @POST('/api/blogPosts/{id}/view') Future viewPost({@Path() required int id}); @POST('/api/recipes/{slug}/view') Future viewRecipe({@Path() required String slug}); @POST('/api/diets/{id}/view') Future viewDiet({@Path() required int id}); @POST('/api/plans/{slug}/view') Future viewPlan({@Path() required String slug}); @POST('/api/views') Future viewContent({@Body() required ViewModel viewModel}); }