cacheKey method

List cacheKey(
  1. TInput input, {
  2. Map<String, dynamic>? pathParams,
  3. Map<String, dynamic>? queryParameters,
})

Derives a structured cache key for integration with BloomData and BloomQuery.

Produces a deterministic key list formatted as ['rpc', method, resolvedPath, ...inputPayload] that can be normalized via BloomData.normalizeKey.

final key = contract.cacheKey(
  null,
  pathParams: {'id': 123},
);
// Produces: ['rpc', 'get', '/users/123']

Implementation

List<dynamic> cacheKey(
  TInput input, {
  Map<String, dynamic>? pathParams,
  Map<String, dynamic>? queryParameters,
}) {
  if (customCacheKey != null) {
    return customCacheKey!(input);
  }

  final resolved = resolvePath(pathParams: pathParams, input: input);
  dynamic payloadPart;

  if (encodeInput != null) {
    try {
      payloadPart = encodeInput!(input);
    } catch (_) {
      payloadPart = input;
    }
  } else {
    payloadPart = input;
  }

  return [
    'rpc',
    method.value.toLowerCase(),
    resolved,
    if (payloadPart != null) payloadPart,
    if (queryParameters != null && queryParameters.isNotEmpty)
      queryParameters,
  ];
}