Skip to content

Commit 2ff8ef3

Browse files
committed
Update base DbContext and editorconfig
1 parent faed5d6 commit 2ff8ef3

File tree

7 files changed

+114
-3
lines changed

7 files changed

+114
-3
lines changed

src/ServiceControl.Persistence.Sql.Core/.editorconfig

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,8 @@
22

33
# Justification: ServiceControl app has no synchronization context
44
dotnet_diagnostic.CA2007.severity = none
5+
6+
# Disable style rules for auto-generated EF migrations
7+
[**/Migrations/*.cs]
8+
dotnet_diagnostic.IDE0065.severity = none
9+
generated_code = true

src/ServiceControl.Persistence.Sql.Core/DbContexts/ServiceControlDbContextBase.cs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,48 @@ protected ServiceControlDbContextBase(DbContextOptions options) : base(options)
1111
}
1212

1313
public DbSet<TrialLicenseEntity> TrialLicenses { get; set; }
14+
public DbSet<EndpointSettingsEntity> EndpointSettings { get; set; }
15+
public DbSet<EventLogItemEntity> EventLogItems { get; set; }
16+
public DbSet<MessageRedirectsEntity> MessageRedirects { get; set; }
17+
public DbSet<SubscriptionEntity> Subscriptions { get; set; }
18+
public DbSet<QueueAddressEntity> QueueAddresses { get; set; }
19+
public DbSet<KnownEndpointEntity> KnownEndpoints { get; set; }
20+
public DbSet<CustomCheckEntity> CustomChecks { get; set; }
21+
public DbSet<MessageBodyEntity> MessageBodies { get; set; }
22+
public DbSet<RetryHistoryEntity> RetryHistory { get; set; }
23+
public DbSet<FailedErrorImportEntity> FailedErrorImports { get; set; }
24+
public DbSet<ExternalIntegrationDispatchRequestEntity> ExternalIntegrationDispatchRequests { get; set; }
25+
public DbSet<ArchiveOperationEntity> ArchiveOperations { get; set; }
26+
public DbSet<FailedMessageEntity> FailedMessages { get; set; }
27+
public DbSet<RetryBatchEntity> RetryBatches { get; set; }
28+
public DbSet<FailedMessageRetryEntity> FailedMessageRetries { get; set; }
29+
public DbSet<GroupCommentEntity> GroupComments { get; set; }
30+
public DbSet<RetryBatchNowForwardingEntity> RetryBatchNowForwarding { get; set; }
31+
public DbSet<NotificationsSettingsEntity> NotificationsSettings { get; set; }
1432

1533
protected override void OnModelCreating(ModelBuilder modelBuilder)
1634
{
1735
base.OnModelCreating(modelBuilder);
1836

1937
modelBuilder.ApplyConfiguration(new TrialLicenseConfiguration());
38+
modelBuilder.ApplyConfiguration(new EndpointSettingsConfiguration());
39+
modelBuilder.ApplyConfiguration(new EventLogItemConfiguration());
40+
modelBuilder.ApplyConfiguration(new MessageRedirectsConfiguration());
41+
modelBuilder.ApplyConfiguration(new SubscriptionConfiguration());
42+
modelBuilder.ApplyConfiguration(new QueueAddressConfiguration());
43+
modelBuilder.ApplyConfiguration(new KnownEndpointConfiguration());
44+
modelBuilder.ApplyConfiguration(new CustomCheckConfiguration());
45+
modelBuilder.ApplyConfiguration(new MessageBodyConfiguration());
46+
modelBuilder.ApplyConfiguration(new RetryHistoryConfiguration());
47+
modelBuilder.ApplyConfiguration(new FailedErrorImportConfiguration());
48+
modelBuilder.ApplyConfiguration(new ExternalIntegrationDispatchRequestConfiguration());
49+
modelBuilder.ApplyConfiguration(new ArchiveOperationConfiguration());
50+
modelBuilder.ApplyConfiguration(new FailedMessageConfiguration());
51+
modelBuilder.ApplyConfiguration(new RetryBatchConfiguration());
52+
modelBuilder.ApplyConfiguration(new FailedMessageRetryConfiguration());
53+
modelBuilder.ApplyConfiguration(new GroupCommentConfiguration());
54+
modelBuilder.ApplyConfiguration(new RetryBatchNowForwardingConfiguration());
55+
modelBuilder.ApplyConfiguration(new NotificationsSettingsConfiguration());
2056

2157
OnModelCreatingProvider(modelBuilder);
2258
}

src/ServiceControl.Persistence.Sql.MySQL/.editorconfig

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,8 @@
22

33
# Justification: ServiceControl app has no synchronization context
44
dotnet_diagnostic.CA2007.severity = none
5+
6+
# Disable style rules for auto-generated EF migrations
7+
[Migrations/**.cs]
8+
dotnet_diagnostic.IDE0065.severity = none
9+
generated_code = true

src/ServiceControl.Persistence.Sql.PostgreSQL/.editorconfig

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,8 @@
22

33
# Justification: ServiceControl app has no synchronization context
44
dotnet_diagnostic.CA2007.severity = none
5+
6+
# Disable style rules for auto-generated EF migrations
7+
[Migrations/**.cs]
8+
dotnet_diagnostic.IDE0065.severity = none
9+
generated_code = true

src/ServiceControl.Persistence.Sql.PostgreSQL/PostgreSqlDbContext.cs

Lines changed: 57 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
namespace ServiceControl.Persistence.Sql.PostgreSQL;
22

3+
using System.Text;
34
using Core.DbContexts;
45
using Microsoft.EntityFrameworkCore;
56

@@ -11,20 +12,73 @@ public PostgreSqlDbContext(DbContextOptions<PostgreSqlDbContext> options) : base
1112

1213
protected override void OnModelCreating(ModelBuilder modelBuilder)
1314
{
14-
// Apply lowercase naming convention for PostgreSQL
15+
// Apply snake_case naming convention for PostgreSQL
1516
foreach (var entity in modelBuilder.Model.GetEntityTypes())
1617
{
17-
entity.SetTableName(entity.GetTableName()?.ToLowerInvariant());
18+
var tableName = entity.GetTableName();
19+
if (tableName != null)
20+
{
21+
entity.SetTableName(ToSnakeCase(tableName));
22+
}
1823

1924
foreach (var property in entity.GetProperties())
2025
{
21-
property.SetColumnName(property.GetColumnName().ToLowerInvariant());
26+
var columnName = property.GetColumnName();
27+
if (columnName != null)
28+
{
29+
property.SetColumnName(ToSnakeCase(columnName));
30+
}
31+
}
32+
33+
foreach (var key in entity.GetKeys())
34+
{
35+
var keyName = key.GetName();
36+
if (keyName != null)
37+
{
38+
key.SetName(ToSnakeCase(keyName));
39+
}
40+
}
41+
42+
foreach (var index in entity.GetIndexes())
43+
{
44+
var indexName = index.GetDatabaseName();
45+
if (indexName != null)
46+
{
47+
index.SetDatabaseName(ToSnakeCase(indexName));
48+
}
2249
}
2350
}
2451

2552
base.OnModelCreating(modelBuilder);
2653
}
2754

55+
static string ToSnakeCase(string name)
56+
{
57+
if (string.IsNullOrEmpty(name))
58+
{
59+
return name;
60+
}
61+
62+
var builder = new StringBuilder();
63+
for (int i = 0; i < name.Length; i++)
64+
{
65+
var c = name[i];
66+
if (char.IsUpper(c))
67+
{
68+
if (i > 0 && name[i - 1] != '_')
69+
{
70+
builder.Append('_');
71+
}
72+
builder.Append(char.ToLowerInvariant(c));
73+
}
74+
else
75+
{
76+
builder.Append(c);
77+
}
78+
}
79+
return builder.ToString();
80+
}
81+
2882
protected override void OnModelCreatingProvider(ModelBuilder modelBuilder)
2983
{
3084
// PostgreSQL-specific configurations if needed

src/ServiceControl.Persistence.Sql.PostgreSQL/PostgreSqlPersistence.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ void ConfigureDbContext(IServiceCollection services)
3333
services.AddSingleton<PersistenceSettings>(settings);
3434
services.AddSingleton(settings);
3535

36+
3637
services.AddDbContext<PostgreSqlDbContext>((serviceProvider, options) =>
3738
{
3839
options.UseNpgsql(settings.ConnectionString, npgsqlOptions =>

src/ServiceControl.Persistence.Sql.SqlServer/.editorconfig

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,8 @@
22

33
# Justification: ServiceControl app has no synchronization context
44
dotnet_diagnostic.CA2007.severity = none
5+
6+
# Disable style rules for auto-generated EF migrations
7+
[Migrations/**.cs]
8+
dotnet_diagnostic.IDE0065.severity = none
9+
generated_code = true

0 commit comments

Comments
 (0)