(dbApps []database.WorkspaceApp, statuses []database.WorkspaceAppStatus, agent database.WorkspaceAgent, ownerName string, workspace database.WorkspaceTable)
| 667 | } |
| 668 | |
| 669 | func Apps(dbApps []database.WorkspaceApp, statuses []database.WorkspaceAppStatus, agent database.WorkspaceAgent, ownerName string, workspace database.WorkspaceTable) []codersdk.WorkspaceApp { |
| 670 | sort.Slice(dbApps, func(i, j int) bool { |
| 671 | if dbApps[i].DisplayOrder != dbApps[j].DisplayOrder { |
| 672 | return dbApps[i].DisplayOrder < dbApps[j].DisplayOrder |
| 673 | } |
| 674 | if dbApps[i].DisplayName != dbApps[j].DisplayName { |
| 675 | return dbApps[i].DisplayName < dbApps[j].DisplayName |
| 676 | } |
| 677 | return dbApps[i].Slug < dbApps[j].Slug |
| 678 | }) |
| 679 | |
| 680 | statusesByAppID := map[uuid.UUID][]database.WorkspaceAppStatus{} |
| 681 | for _, status := range statuses { |
| 682 | statusesByAppID[status.AppID] = append(statusesByAppID[status.AppID], status) |
| 683 | } |
| 684 | |
| 685 | apps := make([]codersdk.WorkspaceApp, 0) |
| 686 | for _, dbApp := range dbApps { |
| 687 | statuses := statusesByAppID[dbApp.ID] |
| 688 | apps = append(apps, codersdk.WorkspaceApp{ |
| 689 | ID: dbApp.ID, |
| 690 | URL: dbApp.Url.String, |
| 691 | External: dbApp.External, |
| 692 | Slug: dbApp.Slug, |
| 693 | DisplayName: dbApp.DisplayName, |
| 694 | Command: dbApp.Command.String, |
| 695 | Icon: dbApp.Icon, |
| 696 | Subdomain: dbApp.Subdomain, |
| 697 | SubdomainName: AppSubdomain(dbApp, agent.Name, workspace.Name, ownerName), |
| 698 | SharingLevel: codersdk.WorkspaceAppSharingLevel(dbApp.SharingLevel), |
| 699 | Healthcheck: codersdk.Healthcheck{ |
| 700 | URL: dbApp.HealthcheckUrl, |
| 701 | Interval: dbApp.HealthcheckInterval, |
| 702 | Threshold: dbApp.HealthcheckThreshold, |
| 703 | }, |
| 704 | Health: codersdk.WorkspaceAppHealth(dbApp.Health), |
| 705 | Group: dbApp.DisplayGroup.String, |
| 706 | Hidden: dbApp.Hidden, |
| 707 | OpenIn: codersdk.WorkspaceAppOpenIn(dbApp.OpenIn), |
| 708 | Tooltip: dbApp.Tooltip, |
| 709 | Statuses: WorkspaceAppStatuses(statuses), |
| 710 | }) |
| 711 | } |
| 712 | return apps |
| 713 | } |
| 714 | |
| 715 | func WorkspaceAppStatuses(statuses []database.WorkspaceAppStatus) []codersdk.WorkspaceAppStatus { |
| 716 | return slice.List(statuses, WorkspaceAppStatus) |
no test coverage detected