public async Task ExecuteAsync()

in Core/src/Impl/Commands/DeleteCommand.cs [36:70]


    public async Task<int> ExecuteAsync()
    {
      Volatile.Write(ref mySubOpsCount, 0);
      var validator = new StorageManager(myLogger, myStorage);
      var storageFormat = await validator.ValidateStorageMarkersAsync();

      long deleteTags;
      List<TagFileData> tagItems;
      {
        var (incTagItems, excTagItems) = await validator.LoadTagItemsAsync(myDegreeOfParallelism, myIdentityFilter, mySafetyPeriod, false);
        validator.DumpProducts(incTagItems);
        validator.DumpProperties(incTagItems);
        deleteTags = incTagItems.Count;

        myLogger.Info($"[{DateTime.Now:s}] Deleting tag files...");
        await incTagItems.ParallelForAsync(myDegreeOfParallelism, async tagItem =>
          {
            var file = tagItem.TagFile;
            myLogger.Info($"  Deleting {file}");
            Interlocked.Increment(ref mySubOpsCount);
            await myStorage.DeleteAsync(file);
          });

        tagItems = excTagItems;
      }

      {
        var (files, _) = await validator.GatherDataFilesAsync();
        var (statistics, deleted) = await validator.ValidateAndFixAsync(myDegreeOfParallelism, tagItems, files, storageFormat, StorageManager.ValidateMode.Delete);
        if (deleted > 0)
          await myStorage.InvalidateExternalServicesAsync();
        myLogger.Info($"[{DateTime.Now:s}] Done (deleted tag files: {deleteTags}, deleted data files: {deleted}, warnings: {statistics.Warnings}, errors: {statistics.Errors}, fixes: {statistics.Fixes})");
        return statistics.HasProblems ? 1 : 0;
      }
    }