using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Identity.EntityFrameworkCore; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using RSecurityBackend.Models.Audit.Db; using RSecurityBackend.Models.Auth.Db; using RSecurityBackend.Models.Generic.Db; using RSecurityBackend.Models.Image; using RSecurityBackend.Models.Notification; using System; using System.IO; namespace RSecurityBackend.DbContext { /// /// Security EF DbContext /// public class RSecurityDbContext : IdentityDbContext where TUser : IdentityUser where TRole : IdentityRole where TKey : IEquatable { /// /// parameterless constructor /// public RSecurityDbContext(DbContextOptions options) : base(options) { } /// /// delete db /// public void DeleteDb() { Database.EnsureDeleted(); } /// /// OnConfiguring /// /// protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { if (!optionsBuilder.IsConfigured) { IConfigurationRoot configuration = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json") .Build(); optionsBuilder.UseSqlServer(configuration.GetConnectionString("DefaultConnection")); } } /// /// /// /// protected override void OnModelCreating(ModelBuilder builder) { base.OnModelCreating(builder); //https://stackoverflow.com/a/34013431/66657 builder.Entity() .HasIndex(u => u.Secret) .IsUnique(); } #region Auth /// /// Permissions /// public DbSet Permissions { get; set; } /// /// User Sessions /// public DbSet Sessions { get; set; } /// /// Signup Queue Items /// public DbSet VerifyQueueItems { get; set; } /// /// General Images /// public DbSet GeneralImages { get; set; } /// /// Captcha Images /// public DbSet CaptchaImages { get; set; } #endregion #region Audit /// /// Audit Logs Events /// public DbSet AuditLogs { get; set; } #endregion #region /// /// long running jobs /// public DbSet LongRunningJobs { get; set; } #endregion #region Notifications /// /// Notifications /// public DbSet Notifications { get; set; } #endregion } }