42 lines
1.1 KiB
Dart
42 lines
1.1 KiB
Dart
|
import 'package:fooder/client/based.dart';
|
||
|
import 'package:fooder/models/product.dart';
|
||
|
|
||
|
class ProductClient extends BasedClient {
|
||
|
const ProductClient({required super.apiClient});
|
||
|
|
||
|
Future<List<Product>> list(String q) async {
|
||
|
var response =
|
||
|
await apiClient.get("/product?${Uri(queryParameters: {"q": q}).query}");
|
||
|
|
||
|
return (response['products'] as List<dynamic>)
|
||
|
.map((e) => Product.fromJson(e as Map<String, dynamic>))
|
||
|
.toList();
|
||
|
}
|
||
|
|
||
|
Future<Product> getByBarcode(String barcode) async {
|
||
|
var response = await apiClient.get(
|
||
|
"/product/by_barcode?${Uri(queryParameters: {
|
||
|
"barcode": barcode
|
||
|
}).query}");
|
||
|
|
||
|
return Product.fromJson(response);
|
||
|
}
|
||
|
|
||
|
Future<Product> create({
|
||
|
required String name,
|
||
|
required double protein,
|
||
|
required double carb,
|
||
|
required double fat,
|
||
|
required double fiber,
|
||
|
}) async {
|
||
|
var response = await apiClient.post("/product", {
|
||
|
"name": name,
|
||
|
"protein": protein,
|
||
|
"carb": carb,
|
||
|
"fat": fat,
|
||
|
"fiber": fiber,
|
||
|
});
|
||
|
return Product.fromJson(response);
|
||
|
}
|
||
|
}
|