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
}
}