( template database.Template, )
| 982 | } |
| 983 | |
| 984 | func (api *API) convertTemplate( |
| 985 | template database.Template, |
| 986 | ) codersdk.Template { |
| 987 | templateAccessControl := (*(api.Options.AccessControlStore.Load())).GetTemplateAccessControl(template) |
| 988 | |
| 989 | owners := 0 |
| 990 | o, ok := api.metricsCache.TemplateWorkspaceOwners(template.ID) |
| 991 | if ok { |
| 992 | owners = o |
| 993 | } |
| 994 | |
| 995 | buildTimeStats := api.metricsCache.TemplateBuildTimeStats(template.ID) |
| 996 | |
| 997 | autostopRequirementWeeks := template.AutostopRequirementWeeks |
| 998 | if autostopRequirementWeeks < 1 { |
| 999 | autostopRequirementWeeks = 1 |
| 1000 | } |
| 1001 | |
| 1002 | portSharer := *(api.PortSharer.Load()) |
| 1003 | maxPortShareLevel := portSharer.ConvertMaxLevel(template.MaxPortSharingLevel) |
| 1004 | |
| 1005 | return codersdk.Template{ |
| 1006 | ID: template.ID, |
| 1007 | CreatedAt: template.CreatedAt, |
| 1008 | UpdatedAt: template.UpdatedAt, |
| 1009 | OrganizationID: template.OrganizationID, |
| 1010 | OrganizationName: template.OrganizationName, |
| 1011 | OrganizationDisplayName: template.OrganizationDisplayName, |
| 1012 | OrganizationIcon: template.OrganizationIcon, |
| 1013 | Name: template.Name, |
| 1014 | DisplayName: template.DisplayName, |
| 1015 | Provisioner: codersdk.ProvisionerType(template.Provisioner), |
| 1016 | ActiveVersionID: template.ActiveVersionID, |
| 1017 | ActiveUserCount: owners, |
| 1018 | BuildTimeStats: buildTimeStats, |
| 1019 | Description: template.Description, |
| 1020 | Icon: template.Icon, |
| 1021 | DefaultTTLMillis: time.Duration(template.DefaultTTL).Milliseconds(), |
| 1022 | ActivityBumpMillis: time.Duration(template.ActivityBump).Milliseconds(), |
| 1023 | CreatedByID: template.CreatedBy, |
| 1024 | CreatedByName: template.CreatedByUsername, |
| 1025 | AllowUserAutostart: template.AllowUserAutostart, |
| 1026 | AllowUserAutostop: template.AllowUserAutostop, |
| 1027 | AllowUserCancelWorkspaceJobs: template.AllowUserCancelWorkspaceJobs, |
| 1028 | FailureTTLMillis: time.Duration(template.FailureTTL).Milliseconds(), |
| 1029 | TimeTilDormantMillis: time.Duration(template.TimeTilDormant).Milliseconds(), |
| 1030 | TimeTilDormantAutoDeleteMillis: time.Duration(template.TimeTilDormantAutoDelete).Milliseconds(), |
| 1031 | AutostopRequirement: codersdk.TemplateAutostopRequirement{ |
| 1032 | DaysOfWeek: codersdk.BitmapToWeekdays(uint8(template.AutostopRequirementDaysOfWeek)), // #nosec G115 - Safe conversion as AutostopRequirementDaysOfWeek is a 7-bit bitmap |
| 1033 | Weeks: autostopRequirementWeeks, |
| 1034 | }, |
| 1035 | AutostartRequirement: codersdk.TemplateAutostartRequirement{ |
| 1036 | DaysOfWeek: codersdk.BitmapToWeekdays(template.AutostartAllowedDays()), |
| 1037 | }, |
| 1038 | // These values depend on entitlements and come from the templateAccessControl |
| 1039 | RequireActiveVersion: templateAccessControl.RequireActiveVersion, |
| 1040 | Deprecated: templateAccessControl.IsDeprecated(), |
| 1041 | DeprecationMessage: templateAccessControl.Deprecated, |
no test coverage detected