in zetasql-toolkit-bigquery/src/main/java/com/google/zetasql/toolkit/catalog/bigquery/BigQueryService.java [117:138]
private <T> Result<T> fetchResource(
String projectId,
String reference,
Function<BigQueryReference, T> fetcher,
Map<String, T> cache) {
try {
BigQueryReference parsedReference = BigQueryReference.from(projectId, reference);
T fetchedResource =
cache.computeIfAbsent(
parsedReference.getFullName(), key -> fetcher.apply(parsedReference));
return fetchedResource == null
? Result.failure(new BigQueryResourceNotFound(parsedReference.getFullName()))
: Result.success(fetchedResource);
} catch (InvalidBigQueryReference err) {
return Result.failure(err);
} catch (BigQueryException err) {
String message = String.format("Failed to fetch BigQuery resource: %s", reference);
BigQueryAPIError wrapperError = new BigQueryAPIError(message, err);
return Result.failure(wrapperError);
}
}