void WalkChainInto(ref List <Bk> chain, ref List <Tx> log, Bk bk) { var b = bk; var l = 0; var c = new Stack <Bk>(); var t = new Stack <Tx>(); while (!Bk.IsRoot(b)) { c.Push(b); b.Txs.OrderByDescending(x => x.Submitted).ToList().ForEach(t.Push); l += 1; b = b.Parent; } if (l == chain.Count && bk.Submitted < chain.Last().Submitted) { chain = new List <Bk>(c); log = new List <Tx>(t); } else if (l > chain.Count) { chain = new List <Bk>(c); log = new List <Tx>(t); } }
bool EnsureValid(Bk bk) { if (BkIdx.ContainsKey(bk.Id)) { return(true); } if (!BkIdx.ContainsKey(bk.Parent.Id)) { return(false); } bk.Parent = BkIdx[bk.Parent.Id]; for (int i = 0; i < bk.Txs.Count; i++) { if (!TxIdx.ContainsKey(bk.Txs[i].Id)) { return(false); } bk.Txs[i] = TxIdx[bk.Txs[i].Id]; } BkIdx[bk.Id] = bk; return(true); }
public async Task UpdateTagsAsync(string url, string title, IEnumerable <string> tags) { var bk = await _bkRepo.GetAsync(url); if (bk == null) { bk = new Bk { Title = title, TitleLastUpdateTime = _clock.UtcNow, Url = url, UrlHash = _urlHashService.GetHash(url), LastCreateTime = _clock.UtcNow, }; await _bkRepo.UpsertAsync(bk); } var tagList = tags.Distinct().OrderBy(x => x).ToList(); foreach (var tag in tagList) { await AppendTagsAsync(tag); } bk.Tags = tagList; await _bkRepo.UpsertAsync(bk); await UpdateMetadataAsync(); _logger.LogInformation("Tag {Tags} updated for {Url}", tagList, url); }
public void TOTALUSAGE() { StreamWriter Bk; try { Bk = File.AppendText("C:\\Users\\RON TAYLOR\\Desktop\\Computer Programing\\Company_Charge.txt"); TOTAL_USAGE = WATER_USAGE + SEWAGE_USAGE; Bk.WriteLine(total_usage); Bk.WriteLine("Total usage:{0}", total_usage); Bk.Close(); } catch { Console.WriteLine(" file not writtten "); } Console.ReadLine(); StreamReader Bo; Bo = File.OpenText("C:\\Users\\RON TAYLOR\\Desktop\\Computer Programing\\Company_Charge.txt"); TotalUsagedisplay = Bo.ReadLine(); while (TotalUsagedisplay != null) { Console.WriteLine(TotalUsagedisplay); TotalUsagedisplay = Bo.ReadLine(); } Bo.Close(); }
public async Task Test(string url, AfCodeType type) { using var mocker = AutoMock.GetLoose(); var service = mocker.Create <AfCodeService>(); var bk = new Bk { Url = url, Title = "newbe.pro", Tags = new List <string> { "newbe", "blog" } }; mocker.Mock <IIndexedDbRepo <Bk, string> >() .Setup(x => x.GetAsync(url)) .ReturnsAsync(bk); // act var code = await service.CreateAfCodeAsync(url, type); Console.WriteLine(code); var tryParseAsync = await service.TryParseAsync(code, out var result); tryParseAsync.Should().BeTrue(); result !.Should().NotBeNull(); result.Url.Should().Be(bk.Url); result.Title.Should().Be(bk.Title); result.Tags.Should().BeEquivalentTo(bk.Tags); }
public bool NeedFill(Bk bk) { if (bk.TitleAlias != null && bk.TitleAlias.TryGetValue(TextAliasType, out var alias) && alias.LastUpdatedTime >= bk.TitleLastUpdateTime) { return(false); } return(true); }
public static bool IsRoot(Bk b) => b.Id == 0;