Skip to content

Commit db9ba4f

Browse files
authored
Merge pull request #850 from iceljc/master
relocate
2 parents 01f5af4 + ae8796e commit db9ba4f

File tree

4 files changed

+44
-73
lines changed

4 files changed

+44
-73
lines changed

src/Infrastructure/BotSharp.Abstraction/Statistics/Models/BotSharpStats.cs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,36 @@ public override string ToString()
4545
{
4646
return $"{Metric}-{Dimension} ({Interval}): {Data?.Count ?? 0}";
4747
}
48+
49+
public static (DateTime, DateTime) BuildTimeInterval(DateTime recordTime, StatsInterval interval)
50+
{
51+
DateTime startTime = recordTime;
52+
DateTime endTime = DateTime.UtcNow;
53+
54+
switch (interval)
55+
{
56+
case StatsInterval.Hour:
57+
startTime = new DateTime(recordTime.Year, recordTime.Month, recordTime.Day, recordTime.Hour, 0, 0);
58+
endTime = startTime.AddHours(1);
59+
break;
60+
case StatsInterval.Week:
61+
var dayOfWeek = startTime.DayOfWeek;
62+
var firstDayOfWeek = startTime.AddDays(-(int)dayOfWeek);
63+
startTime = new DateTime(firstDayOfWeek.Year, firstDayOfWeek.Month, firstDayOfWeek.Day, 0, 0, 0);
64+
endTime = startTime.AddDays(7);
65+
break;
66+
case StatsInterval.Month:
67+
startTime = new DateTime(recordTime.Year, recordTime.Month, 1);
68+
endTime = startTime.AddMonths(1);
69+
break;
70+
default:
71+
startTime = new DateTime(recordTime.Year, recordTime.Month, recordTime.Day, 0, 0, 0);
72+
endTime = startTime.AddDays(1);
73+
break;
74+
}
75+
76+
startTime = DateTime.SpecifyKind(startTime, DateTimeKind.Utc);
77+
endTime = DateTime.SpecifyKind(endTime, DateTimeKind.Utc);
78+
return (startTime, endTime);
79+
}
4880
}

src/Infrastructure/BotSharp.Core/Conversations/Services/ConversationStateService.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,11 +211,11 @@ public void Save()
211211
{
212212
if (_conversationId == null)
213213
{
214+
Reset();
214215
return;
215216
}
216217

217218
var states = new List<StateKeyValue>();
218-
219219
foreach (var pair in _curStates)
220220
{
221221
var key = pair.Key;
@@ -244,6 +244,7 @@ public void Save()
244244
}
245245

246246
_db.UpdateConversationStates(_conversationId, states);
247+
Reset();
247248
_logger.LogInformation($"Saved states of conversation {_conversationId}");
248249
}
249250

@@ -421,4 +422,10 @@ public void ResetCurrentState()
421422
{
422423
_curStates.Clear();
423424
}
425+
426+
private void Reset()
427+
{
428+
_curStates.Clear();
429+
_historyStates.Clear();
430+
}
424431
}

src/Infrastructure/BotSharp.Core/Repository/FileRepository/FileRepository.Stats.cs

Lines changed: 2 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ public partial class FileRepository
77
public BotSharpStats? GetGlobalStats(string metric, string dimension, DateTime recordTime, StatsInterval interval)
88
{
99
var baseDir = Path.Combine(_dbSettings.FileRepository, STATS_FOLDER);
10-
var (startTime, endTime) = BuildTimeInterval(recordTime, interval);
10+
var (startTime, endTime) = BotSharpStats.BuildTimeInterval(recordTime, interval);
1111
var dir = Path.Combine(baseDir, metric, startTime.Year.ToString(), startTime.Month.ToString("D2"));
1212
if (!Directory.Exists(dir)) return null;
1313

@@ -27,7 +27,7 @@ public partial class FileRepository
2727
public bool SaveGlobalStats(BotSharpStats body)
2828
{
2929
var baseDir = Path.Combine(_dbSettings.FileRepository, STATS_FOLDER);
30-
var (startTime, endTime) = BuildTimeInterval(body.RecordTime, body.IntervalType);
30+
var (startTime, endTime) = BotSharpStats.BuildTimeInterval(body.RecordTime, body.IntervalType);
3131
body.StartTime = startTime;
3232
body.EndTime = endTime;
3333

@@ -76,38 +76,4 @@ public bool SaveGlobalStats(BotSharpStats body)
7676

7777
return true;
7878
}
79-
80-
#region Private methods
81-
private (DateTime, DateTime) BuildTimeInterval(DateTime recordTime, StatsInterval interval)
82-
{
83-
DateTime startTime = recordTime;
84-
DateTime endTime = DateTime.UtcNow;
85-
86-
switch (interval)
87-
{
88-
case StatsInterval.Hour:
89-
startTime = new DateTime(recordTime.Year, recordTime.Month, recordTime.Day, recordTime.Hour, 0, 0);
90-
endTime = startTime.AddHours(1);
91-
break;
92-
case StatsInterval.Week:
93-
var dayOfWeek = startTime.DayOfWeek;
94-
var firstDayOfWeek = startTime.AddDays(-(int)dayOfWeek);
95-
startTime = new DateTime(firstDayOfWeek.Year, firstDayOfWeek.Month, firstDayOfWeek.Day, 0, 0, 0);
96-
endTime = startTime.AddDays(7);
97-
break;
98-
case StatsInterval.Month:
99-
startTime = new DateTime(recordTime.Year, recordTime.Month, 1);
100-
endTime = startTime.AddMonths(1);
101-
break;
102-
default:
103-
startTime = new DateTime(recordTime.Year, recordTime.Month, recordTime.Day, 0, 0, 0);
104-
endTime = startTime.AddDays(1);
105-
break;
106-
}
107-
108-
startTime = DateTime.SpecifyKind(startTime, DateTimeKind.Utc);
109-
endTime = DateTime.SpecifyKind(endTime, DateTimeKind.Utc);
110-
return (startTime, endTime);
111-
}
112-
#endregion
11379
}

src/Plugins/BotSharp.Plugin.MongoStorage/Repository/MongoRepository.Stats.cs

Lines changed: 2 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ public partial class MongoRepository
77
{
88
public BotSharpStats? GetGlobalStats(string metric, string dimension, DateTime recordTime, StatsInterval interval)
99
{
10-
var (startTime, endTime) = BuildTimeInterval(recordTime, interval);
10+
var (startTime, endTime) = BotSharpStats.BuildTimeInterval(recordTime, interval);
1111

1212
var builder = Builders<GlobalStatisticsDocument>.Filter;
1313
var filters = new List<FilterDefinition<GlobalStatisticsDocument>>()
@@ -36,7 +36,7 @@ public partial class MongoRepository
3636

3737
public bool SaveGlobalStats(BotSharpStats body)
3838
{
39-
var (startTime, endTime) = BuildTimeInterval(body.RecordTime, body.IntervalType);
39+
var (startTime, endTime) = BotSharpStats.BuildTimeInterval(body.RecordTime, body.IntervalType);
4040
body.RecordTime = DateTime.SpecifyKind(body.RecordTime, DateTimeKind.Utc);
4141
body.StartTime = startTime;
4242
body.EndTime = endTime;
@@ -64,38 +64,4 @@ public bool SaveGlobalStats(BotSharpStats body)
6464
_dc.GlobalStatistics.UpdateOne(filterDef, updateDef, _options);
6565
return true;
6666
}
67-
68-
#region Private methods
69-
private (DateTime, DateTime) BuildTimeInterval(DateTime recordTime, StatsInterval interval)
70-
{
71-
DateTime startTime = recordTime;
72-
DateTime endTime = DateTime.UtcNow;
73-
74-
switch (interval)
75-
{
76-
case StatsInterval.Hour:
77-
startTime = new DateTime(recordTime.Year, recordTime.Month, recordTime.Day, recordTime.Hour, 0, 0);
78-
endTime = startTime.AddHours(1);
79-
break;
80-
case StatsInterval.Week:
81-
var dayOfWeek = startTime.DayOfWeek;
82-
var firstDayOfWeek = startTime.AddDays(-(int)dayOfWeek);
83-
startTime = new DateTime(firstDayOfWeek.Year, firstDayOfWeek.Month, firstDayOfWeek.Day, 0, 0, 0);
84-
endTime = startTime.AddDays(7);
85-
break;
86-
case StatsInterval.Month:
87-
startTime = new DateTime(recordTime.Year, recordTime.Month, 1);
88-
endTime = startTime.AddMonths(1);
89-
break;
90-
default:
91-
startTime = new DateTime(recordTime.Year, recordTime.Month, recordTime.Day, 0, 0, 0);
92-
endTime = startTime.AddDays(1);
93-
break;
94-
}
95-
96-
startTime = DateTime.SpecifyKind(startTime, DateTimeKind.Utc);
97-
endTime = DateTime.SpecifyKind(endTime, DateTimeKind.Utc);
98-
return (startTime, endTime);
99-
}
100-
#endregion
10167
}

0 commit comments

Comments
 (0)