Skip to content

Commit 7c89b47

Browse files
committed
Add start and end date to MongoDB where clause.
1 parent 7c2e940 commit 7c89b47

File tree

1 file changed

+24
-13
lines changed

1 file changed

+24
-13
lines changed

src/Serilog.Ui.MongoDbProvider/MongoDbDataProvider.cs

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ public MongoDbDataProvider(IMongoClient client, MongoDbOptions options)
2727
DateTime? startDate = null,
2828
DateTime? endDate = null)
2929
{
30-
var logsTask = GetLogsAsync(page - 1, count, level, searchCriteria);
31-
var logCountTask = CountLogsAsync(level, searchCriteria);
30+
var logsTask = GetLogsAsync(page - 1, count, level, searchCriteria, startDate, endDate);
31+
var logCountTask = CountLogsAsync(level, searchCriteria, startDate, endDate);
3232

3333
await Task.WhenAll(logsTask, logCountTask);
3434

@@ -39,15 +39,12 @@ private async Task<IEnumerable<LogModel>> GetLogsAsync(
3939
int page,
4040
int count,
4141
string level,
42-
string searchCriteria)
42+
string searchCriteria,
43+
DateTime? startDate,
44+
DateTime? endDate)
4345
{
4446
var builder = Builders<MongoDbLogModel>.Filter.Empty;
45-
46-
if (!string.IsNullOrWhiteSpace(level))
47-
builder &= Builders<MongoDbLogModel>.Filter.Eq(entry => entry.Level, level);
48-
49-
if (!string.IsNullOrWhiteSpace(searchCriteria))
50-
builder &= Builders<MongoDbLogModel>.Filter.Text(searchCriteria);
47+
GenerateWhereClause(ref builder, level, searchCriteria, startDate, endDate);
5148

5249
var logs = await _collection.Find(builder)
5350
.Skip(count * page)
@@ -62,20 +59,34 @@ private async Task<IEnumerable<LogModel>> GetLogsAsync(
6259
return logs.Select(log => log.ToLogModel()).ToList();
6360
}
6461

65-
private async Task<int> CountLogsAsync(string level, string searchCriteria)
62+
private async Task<int> CountLogsAsync(string level, string searchCriteria, DateTime? startDate, DateTime? endDate)
6663
{
6764
var builder = Builders<MongoDbLogModel>.Filter.Empty;
65+
GenerateWhereClause(ref builder, level, searchCriteria, startDate, endDate);
6866

67+
var count = await _collection.Find(builder).CountDocumentsAsync();
68+
69+
return Convert.ToInt32(count);
70+
}
71+
72+
private void GenerateWhereClause(
73+
ref FilterDefinition<MongoDbLogModel> builder,
74+
string level,
75+
string searchCriteria,
76+
DateTime? startDate = null,
77+
DateTime? endDate = null)
78+
{
6979
if (!string.IsNullOrWhiteSpace(level))
7080
builder &= Builders<MongoDbLogModel>.Filter.Eq(entry => entry.Level, level);
7181

7282
if (!string.IsNullOrWhiteSpace(searchCriteria))
7383
builder &= Builders<MongoDbLogModel>.Filter.Text(searchCriteria);
7484

75-
var count = await _collection.Find(builder)
76-
.CountDocumentsAsync();
85+
if (startDate != null)
86+
builder &= Builders<MongoDbLogModel>.Filter.Gte(entry => entry.Timestamp, startDate);
7787

78-
return Convert.ToInt32(count);
88+
if (endDate != null)
89+
builder &= Builders<MongoDbLogModel>.Filter.Lte(entry => entry.Timestamp, endDate);
7990
}
8091
}
8192
}

0 commit comments

Comments
 (0)