Files
eatvio_app/lib/features/diary/services/diary_service.dart
2024-10-30 14:35:06 +03:00

59 lines
2.0 KiB
Dart

import 'package:dio/dio.dart';
import 'package:eatvio_app/features/diary/models/diary_day_model.dart';
import 'package:eatvio_app/features/diary/models/diary_index_model.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:retrofit/retrofit.dart';
part 'diary_service.freezed.dart';
part 'diary_service.g.dart';
@freezed
class ProductInMeal with _$ProductInMeal {
const factory ProductInMeal({
@JsonKey(name: 'product_name') required String productName,
@JsonKey(name: 'portion') required String portion,
@JsonKey(name: 'quantity') required int quantity,
}) = _ProductInMeal;
factory ProductInMeal.fromJson(Map<String, Object?> json) => _$ProductInMealFromJson(json);
}
@RestApi()
abstract class DiaryService {
factory DiaryService(Dio dio, {String baseUrl}) = _DiaryService;
@GET('/api/diary/index/{date}')
Future<DiaryIndexModel> getDiaryIndexByDate({
@Path('date') required String date, // yyyy-mm-dd
});
@GET('/api/diary/{diary_id}/show')
Future<DiaryDayWrapperModel> getDiaryDay({
@Path('diary_id') required int index,
});
@POST('/api/diary/{diary_id}/meal/{meal_id}/portions/create')
Future<void> addProductToMeal({
@Path('diary_id') required int diaryId,
@Path('meal_id') required int mealId,
@Part(name: 'product_name') required String productName,
@Part(name: 'portion') required String portion,
@Part(name: 'quantity') required int quantity,
});
@PUT('/api/diary/{diary_id}/meal/{meal_id}/portions/{portion_id}/update')
Future<void> updateProductInMeal({
@Path('diary_id') required int diaryId,
@Path('meal_id') required int mealId,
@Path('portion_id') required int portionId,
@Body() required ProductInMeal productInMeal,
});
@DELETE('/api/diary/{diary_id}/meal/{meal_id}/portions/{portion_id}/delete')
Future<void> deleteProductFromMeal({
@Path('diary_id') required int diaryId,
@Path('meal_id') required int mealId,
@Path('portion_id') required int portionId,
});
}