Files
CMS/src/CMSMicroservice.Infrastructure/Persistence/Configurations/UserWalletHistoryConfiguration.cs
T
masoodafar-web 10d2ca20d1
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 9m11s
refactor: rename UserWalletChangeLog→UserWalletHistory, add History interceptor & migration
- Rename UserWalletChangeLog to UserWalletHistory across 54+ files (entities, configs, DTOs, commands, queries, protos, services)
- Rename 34 files and 11 directories accordingly
- Rename proto file userwalletchangelog.proto → userwallethistory.proto
- Add IHasHistory<T> generic interface for history auto-tracking
- Implement IHasHistory<PackageHistory> on Package entity
- Add HistoryTrackingSaveChangesInterceptor (reflection-based, auto-fills Old* values from OriginalValues)
- Wire interceptor in DI and ApplicationDbContext
- Add EF migration Q27_HistoryTables_And_RenameWalletHistory:
  * RenameTable UserWalletChangeLogs → UserWalletHistories (preserves data)
  * Rename PK, FK constraints and indexes via sp_rename
  * CreateTable ClubMembershipCycleHistories + PackageHistories
2026-02-27 06:22:15 +03:30

36 lines
1.6 KiB
C#

using CMSMicroservice.Domain.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace CMSMicroservice.Infrastructure.Persistence.Configurations;
//آدرس کاربر
public class UserWalletHistoryConfiguration : IEntityTypeConfiguration<UserWalletHistory>
{
public void Configure(EntityTypeBuilder<UserWalletHistory> builder)
{
builder.HasQueryFilter(p => !p.IsDeleted);
builder.Ignore(entity => entity.DomainEvents);
builder.HasKey(entity => entity.Id);
builder.Property(entity => entity.Id).UseIdentityColumn();
builder
.HasOne(entity => entity.Wallet)
.WithMany(entity => entity.UserWalletHistories)
.HasForeignKey(entity => entity.WalletId)
.IsRequired(true);
builder.Property(entity => entity.CurrentBalance).IsRequired(true);
builder.Property(entity => entity.ChangeValue).IsRequired(true);
builder.Property(entity => entity.CurrentNetworkBalance).IsRequired(true);
builder.Property(entity => entity.ChangeNerworkValue).IsRequired(true);
builder.Property(entity => entity.IsIncrease).IsRequired(true);
builder.Property(entity => entity.RefrenceId).IsRequired(false);
builder.Property(entity => entity.PackageId).IsRequired(false);
// رابطه با Package (nullable)
builder.HasOne(entity => entity.Package)
.WithMany()
.HasForeignKey(entity => entity.PackageId)
.IsRequired(false)
.OnDelete(DeleteBehavior.Restrict);
}
}