mapFilesToCache method

Future<CachedFilesResult> mapFilesToCache(
  1. List<CodeFile> files
)

Implementation

Future<CachedFilesResult> mapFilesToCache(List<CodeFile> files) async {
  final goodFiles = <CodeFile>[];
  final badFiles = <CodeFile>[];

  final bulkMapping = await _dbOperation(
    (db) async => await db.isMappingAvailableForBulk(
      files.map((f) => f.digest),
    ),
  );

  /// segregate good and bad files
  /// good files -> files for whom the generated codes are available
  /// bad files -> files for whom no generated codes are available in the cache
  for (final file in files) {
    final isGeneratedCodeAvailable = bulkMapping[file.digest] ?? false;

    /// mock generated files are always considered badFiles,
    /// as they depends on various services, and to keep track of changes can become complicated
    if (isGeneratedCodeAvailable) {
      goodFiles.add(file);
    } else {
      badFiles.add(file);
    }
  }

  return (good: goodFiles, bad: badFiles);
}