cacheKey method
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,
];
}