* 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
34 lines
1 KiB
C#
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;
|
|
}
|
|
}
|