using Microsoft.EntityFrameworkCore.Storage.ValueConversion;

namespace PolyTrader.Core.Security
{
    /// <summary>
    /// EF-Core-ValueConverter, der einen String beim Speichern über <see cref="SecretProtection"/>
    /// verschlüsselt und beim Laden entschlüsselt. Transparent für den restlichen Code (die
    /// Property bleibt ein normaler String). Auf sensible Spalten in <c>CoreDbContext</c> angewandt.
    /// </summary>
    public sealed class EncryptedStringConverter : ValueConverter<string, string>
    {
        public EncryptedStringConverter()
            : base(v => SecretProtection.Protect(v), v => SecretProtection.Unprotect(v))
        {
        }
    }
}
