From 91822a60cbbf3fb851dcfbfc91d45a7b85a15536 Mon Sep 17 00:00:00 2001
From: Sergei Zharinov <zharinov@users.noreply.github.com>
Date: Fri, 17 Feb 2023 09:32:39 +0300
Subject: [PATCH] feat(github-releases): Cache functions used for `getDigest`
 (#20458)

---
 lib/modules/datasource/github-releases/index.ts | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/lib/modules/datasource/github-releases/index.ts b/lib/modules/datasource/github-releases/index.ts
index b630ac3d62..346fe27e0a 100644
--- a/lib/modules/datasource/github-releases/index.ts
+++ b/lib/modules/datasource/github-releases/index.ts
@@ -2,6 +2,7 @@
 import is from '@sindresorhus/is';
 import hasha from 'hasha';
 import { logger } from '../../../logger';
+import { cache } from '../../../util/cache/package/decorator';
 import { queryReleases } from '../../../util/github/graphql';
 import type {
   GithubDigestFile,
@@ -43,6 +44,12 @@ export class GithubReleasesDatasource extends Datasource {
     this.http = new GithubHttp(GithubReleasesDatasource.id);
   }
 
+  @cache({
+    ttlMinutes: 1440,
+    namespace: 'datasource-github-releases',
+    key: (release: GithubRestRelease, digest: string) =>
+      `${release.html_url}:${digest}`,
+  })
   async findDigestFile(
     release: GithubRestRelease,
     digest: string
@@ -67,6 +74,12 @@ export class GithubReleasesDatasource extends Datasource {
     return null;
   }
 
+  @cache({
+    ttlMinutes: 1440,
+    namespace: 'datasource-github-releases',
+    key: (asset: GithubRestAsset, algorithm: string) =>
+      `${asset.browser_download_url}:${algorithm}:assetDigest`,
+  })
   async downloadAndDigest(
     asset: GithubRestAsset,
     algorithm: string
-- 
GitLab