using IRaCIS.Core.Infrastructure.Encryption;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Microsoft.EntityFrameworkCore.ValueGeneration;

namespace IRaCIS.Core.Infra.EFCore;

/// <summary>
/// 某列保留前面几位，后续加密
/// </summary>
public class PartialEncryptionConverter : ValueConverter<string, string>
{
    private readonly int _unencryptedPrefixLength;

    public PartialEncryptionConverter(int unencryptedPrefixLength)
        : base(
            plainText => AesEncryption.EncryptPartial(plainText, unencryptedPrefixLength),
            encryptedText => AesEncryption.DecryptPartial(encryptedText, unencryptedPrefixLength))
    {
        _unencryptedPrefixLength = unencryptedPrefixLength;
    }
}
