public async Task <SaveToCloudOutput> SaveToCloudAsync(CloudBkCollection cloudBkCollection) { if (!await _googleDriveClient.TestAsync()) { return(new SaveToCloudOutput { IsOk = false, Message = "google not login" }); } await _googleDriveClient.UploadAsync(cloudBkCollection); var googleDriveStatics = await _simpleDataStorage.GetOrDefaultAsync <GoogleDriveStatics>(); googleDriveStatics.LastSuccessUploadTime = _clock.UtcNow; await _simpleDataStorage.SaveAsync(googleDriveStatics); var re = new SaveToCloudOutput { IsOk = true }; return(re); }
public async Task LoadCloudCollectionAsync(CloudBkCollection cloudBkCollection) { var bks = await _bkRepo.GetAllAsync(); var dictByUrlHash = bks.ToDictionary(x => x.UrlHash); foreach (var(urlHash, cloudBk) in cloudBkCollection.Bks) { if (dictByUrlHash.TryGetValue(urlHash, out var localBk)) { localBk.Tags = cloudBk.Tags; await _bkRepo.UpsertAsync(localBk); } } var cloudTags = cloudBkCollection.Bks.SelectMany(x => x.Value.Tags).ToHashSet(); foreach (var cloudBkTag in cloudTags) { await AppendTagsAsync(cloudBkTag); } await _bkMetadataRepo.UpsertAsync(new BkMetadata { EtagVersion = cloudBkCollection.EtagVersion, LastUpdateTime = cloudBkCollection.LastUpdateTime, Id = Consts.SingleOneDataId }); }
public async Task <SaveToCloudOutput> SaveToCloudAsync(CloudBkCollection cloudBkCollection) { var resp = await _cloudBkApi.SaveToCloudAsync(cloudBkCollection); await resp.EnsureSuccessStatusCodeAsync(); return(resp.Content !); }