in src/dotnet/AspireWorker/AspireHost/ResourceExtensions.cs [15:47]
internal static ResourceModel ToModel(this Resource resource) => new(
resource.Name,
MapType(resource.ResourceType),
resource.DisplayName,
resource.Uid,
resource.HasState ? MapState(resource.State) : null,
resource.HasStateStyle ? MapStyle(resource.StateStyle) : null,
resource.CreatedAt?.ToDateTime(),
resource.StartedAt?.ToDateTime(),
resource.StoppedAt?.ToDateTime(),
resource.Properties.Select(it => it.ToModel()).ToArray(),
resource.Environment.Select(it => it.ToModel()).ToArray(),
resource.Urls.Select(it => it.ToModel()).ToArray(),
resource.Volumes.Select(it => it.ToModel()).ToArray(),
resource.HealthReports.Select(it => it.ToModel()).ToArray(),
resource.Commands.Select(it => it.ToModel()).ToArray(),
resource.Relationships.Select(it => it.ToModel()).ToArray(),
resource.IsHidden
);
private static ResourceType MapType(string type) => type switch
{
"Project" => ResourceType.Project,
"Container" => ResourceType.Container,
"Executable" => ResourceType.Executable,
"Parameter" => ResourceType.Parameter,
"ExternalService" => ResourceType.ExternalService,
"MongoDBDatabaseResource" => ResourceType.MongoDB,
"MySqlDatabaseResource" => ResourceType.MySql,
"PostgresDatabaseResource" => ResourceType.Postgres,
"SqlServerDatabaseResource" => ResourceType.SqlServer,
_ => ResourceType.Unknown
};