getProductByIdHandler function

Future<CallToolResult> getProductByIdHandler(
  1. Map<String, dynamic> args,
  2. dynamic extra
)

Implementation

Future<CallToolResult> getProductByIdHandler(
  Map<String, dynamic> args,
  dynamic extra,
) async {
  final id = args['id'] as String?;
  if (id == null) {
    return CallToolResult(
      isError: true,
      content: [TextContent(text: "Missing 'id' argument")],
    );
  }
  if (!dbRunning) {
    return CallToolResult(
      isError: true,
      content: [TextContent(text: "Inventory database is not running.")],
    );
  }
  try {
    final doc = await Firestore.instance
        .collection("inventory")
        .document(id)
        .get();
    final product = Product.fromFirestore(doc);
    return CallToolResult(
      content: [TextContent(text: jsonEncode(product.toJson()))],
    );
  } catch (e) {
    log("Product not found or error: $e", isError: true);
    return CallToolResult(
      isError: true,
      content: [TextContent(text: "Product not found or error: $e")],
    );
  }
}