forked from ServiceStack/ServiceStack
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAutoQueryDataServices.cs
More file actions
64 lines (53 loc) · 2.17 KB
/
AutoQueryDataServices.cs
File metadata and controls
64 lines (53 loc) · 2.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
using System;
using System.Collections.Generic;
using ServiceStack;
namespace Check.ServiceInterface
{
[Route("/query/requestlogs")]
[Route("/query/requestlogs/{Date}")]
public class QueryRequestLogs : QueryData<RequestLogEntry>
{
public DateTime? Date { get; set; }
public bool ViewErrors { get; set; }
}
public class TodayLogs : QueryData<RequestLogEntry> { }
public class TodayErrorLogs : QueryData<RequestLogEntry> { }
public class YesterdayLogs : QueryData<RequestLogEntry> { }
public class YesterdayErrorLogs : QueryData<RequestLogEntry> { }
public class AutoQueryDataServices : Service
{
public IAutoQueryData AutoQuery { get; set; }
public object Any(QueryRequestLogs query)
{
var date = query.Date.GetValueOrDefault(DateTime.UtcNow);
var logSuffix = query.ViewErrors ? "-errors" : "";
var csvLogsFile = VirtualFileSources.GetFile("requestlogs/{0}-{1}/{0}-{1}-{2}{3}.csv".Fmt(
date.Year.ToString("0000"),
date.Month.ToString("00"),
date.Day.ToString("00"),
logSuffix));
if (csvLogsFile == null)
throw HttpError.NotFound("No logs found on " + date.ToShortDateString());
var logs = csvLogsFile.ReadAllText().FromCsv<List<RequestLogEntry>>();
var q = AutoQuery.CreateQuery(query, Request,
db: new MemoryDataSource<RequestLogEntry>(logs, query, Request));
return AutoQuery.Execute(query, q);
}
public object Any(TodayLogs request)
{
return Any(new QueryRequestLogs { Date = DateTime.UtcNow });
}
public object Any(TodayErrorLogs request)
{
return Any(new QueryRequestLogs { Date = DateTime.UtcNow, ViewErrors = true });
}
public object Any(YesterdayLogs request)
{
return Any(new QueryRequestLogs { Date = DateTime.UtcNow.AddDays(-1) });
}
public object Any(YesterdayErrorLogs request)
{
return Any(new QueryRequestLogs { Date = DateTime.UtcNow.AddDays(-1), ViewErrors = true });
}
}
}