elsa-core/src/modules/Elsa.Secrets/Services/SecretModelMapper.cs
Sipke Schoorstra e2e00ff235
Add secrets module (#7468)
* Add secrets module

* Address Greptile feedback for secrets module

* Handle unavailable secrets in provider adapter

* Address path combine review comments

* Address additional Greptile secrets review

* Address final Greptile secrets feedback

* Handle secrets test payload failures

* address greptile feedback on secrets rotation

* fix secret recreation concurrency

* address greptile secrets followups

* address greptile secrets reliability feedback

* align secret store capabilities
2026-05-20 11:48:01 +02:00

34 lines
1 KiB
C#

namespace Elsa.Secrets.Services;
public static class SecretModelMapper
{
public static SecretModel ToModel(this Secret secret)
{
var current = secret.LatestActiveVersion;
return new SecretModel
{
Id = secret.Id,
Name = secret.Name,
DisplayName = secret.DisplayName,
Description = secret.Description,
TypeName = secret.TypeName,
StoreName = secret.StoreName,
Scope = secret.Scope,
Tags = secret.Tags.ToList(),
Status = ResolveStatus(secret),
CurrentVersion = current?.Version,
CreatedAt = secret.CreatedAt,
UpdatedAt = secret.UpdatedAt,
ExpiresAt = current?.ExpiresAt
};
}
private static SecretStatus ResolveStatus(Secret secret)
{
if (secret.Status != SecretStatus.Active)
return secret.Status;
return secret.LatestActiveVersion == null && secret.Versions.Any(x => x.IsExpired()) ? SecretStatus.Expired : secret.Status;
}
}