Add single-product lookup methods to Columbia API client
Adds GetProductBySkuAsync (GET /products?sku=) and GetProductByIdAsync
(GET /products/{id}) for ad-hoc / on-demand refresh of a single record
without pulling the full catalog. Extracts the shared 429-retry send loop
into SendWithRetryAsync, which now also treats 404 as not-found (null) so
single lookups don't throw on a missing SKU/ID.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -32,4 +32,16 @@ public interface IColumbiaCoatingsApiClient
|
||||
/// exception as "incomplete pull" and NOT run discontinuation logic against a partial set.
|
||||
/// </summary>
|
||||
Task<IReadOnlyList<ColumbiaProduct>> GetAllProductsAsync(CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// Fetches a single product by exact SKU (<c>GET /products?sku=...</c>), or null if not found.
|
||||
/// For ad-hoc refresh of one record without pulling the whole catalog.
|
||||
/// </summary>
|
||||
Task<ColumbiaProduct?> GetProductBySkuAsync(string sku, CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// Fetches a single product by WooCommerce product ID (<c>GET /products/{id}</c>), or null if
|
||||
/// not found. Useful when we already store the catalog product's ID and want to refresh it.
|
||||
/// </summary>
|
||||
Task<ColumbiaProduct?> GetProductByIdAsync(int id, CancellationToken cancellationToken = default);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user