outing_log_api.dart 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import 'package:flutter_riverpod/flutter_riverpod.dart';
  2. import '../../core/network/api_client.dart';
  3. import '../../app.dart';
  4. import '../../shared/models/pagination_model.dart';
  5. import 'outing_log_model.dart';
  6. final outingLogApiProvider = Provider<OutingLogApi>(
  7. (ref) => OutingLogApi(ref.read(apiClientProvider)),
  8. );
  9. class OutingLogApi {
  10. final ApiClient _client;
  11. OutingLogApi(this._client);
  12. Future<PaginatedData<OutingLogModel>> fetchList({
  13. int page = 1,
  14. int size = 20,
  15. }) async {
  16. final response = await _client.get<Map<String, dynamic>>(
  17. '/outing-log/list',
  18. queryParameters: {'page': page, 'size': size},
  19. );
  20. final data = response.data!;
  21. final list = (data['list'] as List<dynamic>)
  22. .map((e) => OutingLogModel.fromJson(e as Map<String, dynamic>))
  23. .toList();
  24. return PaginatedData(
  25. list: list,
  26. page: data['page'] as int,
  27. size: data['size'] as int,
  28. total: data['total'] as int,
  29. );
  30. }
  31. Future<OutingLogModel> fetchDetail(String id) async {
  32. final response = await _client.get<Map<String, dynamic>>(
  33. '/outing-log/detail/$id',
  34. );
  35. return OutingLogModel.fromJson(response.data!);
  36. }
  37. Future<void> create(OutingLogModel model) async {
  38. await _client.post('/outing-log/create', data: model.toJson());
  39. }
  40. }