using Microsoft.EntityFrameworkCore;
using Jdb.Api.Models;
namespace Jdb.Api.Data
{
public class JdbContext : DbContext
{
public JdbContext(DbContextOptions<JdbContext> options) : base(options)
{
}
public DbSet<User> Users { get; set; }
public DbSet<Congregation> Congregations { get; set; }
public DbSet<RefreshToken> RefreshTokens { get; set; }
public DbSet<PasswordResetToken> PasswordResetTokens { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Congregation>(entity =>
{
entity.ToTable("congregations");
entity.Property(e => e.Id).HasColumnName("id");
entity.Property(e => e.Name).HasColumnName("name");
entity.Property(e => e.Description).HasColumnName("description");
entity.Property(e => e.Phone).HasColumnName("phone");
entity.Property(e => e.Email).HasColumnName("email");
entity.Property(e => e.ZipCode).HasColumnName("zip_code");
entity.Property(e => e.Address).HasColumnName("address");
entity.Property(e => e.Number).HasColumnName("number");
entity.Property(e => e.Complement).HasColumnName("complement");
entity.Property(e => e.Neighborhood).HasColumnName("neighborhood");
entity.Property(e => e.City).HasColumnName("city");
entity.Property(e => e.State).HasColumnName("state");
entity.Property(e => e.Status).HasColumnName("status");
entity.Property(e => e.CreatedAt).HasColumnName("created_at");
entity.Property(e => e.UpdatedAt).HasColumnName("updated_at");
});
modelBuilder.Entity<User>(entity =>
{
entity.ToTable("users");
entity.Property(e => e.Id).HasColumnName("id");
entity.Property(e => e.CongregationId).HasColumnName("congregation_id");
entity.Property(e => e.Name).HasColumnName("name");
entity.Property(e => e.Email).HasColumnName("email");
entity.Property(e => e.Password).HasColumnName("password");
entity.Property(e => e.Status).HasColumnName("status");
entity.Property(e => e.LastLoginAt).HasColumnName("last_login_at");
entity.Property(e => e.CreatedAt).HasColumnName("created_at");
entity.Property(e => e.UpdatedAt).HasColumnName("updated_at");
entity.HasOne(e => e.Congregation)
.WithMany(e => e.Users)
.HasForeignKey(e => e.CongregationId)
.OnDelete(DeleteBehavior.Restrict);
});
modelBuilder.Entity<User>()
.HasIndex(u => u.Email)
.IsUnique();
modelBuilder.Entity<RefreshToken>(entity =>
{
entity.ToTable("refresh_tokens");
entity.Property(e => e.Id).HasColumnName("id");
entity.Property(e => e.UserId).HasColumnName("user_id");
entity.Property(e => e.TokenHash).HasColumnName("token_hash");
entity.Property(e => e.ExpiresAt).HasColumnName("expires_at");
entity.Property(e => e.RevokedAt).HasColumnName("revoked_at");
entity.Property(e => e.CreatedAt).HasColumnName("created_at");
entity.HasIndex(e => e.TokenHash).IsUnique();
entity.HasOne(e => e.User)
.WithMany(e => e.RefreshTokens)
.HasForeignKey(e => e.UserId)
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity<PasswordResetToken>(entity =>
{
entity.ToTable("password_reset_tokens");
entity.Property(e => e.Id).HasColumnName("id");
entity.Property(e => e.UserId).HasColumnName("user_id");
entity.Property(e => e.TokenHash).HasColumnName("token_hash");
entity.Property(e => e.ExpiresAt).HasColumnName("expires_at");
entity.Property(e => e.UsedAt).HasColumnName("used_at");
entity.Property(e => e.CreatedAt).HasColumnName("created_at");
entity.HasIndex(e => e.TokenHash).IsUnique();
entity.HasOne(e => e.User)
.WithMany(e => e.PasswordResetTokens)
.HasForeignKey(e => e.UserId)
.OnDelete(DeleteBehavior.Cascade);
});
}
}
}
|