internal static ResourceModel ToModel()

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
    };