feat(CUB-56): Agent State Database Migration
This commit is contained in:
29
backend/Data/AppDbContext.cs
Normal file
29
backend/Data/AppDbContext.cs
Normal file
@@ -0,0 +1,29 @@
|
||||
using ControlCenter.Api.Configurations;
|
||||
using ControlCenter.Api.Entities;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace ControlCenter.Api.Data;
|
||||
|
||||
/// <summary>
|
||||
/// EF Core DbContext for the Control Center database.
|
||||
/// All table and column names use snake_case via explicit HasColumnName configuration.
|
||||
/// </summary>
|
||||
public class AppDbContext : DbContext
|
||||
{
|
||||
public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { }
|
||||
|
||||
public DbSet<Agent> Agents => Set<Agent>();
|
||||
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
{
|
||||
// Apply all entity type configurations from the Configurations namespace
|
||||
modelBuilder.ApplyConfigurationsFromAssembly(typeof(AgentConfiguration).Assembly);
|
||||
|
||||
// Map the AgentStatus enum to a PostgreSQL enum type named "agent_status"
|
||||
// This must be called after ApplyConfigurations to ensure the model is built
|
||||
// before the enum mapping is applied.
|
||||
modelBuilder.HasPostgresEnum<AgentStatus>();
|
||||
|
||||
base.OnModelCreating(modelBuilder);
|
||||
}
|
||||
}
|
||||
27
backend/Data/AppDbContextFactory.cs
Normal file
27
backend/Data/AppDbContextFactory.cs
Normal file
@@ -0,0 +1,27 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using ControlCenter.Api.Entities;
|
||||
|
||||
namespace ControlCenter.Api.Data;
|
||||
|
||||
/// <summary>
|
||||
/// Design-time factory for AppDbContext, used by EF Core tools (dotnet ef)
|
||||
/// to create migrations without requiring a running application.
|
||||
/// </summary>
|
||||
public class AppDbContextFactory : Microsoft.EntityFrameworkCore.Design.IDesignTimeDbContextFactory<AppDbContext>
|
||||
{
|
||||
public AppDbContext CreateDbContext(string[] args)
|
||||
{
|
||||
var optionsBuilder = new DbContextOptionsBuilder<AppDbContext>();
|
||||
|
||||
// Connection string for design-time operations (migrations).
|
||||
// In production, this comes from appsettings / environment variables.
|
||||
var connectionString = "Host=localhost;Database=control_center;Username=postgres;Password=postgres";
|
||||
|
||||
optionsBuilder.UseNpgsql(connectionString, npgsqlOptions =>
|
||||
{
|
||||
npgsqlOptions.MigrationsAssembly(typeof(AppDbContext).Assembly.FullName);
|
||||
});
|
||||
|
||||
return new AppDbContext(optionsBuilder.Options);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user