Skip to content

Commit 48c2fe4

Browse files
committed
Implemented more methods
1 parent 8c7be1a commit 48c2fe4

File tree

1 file changed

+70
-2
lines changed

1 file changed

+70
-2
lines changed

src/ServiceControl.Audit.Persistence.PostgreSQL/PostgreSQLAuditDataStore.cs

Lines changed: 70 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ namespace ServiceControl.Audit.Persistence.PostgreSQL;
1313
using ServiceControl.Audit.Infrastructure;
1414
using ServiceControl.Audit.Monitoring;
1515
using ServiceControl.Audit.Persistence;
16+
using ServiceControl.Audit.Persistence.Infrastructure;
1617
using ServiceControl.SagaAudit;
1718

1819

@@ -46,8 +47,75 @@ public Task<QueryResult<IList<MessagesView>>> GetMessages(bool includeSystemMess
4647
return ExecuteMessagesQuery(builder, cancellationToken);
4748
}
4849

49-
public Task<QueryResult<IList<AuditCount>>> QueryAuditCounts(string endpointName, CancellationToken cancellationToken) => throw new NotImplementedException();
50-
public Task<QueryResult<IList<KnownEndpointsView>>> QueryKnownEndpoints(CancellationToken cancellationToken) => throw new NotImplementedException();
50+
public async Task<QueryResult<IList<AuditCount>>> QueryAuditCounts(string endpointName, CancellationToken cancellationToken)
51+
{
52+
var startDate = DateTime.UtcNow.AddDays(-30);
53+
var endDate = DateTime.UtcNow;
54+
using var connection = await connectionFactory.OpenConnection(cancellationToken);
55+
using var cmd = new NpgsqlCommand(@"
56+
SELECT
57+
DATE_TRUNC('day', processed_at) AS day,
58+
COUNT(*) AS count
59+
FROM processed_messages
60+
WHERE receiving_endpoint_name = @endpoint_name
61+
AND processed_at BETWEEN @start_date AND @end_date
62+
GROUP BY day
63+
ORDER BY day;", connection);
64+
cmd.Parameters.AddWithValue("endpoint_name", endpointName);
65+
cmd.Parameters.AddWithValue("start_date", startDate);
66+
cmd.Parameters.AddWithValue("end_date", endDate);
67+
68+
using var reader = await cmd.ExecuteReaderAsync(cancellationToken);
69+
var results = new List<AuditCount>();
70+
while (await reader.ReadAsync(cancellationToken))
71+
{
72+
results.Add(new AuditCount
73+
{
74+
UtcDate = reader.GetDateTime(reader.GetOrdinal("day")),
75+
Count = reader.GetInt32(reader.GetOrdinal("count"))
76+
});
77+
}
78+
79+
return new QueryResult<IList<AuditCount>>(results, new QueryStatsInfo(string.Empty, results.Count));
80+
}
81+
82+
public async Task<QueryResult<IList<KnownEndpointsView>>> QueryKnownEndpoints(CancellationToken cancellationToken)
83+
{
84+
// We need to return all the data from known_endpoints table in postgress
85+
using var connection = await connectionFactory.OpenConnection(cancellationToken);
86+
using var cmd = new NpgsqlCommand(@"
87+
SELECT
88+
id,
89+
name,
90+
host_id,
91+
host,
92+
last_seen
93+
FROM known_endpoints;", connection);
94+
95+
using var reader = await cmd.ExecuteReaderAsync(cancellationToken);
96+
var results = new List<KnownEndpointsView>();
97+
while (await reader.ReadAsync(cancellationToken))
98+
{
99+
var name = reader.GetString(reader.GetOrdinal("name"));
100+
var hostId = reader.GetGuid(reader.GetOrdinal("host_id"));
101+
var host = reader.GetString(reader.GetOrdinal("host"));
102+
var lastSeen = reader.GetDateTime(reader.GetOrdinal("last_seen"));
103+
results.Add(new KnownEndpointsView
104+
{
105+
Id = DeterministicGuid.MakeId(name, hostId.ToString()),
106+
EndpointDetails = new EndpointDetails
107+
{
108+
Host = host,
109+
HostId = hostId,
110+
Name = name
111+
},
112+
HostDisplayName = host
113+
});
114+
}
115+
116+
return new QueryResult<IList<KnownEndpointsView>>(results, new QueryStatsInfo(string.Empty, results.Count));
117+
}
118+
51119
public Task<QueryResult<IList<MessagesView>>> QueryMessages(string searchParam, PagingInfo pagingInfo, SortInfo sortInfo, DateTimeRange? timeSentRange = null, CancellationToken cancellationToken = default)
52120
{
53121
var builder = new PostgresqlMessagesQueryBuilder()

0 commit comments

Comments
 (0)