Skip to content

Commit bbdee52

Browse files
committed

File tree

2 files changed

+22
-6
lines changed

2 files changed

+22
-6
lines changed

src/Core/Core.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
</PropertyGroup>
88

99
<ItemGroup>
10+
<PackageReference Include="Humanizer.Core" Version="2.14.1" />
1011
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="8.0.0" />
1112
<PackageReference Include="Microsoft.Extensions.Http" Version="8.0.0" />
1213
<PackageReference Include="Microsoft.IdentityModel.JsonWebTokens" Version="8.1.0" />

src/Core/Records.cs

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
using System.Collections.Concurrent;
22
using System.ComponentModel;
3+
using System.Security.Cryptography;
4+
using Humanizer;
35

46
namespace Devlooped.Sponsors;
57

@@ -37,13 +39,26 @@ public record FundedRepository(string OwnerRepo, string[] Sponsorables);
3739

3840
public record OpenSource(ConcurrentDictionary<string, HashSet<string>> Authors, ConcurrentDictionary<string, HashSet<string>> Repositories, ConcurrentDictionary<string, ConcurrentDictionary<string, long>> Packages)
3941
{
40-
public OpenSourceSummary Totals => new(this);
42+
OpenSourceSummary? summary;
43+
OpenSourceTotals? totals;
4144

42-
public class OpenSourceSummary(OpenSource source)
45+
public OpenSourceSummary Summary => summary ??= new(Totals);
46+
47+
public OpenSourceTotals Totals => totals ??= new(this);
48+
49+
public class OpenSourceTotals(OpenSource source)
50+
{
51+
public double Authors => source.Authors.Count;
52+
public double Repositories => source.Repositories.Count;
53+
public double Packages => source.Packages.Sum(x => x.Value.Count);
54+
public double Downloads => source.Packages.Sum(x => x.Value.Sum(y => y.Value));
55+
}
56+
57+
public class OpenSourceSummary(OpenSourceTotals totals)
4358
{
44-
public long Authors => source.Authors.Count;
45-
public long Repositories => source.Repositories.Count;
46-
public long Packages => source.Packages.Sum(x => x.Value.Count);
47-
public long Downloads => source.Packages.Sum(x => x.Value.Sum(y => y.Value));
59+
public string Authors => totals.Authors.ToMetric(decimals: 1);
60+
public string Repositories => totals.Repositories.ToMetric(decimals: 1);
61+
public string Packages => totals.Packages.ToMetric(decimals: 1);
62+
public string Downloads => totals.Packages.ToMetric(decimals: 1);
4863
}
4964
}

0 commit comments

Comments
 (0)