Files
watcher/Watcher/Data/AppDbContext.cs
2025-10-29 20:52:16 +01:00

59 lines
1.7 KiB
C#

using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Watcher.Models;
namespace Watcher.Data;
public class AppDbContext : DbContext
{
private readonly IConfiguration _configuration;
public AppDbContext(DbContextOptions<AppDbContext> options, IConfiguration configuration)
: base(options)
{
_configuration = configuration;
}
public DbSet<Container> Containers { get; set; }
public DbSet<Server> Servers { get; set; }
public DbSet<Image> Images { get; set; }
public DbSet<LogEvent> LogEvents { get; set; }
public DbSet<Metric> Metrics { get; set; }
public DbSet<Tag> Tags { get; set; }
public DbSet<ContainerMetric> ContainerMetrics { get; set; }
public DbSet<User> Users { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
var provider = _configuration["Database:Provider"];
if (provider == "MySql")
{
var connStr = _configuration.GetConnectionString("MySql")
?? _configuration["Database:ConnectionStrings:MySql"];
optionsBuilder.UseMySql(connStr, ServerVersion.AutoDetect(connStr));
}
else if (provider == "Sqlite")
{
var connStr = _configuration.GetConnectionString("Sqlite")
?? _configuration["Database:ConnectionStrings:Sqlite"];
optionsBuilder.UseSqlite(connStr);
}
else
{
throw new Exception("Unsupported database provider configured.");
}
}
}
}