Skip to content
This repository was archived by the owner on Jun 21, 2023. It is now read-only.

Commit 5f27039

Browse files
Making UsageModel a flat object again
1 parent e6a2f1e commit 5f27039

File tree

6 files changed

+76
-139
lines changed

6 files changed

+76
-139
lines changed

src/GitHub.Exports/Models/UsageModel.cs

Lines changed: 37 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -4,63 +4,49 @@ namespace GitHub.Models
44
{
55
public class UsageModel
66
{
7-
public DimensionsModel Dimensions { get; set; }
8-
public MeasuresModel Measures { get; set; }
7+
public Guid Guid { get; set; }
8+
public DateTimeOffset Date { get; set; }
9+
public string AppVersion { get; set; }
10+
public string VSVersion { get; set; }
11+
public string Lang { get; set; }
12+
public string CurrentLang { get; set; }
13+
public bool IsGitHubUser { get; set; }
14+
public bool IsEnterpriseUser { get; set; }
15+
public int NumberOfStartups { get; set; }
16+
public int NumberOfUpstreamPullRequests { get; set; }
17+
public int NumberOfClones { get; set; }
18+
public int NumberOfReposCreated { get; set; }
19+
public int NumberOfReposPublished { get; set; }
20+
public int NumberOfGists { get; set; }
21+
public int NumberOfOpenInGitHub { get; set; }
22+
public int NumberOfLinkToGitHub { get; set; }
23+
public int NumberOfLogins { get; set; }
24+
public int NumberOfOAuthLogins { get; set; }
25+
public int NumberOfTokenLogins { get; set; }
26+
public int NumberOfPullRequestsOpened { get; set; }
27+
public int NumberOfLocalPullRequestsCheckedOut { get; set; }
28+
public int NumberOfLocalPullRequestPulls { get; set; }
29+
public int NumberOfLocalPullRequestPushes { get; set; }
30+
public int NumberOfForkPullRequestsCheckedOut { get; set; }
31+
public int NumberOfForkPullRequestPulls { get; set; }
32+
public int NumberOfForkPullRequestPushes { get; set; }
33+
public int NumberOfWelcomeDocsClicks { get; set; }
34+
public int NumberOfWelcomeTrainingClicks { get; set; }
35+
public int NumberOfGitHubPaneHelpClicks { get; set; }
36+
public int NumberOfPRDetailsViewChanges { get; set; }
37+
public int NumberOfPRDetailsViewFile { get; set; }
38+
public int NumberOfPRDetailsCompareWithSolution { get; set; }
39+
public int NumberOfPRDetailsOpenFileInSolution { get; set; }
40+
public int NumberOfPRReviewDiffViewInlineCommentOpen { get; set; }
41+
public int NumberOfPRReviewDiffViewInlineCommentPost { get; set; }
942

1043
public static UsageModel Create(Guid guid)
1144
{
1245
return new UsageModel
1346
{
14-
Dimensions = new DimensionsModel
15-
{
16-
Guid = guid,
17-
Date = DateTime.Now,
18-
},
19-
Measures = new MeasuresModel(),
47+
Guid = guid,
48+
Date = DateTime.Now,
2049
};
2150
}
22-
23-
public class DimensionsModel
24-
{
25-
public Guid Guid { get; set; }
26-
public DateTimeOffset Date { get; set; }
27-
public string AppVersion { get; set; }
28-
public string VSVersion { get; set; }
29-
public string Lang { get; set; }
30-
public string CurrentLang { get; set; }
31-
public bool IsGitHubUser { get; set; }
32-
public bool IsEnterpriseUser { get; set; }
33-
}
34-
35-
public class MeasuresModel
36-
{
37-
public int NumberOfStartups { get; set; }
38-
public int NumberOfUpstreamPullRequests { get; set; }
39-
public int NumberOfClones { get; set; }
40-
public int NumberOfReposCreated { get; set; }
41-
public int NumberOfReposPublished { get; set; }
42-
public int NumberOfGists { get; set; }
43-
public int NumberOfOpenInGitHub { get; set; }
44-
public int NumberOfLinkToGitHub { get; set; }
45-
public int NumberOfLogins { get; set; }
46-
public int NumberOfOAuthLogins { get; set; }
47-
public int NumberOfTokenLogins { get; set; }
48-
public int NumberOfPullRequestsOpened { get; set; }
49-
public int NumberOfLocalPullRequestsCheckedOut { get; set; }
50-
public int NumberOfLocalPullRequestPulls { get; set; }
51-
public int NumberOfLocalPullRequestPushes { get; set; }
52-
public int NumberOfForkPullRequestsCheckedOut { get; set; }
53-
public int NumberOfForkPullRequestPulls { get; set; }
54-
public int NumberOfForkPullRequestPushes { get; set; }
55-
public int NumberOfWelcomeDocsClicks { get; set; }
56-
public int NumberOfWelcomeTrainingClicks { get; set; }
57-
public int NumberOfGitHubPaneHelpClicks { get; set; }
58-
public int NumberOfPRDetailsViewChanges { get; set; }
59-
public int NumberOfPRDetailsViewFile { get; set; }
60-
public int NumberOfPRDetailsCompareWithSolution { get; set; }
61-
public int NumberOfPRDetailsOpenFileInSolution { get; set; }
62-
public int NumberOfPRReviewDiffViewInlineCommentOpen { get; set; }
63-
public int NumberOfPRReviewDiffViewInlineCommentPost { get; set; }
64-
}
6551
}
6652
}

src/GitHub.Exports/Services/IUsageTracker.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@ namespace GitHub.Services
1010
[Guid(Guids.UsageTrackerId)]
1111
public interface IUsageTracker
1212
{
13-
Task IncrementCounter(Expression<Func<UsageModel.MeasuresModel, int>> counter);
13+
Task IncrementCounter(Expression<Func<UsageModel, int>> counter);
1414
}
1515
}

src/GitHub.VisualStudio/Services/UsageTracker.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,15 @@ public void Dispose()
4343
timer?.Dispose();
4444
}
4545

46-
public async Task IncrementCounter(Expression<Func<UsageModel.MeasuresModel, int>> counter)
46+
public async Task IncrementCounter(Expression<Func<UsageModel, int>> counter)
4747
{
4848
await Initialize();
4949
var data = await service.ReadLocalData();
5050
var usage = await GetCurrentReport(data);
5151
var property = (MemberExpression)counter.Body;
5252
var propertyInfo = (PropertyInfo)property.Member;
53-
var value = (int)propertyInfo.GetValue(usage.Measures);
54-
propertyInfo.SetValue(usage.Measures, value + 1);
53+
var value = (int)propertyInfo.GetValue(usage);
54+
propertyInfo.SetValue(usage, value + 1);
5555
await service.WriteLocalData(data);
5656
}
5757

@@ -93,14 +93,14 @@ async Task TimerTick()
9393
if (firstTick)
9494
{
9595
var current = await GetCurrentReport(data);
96-
current.Measures.NumberOfStartups++;
96+
current.NumberOfStartups++;
9797
changed = true;
9898
firstTick = false;
9999
}
100100

101101
for (var i = data.Reports.Count - 1; i >= 0; --i)
102102
{
103-
if (data.Reports[i].Dimensions.Date.Date != DateTimeOffset.Now.Date)
103+
if (data.Reports[i].Date.Date != DateTimeOffset.Now.Date)
104104
{
105105
try
106106
{
@@ -123,7 +123,7 @@ async Task TimerTick()
123123

124124
async Task<UsageModel> GetCurrentReport(UsageData data)
125125
{
126-
var current = data.Reports.FirstOrDefault(x => x.Dimensions.Date.Date == DateTimeOffset.Now.Date);
126+
var current = data.Reports.FirstOrDefault(x => x.Date.Date == DateTimeOffset.Now.Date);
127127

128128
if (current == null)
129129
{
@@ -132,19 +132,19 @@ async Task<UsageModel> GetCurrentReport(UsageData data)
132132
data.Reports.Add(current);
133133
}
134134

135-
current.Dimensions.Lang = CultureInfo.InstalledUICulture.IetfLanguageTag;
136-
current.Dimensions.CurrentLang = CultureInfo.CurrentCulture.IetfLanguageTag;
137-
current.Dimensions.AppVersion = AssemblyVersionInformation.Version;
138-
current.Dimensions.VSVersion = vsservices.VSVersion;
135+
current.Lang = CultureInfo.InstalledUICulture.IetfLanguageTag;
136+
current.CurrentLang = CultureInfo.CurrentCulture.IetfLanguageTag;
137+
current.AppVersion = AssemblyVersionInformation.Version;
138+
current.VSVersion = vsservices.VSVersion;
139139

140140
if (connectionManager.Connections.Any(x => x.HostAddress.IsGitHubDotCom()))
141141
{
142-
current.Dimensions.IsGitHubUser |= true;
142+
current.IsGitHubUser |= true;
143143
}
144144

145145
if (connectionManager.Connections.Any(x => !x.HostAddress.IsGitHubDotCom()))
146146
{
147-
current.Dimensions.IsEnterpriseUser |= true;
147+
current.IsEnterpriseUser |= true;
148148
}
149149

150150
return current;

src/GitHub.VisualStudio/Services/UsageTrackerDispatcher.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,6 @@ public UsageTrackerDispatcher([Import(typeof(SVsServiceProvider))] IServiceProvi
2121
inner = serviceProvider.GetService(typeof(IUsageTracker)) as IUsageTracker;
2222
}
2323

24-
public Task IncrementCounter(Expression<Func<UsageModel.MeasuresModel, int>> counter) => inner.IncrementCounter(counter);
24+
public Task IncrementCounter(Expression<Func<UsageModel, int>> counter) => inner.IncrementCounter(counter);
2525
}
2626
}

test/UnitTests/GitHub.App/Services/RepositoryCloneServiceTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ public async Task UpdatesMetricsWhenRepositoryCloned()
3939
var model = new UsageModel();
4040

4141
await usageTracker.Received().IncrementCounter(
42-
Arg.Is<Expression<Func<UsageModel.MeasuresModel, int>>>(x =>
43-
((MemberExpression)x.Body).Member.Name == nameof(model.Measures.NumberOfClones)));
42+
Arg.Is<Expression<Func<UsageModel, int>>>(x =>
43+
((MemberExpression)x.Body).Member.Name == nameof(model.NumberOfClones)));
4444
}
4545
}
4646
}

0 commit comments

Comments
 (0)