Skip to content

Commit c2393cd

Browse files
author
dustin deus
committed
set maxTtl only on first request when ttl is enabled
1 parent 8237e3a commit c2393cd

File tree

2 files changed

+5
-6
lines changed

2 files changed

+5
-6
lines changed

src/http-data-source.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,7 @@ export abstract class HTTPDataSource<TContext = any> extends DataSource {
270270

271271
// let's see if we can fill the shared cache
272272
if (options.requestCache && this.isResponseCacheable<TResult>(options, response)) {
273+
response.maxTtl = Math.max(options.requestCache.maxTtl, options.requestCache.maxTtlIfError)
273274
this.storageAdapter
274275
.set(cacheKey, response, options.requestCache?.maxTtl)
275276
.catch((err) => this.logger?.error(err))
@@ -288,7 +289,6 @@ export abstract class HTTPDataSource<TContext = any> extends DataSource {
288289
)
289290
if (hasFallback) {
290291
hasFallback.isFromCache = true
291-
hasFallback.maxTtl = options.requestCache.maxTtlIfError
292292
return hasFallback
293293
}
294294
}
@@ -321,7 +321,6 @@ export abstract class HTTPDataSource<TContext = any> extends DataSource {
321321
if (cachedResponse) {
322322
cachedResponse.memoized = false
323323
cachedResponse.isFromCache = true
324-
cachedResponse.maxTtl = request.requestCache.maxTtl
325324
return cachedResponse
326325
}
327326
}

test/http-data-source.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -641,13 +641,13 @@ test('Response is cached', async (t) => {
641641
let response = await dataSource.getFoo()
642642
t.false(response.isFromCache)
643643
t.false(response.memoized)
644-
t.falsy(response.maxTtl)
644+
t.is(response.maxTtl, 200)
645645
t.deepEqual(response.body, { name: 'foo' })
646646

647647
response = await dataSource.getFoo()
648648
t.false(response.isFromCache)
649649
t.true(response.memoized)
650-
t.falsy(response.maxTtl)
650+
t.is(response.maxTtl, 200)
651651
t.deepEqual(response.body, { name: 'foo' })
652652

653653
dataSource = new (class extends HTTPDataSource {
@@ -669,7 +669,7 @@ test('Response is cached', async (t) => {
669669
response = await dataSource.getFoo()
670670
t.true(response.isFromCache)
671671
t.false(response.memoized)
672-
t.is(response.maxTtl, 100)
672+
t.is(response.maxTtl, 200)
673673
t.deepEqual(response.body, { name: 'foo' })
674674

675675
const cached = JSON.parse(map.get('keyv:' + baseURL + path)!)
@@ -755,7 +755,7 @@ test('Fallback from cache on origin error', async (t) => {
755755
let response = await dataSource.getFoo()
756756
t.false(response.isFromCache)
757757
t.false(response.memoized)
758-
t.falsy(response.maxTtl)
758+
t.is(response.maxTtl, 200)
759759

760760
t.deepEqual(response.body, { name: 'foo' })
761761

0 commit comments

Comments
 (0)