Skip to content

Commit 6525de8

Browse files
committed
Using namespace file scoped
1 parent 49b3dd1 commit 6525de8

10 files changed

+314
-300
lines changed
Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
1-
namespace ServiceControl.Audit.Persistence.PostgreSQL.BodyStorage
2-
{
3-
using System.IO;
4-
using System.Threading;
5-
using System.Threading.Tasks;
6-
using ServiceControl.Audit.Auditing.BodyStorage;
1+
namespace ServiceControl.Audit.Persistence.PostgreSQL.BodyStorage;
72

8-
class PostgreSQLAttachmentsBodyStorage : IBodyStorage
9-
{
10-
public Task Store(string bodyId, string contentType, int bodySize, Stream bodyStream, CancellationToken cancellationToken) => throw new System.NotImplementedException();
11-
public Task<StreamResult> TryFetch(string bodyId, CancellationToken cancellationToken) => throw new System.NotImplementedException();
12-
}
3+
using System.IO;
4+
using System.Threading;
5+
using System.Threading.Tasks;
6+
using ServiceControl.Audit.Auditing.BodyStorage;
7+
class PostgreSQLAttachmentsBodyStorage : IBodyStorage
8+
{
9+
public Task Store(string bodyId, string contentType, int bodySize, Stream bodyStream, CancellationToken cancellationToken) => throw new System.NotImplementedException();
10+
public Task<StreamResult> TryFetch(string bodyId, CancellationToken cancellationToken) => throw new System.NotImplementedException();
1311
}
Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,20 @@
1-
namespace ServiceControl.Audit.Persistence.PostgreSQL
2-
{
3-
using System;
4-
5-
class DatabaseConfiguration(
6-
string databaseName,
7-
int expirationProcessTimerInSeconds,
8-
TimeSpan auditRetentionPeriod,
9-
int maxBodySizeToStore,
10-
string connectionString)
11-
{
12-
public string Name { get; } = databaseName;
1+
namespace ServiceControl.Audit.Persistence.PostgreSQL;
132

14-
public int ExpirationProcessTimerInSeconds { get; } = expirationProcessTimerInSeconds;
3+
using System;
4+
class DatabaseConfiguration(
5+
string databaseName,
6+
string adminDatabaseName,
7+
int expirationProcessTimerInSeconds,
8+
TimeSpan auditRetentionPeriod,
9+
int maxBodySizeToStore,
10+
string connectionString)
11+
{
12+
public string Name { get; } = databaseName;
13+
public string AdminDatabaseName { get; } = adminDatabaseName;
14+
public int ExpirationProcessTimerInSeconds { get; } = expirationProcessTimerInSeconds;
1515

16-
public TimeSpan AuditRetentionPeriod { get; } = auditRetentionPeriod;
16+
public TimeSpan AuditRetentionPeriod { get; } = auditRetentionPeriod;
1717

18-
public int MaxBodySizeToStore { get; } = maxBodySizeToStore;
19-
public string ConnectionString { get; } = connectionString;
20-
}
18+
public int MaxBodySizeToStore { get; } = maxBodySizeToStore;
19+
public string ConnectionString { get; } = connectionString;
2120
}
Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,25 @@
1-
namespace ServiceControl.Audit.Persistence.PostgreSQL
2-
{
3-
using System;
4-
using System.Collections.Generic;
5-
using System.Threading;
6-
using System.Threading.Tasks;
7-
using ServiceControl.Audit.Auditing;
8-
using ServiceControl.Audit.Auditing.MessagesView;
9-
using ServiceControl.Audit.Infrastructure;
10-
using ServiceControl.Audit.Monitoring;
11-
using ServiceControl.Audit.Persistence;
12-
using ServiceControl.SagaAudit;
1+
namespace ServiceControl.Audit.Persistence.PostgreSQL;
2+
3+
using System;
4+
using System.Collections.Generic;
5+
using System.Threading;
6+
using System.Threading.Tasks;
7+
using ServiceControl.Audit.Auditing;
8+
using ServiceControl.Audit.Auditing.MessagesView;
9+
using ServiceControl.Audit.Infrastructure;
10+
using ServiceControl.Audit.Monitoring;
11+
using ServiceControl.Audit.Persistence;
12+
using ServiceControl.SagaAudit;
1313

14-
class PostgreSQLAuditDataStore : IAuditDataStore
15-
{
16-
public Task<MessageBodyView> GetMessageBody(string messageId, CancellationToken cancellationToken) => throw new NotImplementedException();
17-
public Task<QueryResult<IList<MessagesView>>> GetMessages(bool includeSystemMessages, PagingInfo pagingInfo, SortInfo sortInfo, DateTimeRange timeSentRange = null, CancellationToken cancellationToken = default) => throw new NotImplementedException();
18-
public Task<QueryResult<IList<AuditCount>>> QueryAuditCounts(string endpointName, CancellationToken cancellationToken) => throw new NotImplementedException();
19-
public Task<QueryResult<IList<KnownEndpointsView>>> QueryKnownEndpoints(CancellationToken cancellationToken) => throw new NotImplementedException();
20-
public Task<QueryResult<IList<MessagesView>>> QueryMessages(string searchParam, PagingInfo pagingInfo, SortInfo sortInfo, DateTimeRange timeSentRange = null, CancellationToken cancellationToken = default) => throw new NotImplementedException();
21-
public Task<QueryResult<IList<MessagesView>>> QueryMessagesByConversationId(string conversationId, PagingInfo pagingInfo, SortInfo sortInfo, CancellationToken cancellationToken) => throw new NotImplementedException();
22-
public Task<QueryResult<IList<MessagesView>>> QueryMessagesByReceivingEndpoint(bool includeSystemMessages, string endpointName, PagingInfo pagingInfo, SortInfo sortInfo, DateTimeRange timeSentRange = null, CancellationToken cancellationToken = default) => throw new NotImplementedException();
23-
public Task<QueryResult<IList<MessagesView>>> QueryMessagesByReceivingEndpointAndKeyword(string endpoint, string keyword, PagingInfo pagingInfo, SortInfo sortInfo, DateTimeRange timeSentRange = null, CancellationToken cancellationToken = default) => throw new NotImplementedException();
24-
public Task<QueryResult<SagaHistory>> QuerySagaHistoryById(Guid input, CancellationToken cancellationToken) => throw new NotImplementedException();
25-
}
14+
class PostgreSQLAuditDataStore : IAuditDataStore
15+
{
16+
public Task<MessageBodyView> GetMessageBody(string messageId, CancellationToken cancellationToken) => throw new NotImplementedException();
17+
public Task<QueryResult<IList<MessagesView>>> GetMessages(bool includeSystemMessages, PagingInfo pagingInfo, SortInfo sortInfo, DateTimeRange timeSentRange = null, CancellationToken cancellationToken = default) => throw new NotImplementedException();
18+
public Task<QueryResult<IList<AuditCount>>> QueryAuditCounts(string endpointName, CancellationToken cancellationToken) => throw new NotImplementedException();
19+
public Task<QueryResult<IList<KnownEndpointsView>>> QueryKnownEndpoints(CancellationToken cancellationToken) => throw new NotImplementedException();
20+
public Task<QueryResult<IList<MessagesView>>> QueryMessages(string searchParam, PagingInfo pagingInfo, SortInfo sortInfo, DateTimeRange timeSentRange = null, CancellationToken cancellationToken = default) => throw new NotImplementedException();
21+
public Task<QueryResult<IList<MessagesView>>> QueryMessagesByConversationId(string conversationId, PagingInfo pagingInfo, SortInfo sortInfo, CancellationToken cancellationToken) => throw new NotImplementedException();
22+
public Task<QueryResult<IList<MessagesView>>> QueryMessagesByReceivingEndpoint(bool includeSystemMessages, string endpointName, PagingInfo pagingInfo, SortInfo sortInfo, DateTimeRange timeSentRange = null, CancellationToken cancellationToken = default) => throw new NotImplementedException();
23+
public Task<QueryResult<IList<MessagesView>>> QueryMessagesByReceivingEndpointAndKeyword(string endpoint, string keyword, PagingInfo pagingInfo, SortInfo sortInfo, DateTimeRange timeSentRange = null, CancellationToken cancellationToken = default) => throw new NotImplementedException();
24+
public Task<QueryResult<SagaHistory>> QuerySagaHistoryById(Guid input, CancellationToken cancellationToken) => throw new NotImplementedException();
2625
}
Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,25 @@
1-
namespace ServiceControl.Audit.Persistence.PostgreSQL
2-
{
3-
using Npgsql;
4-
using System.Threading.Tasks;
5-
using System.Threading;
1+
namespace ServiceControl.Audit.Persistence.PostgreSQL;
62

7-
class PostgreSQLConnectionFactory
3+
using Npgsql;
4+
using System.Threading.Tasks;
5+
using System.Threading;
6+
class PostgreSQLConnectionFactory(DatabaseConfiguration databaseConfiguration)
7+
{
8+
public async Task<NpgsqlConnection> OpenConnection(CancellationToken cancellationToken)
89
{
9-
readonly string connectionString;
10-
11-
public PostgreSQLConnectionFactory(DatabaseConfiguration databaseConfiguration) => connectionString = databaseConfiguration.ConnectionString;
10+
var conn = new NpgsqlConnection(databaseConfiguration.ConnectionString);
11+
await conn.OpenAsync(cancellationToken);
12+
return conn;
13+
}
1214

13-
public async Task<NpgsqlConnection> OpenConnection(CancellationToken cancellationToken)
15+
public async Task<NpgsqlConnection> OpenAdminConnection(CancellationToken cancellationToken)
16+
{
17+
var builder = new NpgsqlConnectionStringBuilder(databaseConfiguration.ConnectionString)
1418
{
15-
var conn = new NpgsqlConnection(connectionString);
16-
await conn.OpenAsync(cancellationToken);
17-
return conn;
18-
}
19+
Database = databaseConfiguration.AdminDatabaseName
20+
};
21+
var conn = new NpgsqlConnection(builder.ConnectionString);
22+
await conn.OpenAsync(cancellationToken);
23+
return conn;
1924
}
20-
}
25+
}
Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
1-
namespace ServiceControl.Audit.Persistence.PostgreSQL
2-
{
3-
using System;
4-
using System.Threading;
5-
using System.Threading.Tasks;
6-
using ServiceControl.Audit.Auditing;
7-
using ServiceControl.Audit.Persistence;
1+
namespace ServiceControl.Audit.Persistence.PostgreSQL;
82

9-
class PostgreSQLFailedAuditStorage : IFailedAuditStorage
10-
{
11-
public Task<int> GetFailedAuditsCount() => throw new NotImplementedException();
12-
public Task ProcessFailedMessages(Func<FailedTransportMessage, Func<CancellationToken, Task>, CancellationToken, Task> onMessage, CancellationToken cancellationToken) => throw new NotImplementedException();
13-
public Task SaveFailedAuditImport(FailedAuditImport message) => throw new NotImplementedException();
14-
}
3+
using System;
4+
using System.Threading;
5+
using System.Threading.Tasks;
6+
using ServiceControl.Audit.Auditing;
7+
using ServiceControl.Audit.Persistence;
8+
class PostgreSQLFailedAuditStorage : IFailedAuditStorage
9+
{
10+
public Task<int> GetFailedAuditsCount() => throw new NotImplementedException();
11+
public Task ProcessFailedMessages(Func<FailedTransportMessage, Func<CancellationToken, Task>, CancellationToken, Task> onMessage, CancellationToken cancellationToken) => throw new NotImplementedException();
12+
public Task SaveFailedAuditImport(FailedAuditImport message) => throw new NotImplementedException();
1513
}
Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,27 @@
1-
namespace ServiceControl.Audit.Persistence.PostgreSQL
2-
{
3-
using Microsoft.Extensions.DependencyInjection;
4-
using ServiceControl.Audit.Auditing.BodyStorage;
5-
using ServiceControl.Audit.Persistence;
6-
using ServiceControl.Audit.Persistence.PostgreSQL.BodyStorage;
7-
using ServiceControl.Audit.Persistence.PostgreSQL.UnitOfWork;
8-
using ServiceControl.Audit.Persistence.UnitOfWork;
1+
namespace ServiceControl.Audit.Persistence.PostgreSQL;
92

10-
class PostgreSQLPersistence(DatabaseConfiguration databaseConfiguration) : IPersistence
3+
using Microsoft.Extensions.DependencyInjection;
4+
using ServiceControl.Audit.Auditing.BodyStorage;
5+
using ServiceControl.Audit.Persistence;
6+
using ServiceControl.Audit.Persistence.PostgreSQL.BodyStorage;
7+
using ServiceControl.Audit.Persistence.PostgreSQL.UnitOfWork;
8+
using ServiceControl.Audit.Persistence.UnitOfWork;
9+
class PostgreSQLPersistence(DatabaseConfiguration databaseConfiguration) : IPersistence
10+
{
11+
public void AddInstaller(IServiceCollection services)
1112
{
12-
public void AddInstaller(IServiceCollection services)
13-
{
14-
services.AddSingleton(databaseConfiguration);
15-
services.AddSingleton<PostgreSQLConnectionFactory>();
16-
services.AddHostedService<PostgreSQLPersistenceInstaller>();
17-
}
13+
services.AddSingleton(databaseConfiguration);
14+
services.AddSingleton<PostgreSQLConnectionFactory>();
15+
services.AddHostedService<PostgreSQLPersistenceInstaller>();
16+
}
1817

19-
public void AddPersistence(IServiceCollection services)
20-
{
21-
services.AddSingleton(databaseConfiguration);
22-
services.AddSingleton<IAuditDataStore, PostgreSQLAuditDataStore>();
23-
services.AddSingleton<IAuditIngestionUnitOfWorkFactory, PostgreSQLAuditIngestionUnitOfWorkFactory>();
24-
services.AddSingleton<IFailedAuditStorage, PostgreSQLFailedAuditStorage>();
25-
services.AddSingleton<IBodyStorage, PostgreSQLAttachmentsBodyStorage>();
26-
services.AddSingleton<PostgreSQLConnectionFactory>();
27-
}
18+
public void AddPersistence(IServiceCollection services)
19+
{
20+
services.AddSingleton(databaseConfiguration);
21+
services.AddSingleton<IAuditDataStore, PostgreSQLAuditDataStore>();
22+
services.AddSingleton<IAuditIngestionUnitOfWorkFactory, PostgreSQLAuditIngestionUnitOfWorkFactory>();
23+
services.AddSingleton<IFailedAuditStorage, PostgreSQLFailedAuditStorage>();
24+
services.AddSingleton<IBodyStorage, PostgreSQLAttachmentsBodyStorage>();
25+
services.AddSingleton<PostgreSQLConnectionFactory>();
2826
}
2927
}
Lines changed: 33 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,42 @@
1-
namespace ServiceControl.Audit.Persistence.PostgreSQL
1+
namespace ServiceControl.Audit.Persistence.PostgreSQL;
2+
3+
using System;
4+
using System.Collections.Generic;
5+
using Npgsql;
6+
using ServiceControl.Audit.Persistence;
7+
8+
public class PostgreSQLPersistenceConfiguration : IPersistenceConfiguration
29
{
3-
using System;
4-
using System.Collections.Generic;
5-
using ServiceControl.Audit.Persistence;
10+
public string Name => "PostgreSQL";
611

7-
public class PostgreSQLPersistenceConfiguration : IPersistenceConfiguration
8-
{
9-
public string Name => "PostgreSQL";
12+
public IEnumerable<string> ConfigurationKeys => ["PostgreSql/ConnectionString", "PostgreSql/DatabaseName"];
1013

11-
public IEnumerable<string> ConfigurationKeys => ["PostgreSql/ConnectionString", "PostgreSql/DatabaseName"];
14+
const int ExpirationProcessTimerInSecondsDefault = 600;
15+
16+
public IPersistence Create(PersistenceSettings settings)
17+
{
18+
if (!settings.PersisterSpecificSettings.TryGetValue("PostgreSql/ConnectionString", out var connectionString))
19+
{
20+
throw new Exception("PostgreSql/ConnectionString is not configured.");
21+
}
1222

13-
const int ExpirationProcessTimerInSecondsDefault = 600;
23+
var builder = new NpgsqlConnectionStringBuilder(connectionString);
1424

15-
public IPersistence Create(PersistenceSettings settings)
25+
if (settings.PersisterSpecificSettings.TryGetValue("PostgreSql/DatabaseName", out var databaseName))
1626
{
17-
if (!settings.PersisterSpecificSettings.TryGetValue("PostgreSql/ConnectionString", out var connectionString))
18-
{
19-
throw new Exception("PostgreSql/ConnectionString is not configured.");
20-
}
21-
22-
if (!settings.PersisterSpecificSettings.TryGetValue("PostgreSql/DatabaseName", out var databaseName))
23-
{
24-
databaseName = "servicecontrol-audit";
25-
}
26-
27-
return new PostgreSQLPersistence(new DatabaseConfiguration(
28-
databaseName,
29-
ExpirationProcessTimerInSecondsDefault,
30-
settings.AuditRetentionPeriod,
31-
settings.MaxBodySizeToStore,
32-
connectionString));
27+
builder.Database = databaseName;
3328
}
29+
30+
settings.PersisterSpecificSettings.TryGetValue("PostgreSql/AdminDatabaseName", out var adminDatabaseName);
31+
32+
builder.Database ??= "servicecontrol-audit";
33+
34+
return new PostgreSQLPersistence(new DatabaseConfiguration(
35+
builder.Database,
36+
adminDatabaseName ?? "postgres",
37+
ExpirationProcessTimerInSecondsDefault,
38+
settings.AuditRetentionPeriod,
39+
settings.MaxBodySizeToStore,
40+
connectionString));
3441
}
3542
}

0 commit comments

Comments
 (0)