cacheFiles method

Future<void> cacheFiles(
  1. List<CodeFile> files
)

Implementation

Future<void> cacheFiles(List<CodeFile> files) async {
  if (files.isEmpty) {
    return Logger.header('No new files to cache');
  }

  Logger.header('Caching ${files.length} files');

  final cacheEntry = <String, String>{};

  for (final file in files) {
    final generatedCodeFile = File(file.getGeneratedFilePath());
    Logger.v('Caching: ${Utils.getFileName(generatedCodeFile.path)}');

    final cachedFilePath = path.join(Utils.appCacheDirectory, file.digest);
    if (generatedCodeFile.existsSync()) {
      final _ = generatedCodeFile.copySync(cachedFilePath);
    } else {
      continue;
    }

    /// if file has been successfully copied, let's make an entry to the db
    if (File(cachedFilePath).existsSync()) {
      cacheEntry[file.digest] = cachedFilePath;
    } else {
      Logger.e(
        'ERROR: _cacheGeneratedCodesFor: failed to copy generated file $file',
      );
    }
  }

  /// create a bulk entry
  await _dbOperation((db) => db.createEntryForBulk(cacheEntry));
}