Skip to content

Commit 00b68e6

Browse files
authored
fix: add top to the caching key to allow varying values with different page sizes (#2406)
Signed-off-by: Martin Musale <[email protected]>
1 parent 4025f6f commit 00b68e6

File tree

1 file changed

+36
-24
lines changed

1 file changed

+36
-24
lines changed

packages/mgt-components/src/graph/graph.files.ts

Lines changed: 36 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -434,13 +434,14 @@ export async function getUserInsightsDriveItemById(
434434
// GET /me/drive/root/children
435435
export async function getFilesIterator(graph: IGraph, top?: number): Promise<GraphPageIterator<DriveItem>> {
436436
const endpoint = '/me/drive/root/children';
437+
const cacheKey = `${endpoint}?top=${top}`;
437438
let filesPageIterator;
438439

439440
// get iterator from cached values
440441
let cache: CacheStore<CacheFileList>;
441442
const cacheStore = schemas.fileLists.stores.fileLists;
442443
cache = CacheService.getCache<CacheFileList>(schemas.fileLists, cacheStore);
443-
const fileList = await getFileListFromCache(cache, cacheStore, endpoint);
444+
const fileList = await getFileListFromCache(cache, cacheStore, cacheKey);
444445
if (fileList) {
445446
filesPageIterator = await getFilesPageIteratorFromCache(graph, fileList.files, fileList.nextLink);
446447

@@ -458,7 +459,7 @@ export async function getFilesIterator(graph: IGraph, top?: number): Promise<Gra
458459
filesPageIterator = await getFilesPageIteratorFromRequest(graph, request);
459460

460461
if (getIsFileListsCacheEnabled()) {
461-
cache.putValue(endpoint, { files: filesPageIterator.value, nextLink: filesPageIterator._nextLink });
462+
cache.putValue(cacheKey, { files: filesPageIterator.value, nextLink: filesPageIterator._nextLink });
462463
}
463464
} catch {}
464465
return filesPageIterator || null;
@@ -472,13 +473,14 @@ export async function getDriveFilesByIdIterator(
472473
top?: number
473474
): Promise<GraphPageIterator<DriveItem>> {
474475
const endpoint = `/drives/${driveId}/items/${itemId}/children`;
476+
const cacheKey = `${endpoint}?top=${top}`;
475477
let filesPageIterator;
476478

477479
// get iterator from cached values
478480
let cache: CacheStore<CacheFileList>;
479481
const cacheStore = schemas.fileLists.stores.fileLists;
480482
cache = CacheService.getCache<CacheFileList>(schemas.fileLists, cacheStore);
481-
const fileList = await getFileListFromCache(cache, cacheStore, endpoint);
483+
const fileList = await getFileListFromCache(cache, cacheStore, cacheKey);
482484
if (fileList) {
483485
filesPageIterator = await getFilesPageIteratorFromCache(graph, fileList.files, fileList.nextLink);
484486

@@ -496,7 +498,7 @@ export async function getDriveFilesByIdIterator(
496498
filesPageIterator = await getFilesPageIteratorFromRequest(graph, request);
497499

498500
if (getIsFileListsCacheEnabled()) {
499-
cache.putValue(endpoint, { files: filesPageIterator.value, nextLink: filesPageIterator._nextLink });
501+
cache.putValue(cacheKey, { files: filesPageIterator.value, nextLink: filesPageIterator._nextLink });
500502
}
501503
} catch {}
502504
return filesPageIterator || null;
@@ -510,13 +512,14 @@ export async function getDriveFilesByPathIterator(
510512
top?: number
511513
): Promise<GraphPageIterator<DriveItem>> {
512514
const endpoint = `/drives/${driveId}/root:/${itemPath}:/children`;
515+
const cacheKey = `${endpoint}?top=${top}`;
513516
let filesPageIterator;
514517

515518
// get iterator from cached values
516519
let cache: CacheStore<CacheFileList>;
517520
const cacheStore = schemas.fileLists.stores.fileLists;
518521
cache = CacheService.getCache<CacheFileList>(schemas.fileLists, cacheStore);
519-
const fileList = await getFileListFromCache(cache, cacheStore, endpoint);
522+
const fileList = await getFileListFromCache(cache, cacheStore, cacheKey);
520523
if (fileList) {
521524
filesPageIterator = await getFilesPageIteratorFromCache(graph, fileList.files, fileList.nextLink);
522525

@@ -534,7 +537,7 @@ export async function getDriveFilesByPathIterator(
534537
filesPageIterator = await getFilesPageIteratorFromRequest(graph, request);
535538

536539
if (getIsFileListsCacheEnabled()) {
537-
cache.putValue(endpoint, { files: filesPageIterator.value, nextLink: filesPageIterator._nextLink });
540+
cache.putValue(cacheKey, { files: filesPageIterator.value, nextLink: filesPageIterator._nextLink });
538541
}
539542
} catch {}
540543
return filesPageIterator || null;
@@ -548,13 +551,14 @@ export async function getGroupFilesByIdIterator(
548551
top?: number
549552
): Promise<GraphPageIterator<DriveItem>> {
550553
const endpoint = `/groups/${groupId}/drive/items/${itemId}/children`;
554+
const cacheKey = `${endpoint}?top=${top}`;
551555
let filesPageIterator;
552556

553557
// get iterator from cached values
554558
let cache: CacheStore<CacheFileList>;
555559
const cacheStore = schemas.fileLists.stores.fileLists;
556560
cache = CacheService.getCache<CacheFileList>(schemas.fileLists, cacheStore);
557-
const fileList = await getFileListFromCache(cache, cacheStore, endpoint);
561+
const fileList = await getFileListFromCache(cache, cacheStore, cacheKey);
558562
if (fileList) {
559563
filesPageIterator = await getFilesPageIteratorFromCache(graph, fileList.files, fileList.nextLink);
560564

@@ -572,7 +576,7 @@ export async function getGroupFilesByIdIterator(
572576
filesPageIterator = await getFilesPageIteratorFromRequest(graph, request);
573577

574578
if (getIsFileListsCacheEnabled()) {
575-
cache.putValue(endpoint, { files: filesPageIterator.value, nextLink: filesPageIterator._nextLink });
579+
cache.putValue(cacheKey, { files: filesPageIterator.value, nextLink: filesPageIterator._nextLink });
576580
}
577581
} catch {}
578582
return filesPageIterator || null;
@@ -586,13 +590,14 @@ export async function getGroupFilesByPathIterator(
586590
top?: number
587591
): Promise<GraphPageIterator<DriveItem>> {
588592
const endpoint = `/groups/${groupId}/drive/root:/${itemPath}:/children`;
593+
const cacheKey = `${endpoint}?top=${top}`;
589594
let filesPageIterator;
590595

591596
// get iterator from cached values
592597
let cache: CacheStore<CacheFileList>;
593598
const cacheStore = schemas.fileLists.stores.fileLists;
594599
cache = CacheService.getCache<CacheFileList>(schemas.fileLists, cacheStore);
595-
const fileList = await getFileListFromCache(cache, cacheStore, endpoint);
600+
const fileList = await getFileListFromCache(cache, cacheStore, cacheKey);
596601
if (fileList) {
597602
filesPageIterator = await getFilesPageIteratorFromCache(graph, fileList.files, fileList.nextLink);
598603

@@ -610,7 +615,7 @@ export async function getGroupFilesByPathIterator(
610615
filesPageIterator = await getFilesPageIteratorFromRequest(graph, request);
611616

612617
if (getIsFileListsCacheEnabled()) {
613-
cache.putValue(endpoint, { files: filesPageIterator.value, nextLink: filesPageIterator._nextLink });
618+
cache.putValue(cacheKey, { files: filesPageIterator.value, nextLink: filesPageIterator._nextLink });
614619
}
615620
} catch {}
616621
return filesPageIterator || null;
@@ -623,13 +628,14 @@ export async function getFilesByIdIterator(
623628
top?: number
624629
): Promise<GraphPageIterator<DriveItem>> {
625630
const endpoint = `/me/drive/items/${itemId}/children`;
631+
const cacheKey = `${endpoint}?top=${top}`;
626632
let filesPageIterator;
627633

628634
// get iterator from cached values
629635
let cache: CacheStore<CacheFileList>;
630636
const cacheStore = schemas.fileLists.stores.fileLists;
631637
cache = CacheService.getCache<CacheFileList>(schemas.fileLists, cacheStore);
632-
const fileList = await getFileListFromCache(cache, cacheStore, endpoint);
638+
const fileList = await getFileListFromCache(cache, cacheStore, cacheKey);
633639
if (fileList) {
634640
filesPageIterator = await getFilesPageIteratorFromCache(graph, fileList.files, fileList.nextLink);
635641

@@ -647,7 +653,7 @@ export async function getFilesByIdIterator(
647653
filesPageIterator = await getFilesPageIteratorFromRequest(graph, request);
648654

649655
if (getIsFileListsCacheEnabled()) {
650-
cache.putValue(endpoint, { files: filesPageIterator.value, nextLink: filesPageIterator._nextLink });
656+
cache.putValue(cacheKey, { files: filesPageIterator.value, nextLink: filesPageIterator._nextLink });
651657
}
652658
} catch {}
653659
return filesPageIterator || null;
@@ -660,13 +666,14 @@ export async function getFilesByPathIterator(
660666
top?: number
661667
): Promise<GraphPageIterator<DriveItem>> {
662668
const endpoint = `/me/drive/root:/${itemPath}:/children`;
669+
const cacheKey = `${endpoint}?top=${top}`;
663670
let filesPageIterator;
664671

665672
// get iterator from cached values
666673
let cache: CacheStore<CacheFileList>;
667674
const cacheStore = schemas.fileLists.stores.fileLists;
668675
cache = CacheService.getCache<CacheFileList>(schemas.fileLists, cacheStore);
669-
const fileList = await getFileListFromCache(cache, cacheStore, endpoint);
676+
const fileList = await getFileListFromCache(cache, cacheStore, cacheKey);
670677
if (fileList) {
671678
filesPageIterator = await getFilesPageIteratorFromCache(graph, fileList.files, fileList.nextLink);
672679

@@ -684,7 +691,7 @@ export async function getFilesByPathIterator(
684691
filesPageIterator = await getFilesPageIteratorFromRequest(graph, request);
685692

686693
if (getIsFileListsCacheEnabled()) {
687-
cache.putValue(endpoint, { files: filesPageIterator.value, nextLink: filesPageIterator._nextLink });
694+
cache.putValue(cacheKey, { files: filesPageIterator.value, nextLink: filesPageIterator._nextLink });
688695
}
689696
} catch {}
690697
return filesPageIterator || null;
@@ -698,13 +705,14 @@ export async function getSiteFilesByIdIterator(
698705
top?: number
699706
): Promise<GraphPageIterator<DriveItem>> {
700707
const endpoint = `/sites/${siteId}/drive/items/${itemId}/children`;
708+
const cacheKey = `${endpoint}?top=${top}`;
701709
let filesPageIterator;
702710

703711
// get iterator from cached values
704712
let cache: CacheStore<CacheFileList>;
705713
const cacheStore = schemas.fileLists.stores.fileLists;
706714
cache = CacheService.getCache<CacheFileList>(schemas.fileLists, cacheStore);
707-
const fileList = await getFileListFromCache(cache, cacheStore, endpoint);
715+
const fileList = await getFileListFromCache(cache, cacheStore, cacheKey);
708716
if (fileList) {
709717
filesPageIterator = await getFilesPageIteratorFromCache(graph, fileList.files, fileList.nextLink);
710718

@@ -722,7 +730,7 @@ export async function getSiteFilesByIdIterator(
722730
filesPageIterator = await getFilesPageIteratorFromRequest(graph, request);
723731

724732
if (getIsFileListsCacheEnabled()) {
725-
cache.putValue(endpoint, { files: filesPageIterator.value, nextLink: filesPageIterator._nextLink });
733+
cache.putValue(cacheKey, { files: filesPageIterator.value, nextLink: filesPageIterator._nextLink });
726734
}
727735
} catch {}
728736
return filesPageIterator || null;
@@ -736,13 +744,14 @@ export async function getSiteFilesByPathIterator(
736744
top?: number
737745
): Promise<GraphPageIterator<DriveItem>> {
738746
const endpoint = `/sites/${siteId}/drive/root:/${itemPath}:/children`;
747+
const cacheKey = `${endpoint}?top=${top}`;
739748
let filesPageIterator;
740749

741750
// get iterator from cached values
742751
let cache: CacheStore<CacheFileList>;
743752
const cacheStore = schemas.fileLists.stores.fileLists;
744753
cache = CacheService.getCache<CacheFileList>(schemas.fileLists, cacheStore);
745-
const fileList = await getFileListFromCache(cache, cacheStore, endpoint);
754+
const fileList = await getFileListFromCache(cache, cacheStore, cacheKey);
746755
if (fileList) {
747756
filesPageIterator = await getFilesPageIteratorFromCache(graph, fileList.files, fileList.nextLink);
748757

@@ -760,7 +769,7 @@ export async function getSiteFilesByPathIterator(
760769
filesPageIterator = await getFilesPageIteratorFromRequest(graph, request);
761770

762771
if (getIsFileListsCacheEnabled()) {
763-
cache.putValue(endpoint, { files: filesPageIterator.value, nextLink: filesPageIterator._nextLink });
772+
cache.putValue(cacheKey, { files: filesPageIterator.value, nextLink: filesPageIterator._nextLink });
764773
}
765774
} catch {}
766775
return filesPageIterator || null;
@@ -774,13 +783,14 @@ export async function getUserFilesByIdIterator(
774783
top?: number
775784
): Promise<GraphPageIterator<DriveItem>> {
776785
const endpoint = `/users/${userId}/drive/items/${itemId}/children`;
786+
const cacheKey = `${endpoint}?top=${top}`;
777787
let filesPageIterator;
778788

779789
// get iterator from cached values
780790
let cache: CacheStore<CacheFileList>;
781791
const cacheStore = schemas.fileLists.stores.fileLists;
782792
cache = CacheService.getCache<CacheFileList>(schemas.fileLists, cacheStore);
783-
const fileList = await getFileListFromCache(cache, cacheStore, endpoint);
793+
const fileList = await getFileListFromCache(cache, cacheStore, cacheKey);
784794
if (fileList) {
785795
filesPageIterator = await getFilesPageIteratorFromCache(graph, fileList.files, fileList.nextLink);
786796

@@ -798,7 +808,7 @@ export async function getUserFilesByIdIterator(
798808
filesPageIterator = await getFilesPageIteratorFromRequest(graph, request);
799809

800810
if (getIsFileListsCacheEnabled()) {
801-
cache.putValue(endpoint, { files: filesPageIterator.value, nextLink: filesPageIterator._nextLink });
811+
cache.putValue(cacheKey, { files: filesPageIterator.value, nextLink: filesPageIterator._nextLink });
802812
}
803813
} catch {}
804814
return filesPageIterator || null;
@@ -812,13 +822,14 @@ export async function getUserFilesByPathIterator(
812822
top?: number
813823
): Promise<GraphPageIterator<DriveItem>> {
814824
const endpoint = `/users/${userId}/drive/root:/${itemPath}:/children`;
825+
const cacheKey = `${endpoint}?top=${top}`;
815826
let filesPageIterator;
816827

817828
// get iterator from cached values
818829
let cache: CacheStore<CacheFileList>;
819830
const cacheStore = schemas.fileLists.stores.fileLists;
820831
cache = CacheService.getCache<CacheFileList>(schemas.fileLists, cacheStore);
821-
const fileList = await getFileListFromCache(cache, cacheStore, endpoint);
832+
const fileList = await getFileListFromCache(cache, cacheStore, cacheKey);
822833
if (fileList) {
823834
filesPageIterator = await getFilesPageIteratorFromCache(graph, fileList.files, fileList.nextLink);
824835

@@ -836,7 +847,7 @@ export async function getUserFilesByPathIterator(
836847
filesPageIterator = await getFilesPageIteratorFromRequest(graph, request);
837848

838849
if (getIsFileListsCacheEnabled()) {
839-
cache.putValue(endpoint, { files: filesPageIterator.value, nextLink: filesPageIterator._nextLink });
850+
cache.putValue(cacheKey, { files: filesPageIterator.value, nextLink: filesPageIterator._nextLink });
840851
}
841852
} catch {}
842853
return filesPageIterator || null;
@@ -847,13 +858,14 @@ export async function getFilesByListQueryIterator(
847858
listQuery: string,
848859
top?: number
849860
): Promise<GraphPageIterator<DriveItem>> {
861+
const cacheKey = `${listQuery}?top=${top}`;
850862
let filesPageIterator;
851863

852864
// get iterator from cached values
853865
let cache: CacheStore<CacheFileList>;
854866
const cacheStore = schemas.fileLists.stores.fileLists;
855867
cache = CacheService.getCache<CacheFileList>(schemas.fileLists, cacheStore);
856-
const fileList = await getFileListFromCache(cache, cacheStore, listQuery);
868+
const fileList = await getFileListFromCache(cache, cacheStore, cacheKey);
857869
if (fileList) {
858870
filesPageIterator = await getFilesPageIteratorFromCache(graph, fileList.files, fileList.nextLink);
859871

@@ -872,7 +884,7 @@ export async function getFilesByListQueryIterator(
872884
filesPageIterator = await getFilesPageIteratorFromRequest(graph, request);
873885

874886
if (getIsFileListsCacheEnabled()) {
875-
cache.putValue(listQuery, { files: filesPageIterator.value, nextLink: filesPageIterator._nextLink });
887+
cache.putValue(cacheKey, { files: filesPageIterator.value, nextLink: filesPageIterator._nextLink });
876888
}
877889
} catch {}
878890
return filesPageIterator || null;

0 commit comments

Comments
 (0)