Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions src/SnackFlow.Infrastructure/Persistence/AppDbContext.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using SnackFlow.Infrastructure.Persistence.Seeders;
using SnackFlow.Infrastructure.Persistence.Identity;

namespace SnackFlow.Infrastructure.Persistence;
Expand All @@ -16,12 +17,17 @@ public class AppDbContext(DbContextOptions<AppDbContext> options)
ApplicationUserToken
>(options)
{

/// <summary>
/// Procura por todas as classes que implementam a interface <see cref="IEntityTypeConfiguration{T}"/>
/// e aplica os mapeamentos para o banco!
/// </summary>
/// <param name="modelBuilder"></param>
protected override void OnModelCreating(ModelBuilder modelBuilder)
=> modelBuilder.ApplyConfigurationsFromAssembly(typeof(AppDbContext).Assembly);
{
modelBuilder.ApplyConfigurationsFromAssembly(typeof(AppDbContext).Assembly);
modelBuilder.ApplyPermissionsSeed();
modelBuilder.ApplyRoleSeeder();
modelBuilder.ApplyRoleClaimSeeder();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
namespace SnackFlow.Infrastructure.Persistence.Identity;

/// <summary>
/// Representa as permissões associadas a uma aplicação.
/// </summary>
public class ApplicationPermission
{
/// <summary>
/// Obtém ou define o identificador único para a permissão do aplicativo.
/// Esta propriedade é usada para distinguir entre diferentes permissões dentro do sistema.
/// </summary>
public uint Id { get; set; }

/// <summary>
/// Obtém ou define o nome da permissão do aplicativo.
/// Esta propriedade representa o nome único que identifica uma permissão específica.
/// </summary>
public string Name { get; set; } = string.Empty;

/// <summary>
/// Obtém ou define a descrição da permissão do aplicativo.
/// Esta propriedade fornece detalhes sobre o que a permissão específica implica ou permite.
/// </summary>
public string Description { get; set; } = string.Empty;

/// <summary>
/// Obtém ou define a categoria da permissão do aplicativo.
/// Esta propriedade especifica a classificação ou agrupamento ao qual a permissão pertence.
/// </summary>
public string Category { get; set; } = string.Empty;

/// <summary>
/// Obtém ou define um valor indicando se a permissão do aplicativo está ativa.
/// Esta propriedade determina se a permissão específica está atualmente habilitada ou acessível.
/// </summary>
public bool IsActive { get; set; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using SnackFlow.Infrastructure.Persistence.Identity;

namespace SnackFlow.Infrastructure.Persistence.Mappings.Identity;

public class ApplicationPermissionMap
: IEntityTypeConfiguration<ApplicationPermission>
{
public void Configure(EntityTypeBuilder<ApplicationPermission> builder)
{
builder.ToTable("application_permissions");

builder
.HasKey(ap => ap.Id)
.HasName("pk_application_permissions_id");

builder
.Property(ap => ap.Id)
.HasColumnType("integer")
.HasColumnName("id")
.ValueGeneratedNever();

builder
.Property(ap => ap.Name)
.HasColumnType("varchar")
.HasColumnName("name")
.HasMaxLength(256)
.IsRequired();

builder
.Property(ap => ap.Category)
.HasColumnType("varchar")
.HasColumnName("category")
.HasMaxLength(100)
.IsRequired();

builder
.Property(ap => ap.IsActive)
.HasColumnType("boolean")
.HasColumnName("is_active")
.HasDefaultValue(true);
}
}
Loading