WalletBalanceConfiguration.cs 987 B

1234567891011121314151617181920212223242526
  1. using Domain.Entities.Wallets;
  2. using Microsoft.EntityFrameworkCore;
  3. using Microsoft.EntityFrameworkCore.Metadata.Builders;
  4. namespace Infrastructure.Persistence.Configurations.Wallets;
  5. public sealed class WalletBalanceConfiguration : IEntityTypeConfiguration<WalletBalance>
  6. {
  7. public void Configure(EntityTypeBuilder<WalletBalance> builder)
  8. {
  9. builder.ToTable(nameof(WalletBalance), t => t.HasComment("회원 지갑 잔액"));
  10. builder.HasKey(x => x.ID);
  11. builder.Property(x => x.WalletKey).IsRequired();
  12. builder.Property(x => x.Type).HasConversion<int>().IsRequired();
  13. // Money ValueObject
  14. builder.OwnsOne(x => x.Amount, money =>
  15. {
  16. money.Property(p => p.Value).HasPrecision(18, 0).HasColumnName("Amount").IsRequired();
  17. money.Property(p => p.Currency).HasColumnName("Currency").HasMaxLength(10).IsRequired();
  18. });
  19. builder.HasIndex(x => new { x.WalletKey, x.Type }).IsUnique();
  20. }
  21. }