Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 4f898d9

Browse files
committed
slice.ToStringEnums
1 parent 3b4d1e0 commit 4f898d9

File tree

3 files changed

+13
-17
lines changed

3 files changed

+13
-17
lines changed

cli/provisionerjobs.go

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"golang.org/x/xerrors"
77

88
"github.com/coder/coder/v2/cli/cliui"
9+
"github.com/coder/coder/v2/coderd/util/slice"
910
"github.com/coder/coder/v2/codersdk"
1011
"github.com/coder/serpent"
1112
)
@@ -59,7 +60,7 @@ func (r *RootCmd) provisionerJobsList() *serpent.Command {
5960
}
6061

6162
jobs, err := client.OrganizationProvisionerJobs(ctx, org.ID, &codersdk.OrganizationProvisionerJobsOptions{
62-
Status: convertSlice([]codersdk.ProvisionerJobStatus{}, status),
63+
Status: slice.ToStringEnums[codersdk.ProvisionerJobStatus](status),
6364
Limit: int(limit),
6465
})
6566
if err != nil {
@@ -100,7 +101,7 @@ func (r *RootCmd) provisionerJobsList() *serpent.Command {
100101
FlagShorthand: "s",
101102
Env: "CODER_PROVISIONER_JOB_LIST_STATUS",
102103
Description: "Filter by job status.",
103-
Value: serpent.EnumArrayOf(&status, convertSlice([]string{}, codersdk.ProvisionerJobStatusEnums())...),
104+
Value: serpent.EnumArrayOf(&status, slice.ToStrings(codersdk.ProvisionerJobStatusEnums())...),
104105
},
105106
{
106107
Flag: "limit",
@@ -117,10 +118,3 @@ func (r *RootCmd) provisionerJobsList() *serpent.Command {
117118

118119
return cmd
119120
}
120-
121-
func convertSlice[D, S ~string](dstType []D, src []S) []D {
122-
for _, item := range src {
123-
dstType = append(dstType, D(item))
124-
}
125-
return dstType
126-
}

coderd/provisionerjobs.go

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"github.com/coder/coder/v2/coderd/database/pubsub"
2121
"github.com/coder/coder/v2/coderd/httpapi"
2222
"github.com/coder/coder/v2/coderd/httpmw"
23+
"github.com/coder/coder/v2/coderd/util/slice"
2324
"github.com/coder/coder/v2/codersdk"
2425
"github.com/coder/coder/v2/codersdk/wsjson"
2526
"github.com/coder/coder/v2/provisionersdk"
@@ -55,7 +56,7 @@ func (api *API) provisionerJobs(rw http.ResponseWriter, r *http.Request) {
5556

5657
jobs, err := api.Database.GetProvisionerJobsByOrganizationAndStatusWithQueuePositionAndProvisioner(ctx, database.GetProvisionerJobsByOrganizationAndStatusWithQueuePositionAndProvisionerParams{
5758
OrganizationID: uuid.NullUUID{UUID: org.ID, Valid: true},
58-
Status: convertSlice([]database.ProvisionerJobStatus(nil), status),
59+
Status: slice.ToStringEnums[database.ProvisionerJobStatus](status),
5960
Limit: sql.NullInt32{Int32: limit, Valid: limit > 0},
6061
})
6162
if err != nil {
@@ -77,13 +78,6 @@ func (api *API) provisionerJobs(rw http.ResponseWriter, r *http.Request) {
7778
}))
7879
}
7980

80-
func convertSlice[D, S ~string](dstType []D, src []S) []D {
81-
for _, item := range src {
82-
dstType = append(dstType, D(item))
83-
}
84-
return dstType
85-
}
86-
8781
// Returns provisioner logs based on query parameters.
8882
// The intended usage for a client to stream all logs (with JS API):
8983
// GET /logs

coderd/util/slice/slice.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,14 @@ func ToStrings[T ~string](a []T) []string {
1313
return tmp
1414
}
1515

16+
func ToStringEnums[E ~string](a []string) []E {
17+
tmp := make([]E, 0, len(a))
18+
for _, v := range a {
19+
tmp = append(tmp, E(v))
20+
}
21+
return tmp
22+
}
23+
1624
// Omit creates a new slice with the arguments omitted from the list.
1725
func Omit[T comparable](a []T, omits ...T) []T {
1826
tmp := make([]T, 0, len(a))

0 commit comments

Comments
 (0)