diff --git a/backend/src/Squidex.Data.EntityFramework/Infrastructure/Migrations/DatabaseCreator.cs b/backend/src/Squidex.Data.EntityFramework/Infrastructure/Migrations/DatabaseCreator.cs deleted file mode 100644 index 852f918a4..000000000 --- a/backend/src/Squidex.Data.EntityFramework/Infrastructure/Migrations/DatabaseCreator.cs +++ /dev/null @@ -1,42 +0,0 @@ -// ========================================================================== -// Squidex Headless CMS -// ========================================================================== -// Copyright (c) Squidex UG (haftungsbeschraenkt) -// All rights reserved. Licensed under the MIT license. -// ========================================================================== - -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Storage; -using Squidex.Hosting; - -#pragma warning disable RECS0108 // Warns about static fields in generic types - -namespace Squidex.Infrastructure.Migrations; - -public sealed class DatabaseCreator(IDbContextFactory dbContextFactory) : IInitializable - where TContext : DbContext -{ - private static readonly TimeSpan WaitTime = TimeSpan.FromSeconds(30); - - public int Order => -1000; - - public async Task InitializeAsync( - CancellationToken ct) - { - await using var dbContext = await dbContextFactory.CreateDbContextAsync(ct); - - using var cts = new CancellationTokenSource(WaitTime); - while (!await dbContext.Database.CanConnectAsync(cts.Token)) - { - await Task.Delay(100, cts.Token); - } - - if (dbContext.Database.GetService() is not RelationalDatabaseCreator relationalDatabaseCreator) - { - return; - } - - await relationalDatabaseCreator.EnsureCreatedAsync(ct); - } -} diff --git a/backend/src/Squidex.Data.EntityFramework/Infrastructure/Queries/SqlDialectInitializer.cs b/backend/src/Squidex.Data.EntityFramework/Infrastructure/Queries/SqlDialectInitializer.cs deleted file mode 100644 index 13a5efe71..000000000 --- a/backend/src/Squidex.Data.EntityFramework/Infrastructure/Queries/SqlDialectInitializer.cs +++ /dev/null @@ -1,26 +0,0 @@ -// ========================================================================== -// Squidex Headless CMS -// ========================================================================== -// Copyright (c) Squidex UG (haftungsbeschraenkt) -// All rights reserved. Licensed under the MIT license. -// ========================================================================== - -using Microsoft.EntityFrameworkCore; -using Squidex.Hosting; - -namespace Squidex.Infrastructure.Queries; - -public sealed class SqlDialectInitializer(IDbContextFactory dbContextFactory) - : IInitializable where TContext : DbContext -{ - public async Task InitializeAsync(CancellationToken ct) - { - await using var dbContext = await dbContextFactory.CreateDbContextAsync(ct); - if (dbContext is not IDbContextWithDialect withDialect) - { - return; - } - - await withDialect.Dialect.InitializeAsync(dbContext, ct); - } -} diff --git a/backend/tests/Squidex.Data.Tests/EntityFramework/TestHelpers/MySqlFixture.cs b/backend/tests/Squidex.Data.Tests/EntityFramework/TestHelpers/MySqlFixture.cs index b497a6003..e926064ea 100644 --- a/backend/tests/Squidex.Data.Tests/EntityFramework/TestHelpers/MySqlFixture.cs +++ b/backend/tests/Squidex.Data.Tests/EntityFramework/TestHelpers/MySqlFixture.cs @@ -11,9 +11,7 @@ using Microsoft.Extensions.DependencyInjection; using PhenX.EntityFrameworkCore.BulkInsert.MySql; using Squidex.Domain.Apps.Core.TestHelpers; using Squidex.Hosting; -using Squidex.Infrastructure; using Squidex.Infrastructure.Migrations; -using Squidex.Infrastructure.Queries; using Squidex.Providers.MySql; using Squidex.Providers.MySql.Content; using Testcontainers.MySql; @@ -66,15 +64,16 @@ public class MySqlFixture(string? reuseId = null) : IAsyncLifetime, ISqlContentF w.Ignore(RelationalEventId.PendingModelChangesWarning)); }) .AddSingleton() - .AddSingletonAs>().Done() + .AddSingleton>() .AddSingleton(TestUtils.DefaultSerializer) - .AddSingleton>() .BuildServiceProvider(); foreach (var service in services.GetRequiredService>()) { await service.InitializeAsync(default); } + + await services.GetRequiredService>().InitializeAsync(default); } public async ValueTask DisposeAsync() diff --git a/backend/tests/Squidex.Data.Tests/EntityFramework/TestHelpers/PostgresFixture.cs b/backend/tests/Squidex.Data.Tests/EntityFramework/TestHelpers/PostgresFixture.cs index db5d7e09c..f66026637 100644 --- a/backend/tests/Squidex.Data.Tests/EntityFramework/TestHelpers/PostgresFixture.cs +++ b/backend/tests/Squidex.Data.Tests/EntityFramework/TestHelpers/PostgresFixture.cs @@ -11,9 +11,7 @@ using Microsoft.Extensions.DependencyInjection; using PhenX.EntityFrameworkCore.BulkInsert.PostgreSql; using Squidex.Domain.Apps.Core.TestHelpers; using Squidex.Hosting; -using Squidex.Infrastructure; using Squidex.Infrastructure.Migrations; -using Squidex.Infrastructure.Queries; using Squidex.Providers.Postgres; using Squidex.Providers.Postgres.Content; using Testcontainers.PostgreSql; @@ -61,15 +59,16 @@ public class PostgresFixture(string? reuseId) : IAsyncLifetime, ISqlContentFixtu w.Ignore(RelationalEventId.PendingModelChangesWarning)); }) .AddSingleton() - .AddSingletonAs>().Done() + .AddSingleton>() .AddSingleton(TestUtils.DefaultSerializer) - .AddSingleton>() .BuildServiceProvider(); foreach (var service in services.GetRequiredService>()) { await service.InitializeAsync(default); } + + await services.GetRequiredService>().InitializeAsync(default); } public async ValueTask DisposeAsync() diff --git a/backend/tests/Squidex.Data.Tests/EntityFramework/TestHelpers/SqlServerFixture.cs b/backend/tests/Squidex.Data.Tests/EntityFramework/TestHelpers/SqlServerFixture.cs index 26a5608f9..2b86ca40f 100644 --- a/backend/tests/Squidex.Data.Tests/EntityFramework/TestHelpers/SqlServerFixture.cs +++ b/backend/tests/Squidex.Data.Tests/EntityFramework/TestHelpers/SqlServerFixture.cs @@ -12,9 +12,7 @@ using Microsoft.Extensions.DependencyInjection; using PhenX.EntityFrameworkCore.BulkInsert.SqlServer; using Squidex.Domain.Apps.Core.TestHelpers; using Squidex.Hosting; -using Squidex.Infrastructure; using Squidex.Infrastructure.Migrations; -using Squidex.Infrastructure.Queries; using Squidex.Providers.SqlServer; using Squidex.Providers.SqlServer.Content; using Testcontainers.MsSql; @@ -63,15 +61,16 @@ public class SqlServerFixture(string? reuseId = null) : IAsyncLifetime, ISqlCont w.Ignore(RelationalEventId.PendingModelChangesWarning)); }) .AddSingleton() - .AddSingletonAs>().Done() + .AddSingleton>() .AddSingleton(TestUtils.DefaultSerializer) - .AddSingleton>() .BuildServiceProvider(); foreach (var service in services.GetRequiredService>()) { await service.InitializeAsync(default); } + + await services.GetRequiredService>().InitializeAsync(default); } public async ValueTask DisposeAsync()