using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Options; using ProjectManager.Backend.Entities; using ProjectManager.Backend.Options; namespace ProjectManager.Backend; public class DatabaseContext : DbContext { private readonly GeneralOptions _options; public DbSet Users { get; set; } public DbSet Tokens { get; set; } public DbSet Projects { get; set; } public DatabaseContext(IOptions options) { _options = options.Value; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseMySQL(_options.Database); } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity(entry => { entry.HasKey(e => e.UserId); entry.Property(e => e.Email); entry.Property(e => e.Username); entry.Property(e => e.Password); entry.Property(e => e.MaxProjects); }); modelBuilder.Entity(entry => { entry.HasKey(e => e.TokenId); entry.Property(e => e.UserId); entry.Property(e => e.ClientIp); entry.Property(e => e.Created); }); modelBuilder.Entity(entry => { entry.HasKey(e => e.ProjectId); entry.Property(e => e.OwnerId); entry.Property(e => e.Name); entry.Property(e => e.Port); entry.Property(e => e.ContainerName); }); } }