outing_log_api.dart 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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. class OutingLogApi {
  9. final ApiClient _client;
  10. OutingLogApi(this._client);
  11. Future<PaginatedData<OutingLogModel>> fetchList({
  12. int page = 1,
  13. int size = 20,
  14. }) async {
  15. final response = await _client.get<Map<String, dynamic>>(
  16. '/outing-log/list',
  17. queryParameters: {'page': page, 'size': size},
  18. );
  19. final data = response.data!;
  20. final list = (data['list'] as List<dynamic>)
  21. .map((e) => OutingLogModel.fromJson(e as Map<String, dynamic>))
  22. .toList();
  23. return PaginatedData(
  24. list: list,
  25. page: data['page'] as int,
  26. size: data['size'] as int,
  27. total: data['total'] as int,
  28. );
  29. }
  30. Future<OutingLogModel> fetchDetail(String id) async {
  31. final response = await _client.get<Map<String, dynamic>>(
  32. '/outing-log/detail/$id',
  33. );
  34. return OutingLogModel.fromJson(response.data!);
  35. }
  36. Future<void> create(OutingLogModel model) async {
  37. await _client.post('/outing-log/create', data: model.toJson());
  38. }
  39. }