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

Skip to content

Commit 546157b

Browse files
feat: Make template name editable (#3538)
1 parent 4b646cc commit 546157b

File tree

9 files changed

+30
-3
lines changed

9 files changed

+30
-3
lines changed

cli/templateedit.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313

1414
func templateEdit() *cobra.Command {
1515
var (
16+
name string
1617
description string
1718
maxTTL time.Duration
1819
minAutostartInterval time.Duration
@@ -38,6 +39,7 @@ func templateEdit() *cobra.Command {
3839

3940
// NOTE: coderd will ignore empty fields.
4041
req := codersdk.UpdateTemplateMeta{
42+
Name: name,
4143
Description: description,
4244
MaxTTLMillis: maxTTL.Milliseconds(),
4345
MinAutostartIntervalMillis: minAutostartInterval.Milliseconds(),
@@ -52,6 +54,7 @@ func templateEdit() *cobra.Command {
5254
},
5355
}
5456

57+
cmd.Flags().StringVarP(&name, "name", "", "", "Edit the template name")
5558
cmd.Flags().StringVarP(&description, "description", "", "", "Edit the template description")
5659
cmd.Flags().DurationVarP(&maxTTL, "max-ttl", "", 0, "Edit the template maximum time before shutdown")
5760
cmd.Flags().DurationVarP(&minAutostartInterval, "min-autostart-interval", "", 0, "Edit the template minimum autostart interval")

cli/templateedit_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,15 @@ func TestTemplateEdit(t *testing.T) {
3030
})
3131

3232
// Test the cli command.
33+
name := "new-template-name"
3334
desc := "lorem ipsum dolor sit amet et cetera"
3435
maxTTL := 12 * time.Hour
3536
minAutostartInterval := time.Minute
3637
cmdArgs := []string{
3738
"templates",
3839
"edit",
3940
template.Name,
41+
"--name", name,
4042
"--description", desc,
4143
"--max-ttl", maxTTL.String(),
4244
"--min-autostart-interval", minAutostartInterval.String(),
@@ -51,6 +53,7 @@ func TestTemplateEdit(t *testing.T) {
5153
// Assert that the template metadata changed.
5254
updated, err := client.Template(context.Background(), template.ID)
5355
require.NoError(t, err)
56+
assert.Equal(t, name, updated.Name)
5457
assert.Equal(t, desc, updated.Description)
5558
assert.Equal(t, maxTTL.Milliseconds(), updated.MaxTTLMillis)
5659
assert.Equal(t, minAutostartInterval.Milliseconds(), updated.MinAutostartIntervalMillis)
@@ -73,6 +76,7 @@ func TestTemplateEdit(t *testing.T) {
7376
"templates",
7477
"edit",
7578
template.Name,
79+
"--name", template.Name,
7680
"--description", template.Description,
7781
"--max-ttl", (time.Duration(template.MaxTTLMillis) * time.Millisecond).String(),
7882
"--min-autostart-interval", (time.Duration(template.MinAutostartIntervalMillis) * time.Millisecond).String(),
@@ -87,6 +91,7 @@ func TestTemplateEdit(t *testing.T) {
8791
// Assert that the template metadata did not change.
8892
updated, err := client.Template(context.Background(), template.ID)
8993
require.NoError(t, err)
94+
assert.Equal(t, template.Name, updated.Name)
9095
assert.Equal(t, template.Description, updated.Description)
9196
assert.Equal(t, template.MaxTTLMillis, updated.MaxTTLMillis)
9297
assert.Equal(t, template.MinAutostartIntervalMillis, updated.MinAutostartIntervalMillis)

coderd/database/databasefake/databasefake.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -880,6 +880,7 @@ func (q *fakeQuerier) UpdateTemplateMetaByID(_ context.Context, arg database.Upd
880880
continue
881881
}
882882
tpl.UpdatedAt = database.Now()
883+
tpl.Name = arg.Name
883884
tpl.Description = arg.Description
884885
tpl.MaxTtl = arg.MaxTtl
885886
tpl.MinAutostartInterval = arg.MinAutostartInterval

coderd/database/queries.sql.go

Lines changed: 4 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries/templates.sql

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,8 @@ SET
9797
updated_at = $2,
9898
description = $3,
9999
max_ttl = $4,
100-
min_autostart_interval = $5
100+
min_autostart_interval = $5,
101+
name = $6
101102
WHERE
102103
id = $1
103104
RETURNING

coderd/templates.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -409,17 +409,22 @@ func (api *API) patchTemplateMeta(rw http.ResponseWriter, r *http.Request) {
409409
count = uint32(workspaceCounts[0].Count)
410410
}
411411

412-
if req.Description == template.Description &&
412+
if req.Name == template.Name &&
413+
req.Description == template.Description &&
413414
req.MaxTTLMillis == time.Duration(template.MaxTtl).Milliseconds() &&
414415
req.MinAutostartIntervalMillis == time.Duration(template.MinAutostartInterval).Milliseconds() {
415416
return nil
416417
}
417418

418419
// Update template metadata -- empty fields are not overwritten.
420+
name := req.Name
419421
desc := req.Description
420422
maxTTL := time.Duration(req.MaxTTLMillis) * time.Millisecond
421423
minAutostartInterval := time.Duration(req.MinAutostartIntervalMillis) * time.Millisecond
422424

425+
if name == "" {
426+
name = template.Name
427+
}
423428
if desc == "" {
424429
desc = template.Description
425430
}
@@ -433,6 +438,7 @@ func (api *API) patchTemplateMeta(rw http.ResponseWriter, r *http.Request) {
433438
if err := s.UpdateTemplateMetaByID(r.Context(), database.UpdateTemplateMetaByIDParams{
434439
ID: template.ID,
435440
UpdatedAt: database.Now(),
441+
Name: name,
436442
Description: desc,
437443
MaxTtl: int64(maxTTL),
438444
MinAutostartInterval: int64(minAutostartInterval),

coderd/templates_test.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,7 @@ func TestPatchTemplateMeta(t *testing.T) {
237237
ctr.MinAutostartIntervalMillis = ptr.Ref(time.Hour.Milliseconds())
238238
})
239239
req := codersdk.UpdateTemplateMeta{
240+
Name: "new-template-name",
240241
Description: "lorem ipsum dolor sit amet et cetera",
241242
MaxTTLMillis: 12 * time.Hour.Milliseconds(),
242243
MinAutostartIntervalMillis: time.Minute.Milliseconds(),
@@ -251,6 +252,7 @@ func TestPatchTemplateMeta(t *testing.T) {
251252
updated, err := client.UpdateTemplateMeta(ctx, template.ID, req)
252253
require.NoError(t, err)
253254
assert.Greater(t, updated.UpdatedAt, template.UpdatedAt)
255+
assert.Equal(t, req.Name, updated.Name)
254256
assert.Equal(t, req.Description, updated.Description)
255257
assert.Equal(t, req.MaxTTLMillis, updated.MaxTTLMillis)
256258
assert.Equal(t, req.MinAutostartIntervalMillis, updated.MinAutostartIntervalMillis)
@@ -259,6 +261,7 @@ func TestPatchTemplateMeta(t *testing.T) {
259261
updated, err = client.Template(ctx, template.ID)
260262
require.NoError(t, err)
261263
assert.Greater(t, updated.UpdatedAt, template.UpdatedAt)
264+
assert.Equal(t, req.Name, updated.Name)
262265
assert.Equal(t, req.Description, updated.Description)
263266
assert.Equal(t, req.MaxTTLMillis, updated.MaxTTLMillis)
264267
assert.Equal(t, req.MinAutostartIntervalMillis, updated.MinAutostartIntervalMillis)
@@ -280,6 +283,7 @@ func TestPatchTemplateMeta(t *testing.T) {
280283
defer cancel()
281284

282285
req := codersdk.UpdateTemplateMeta{
286+
Name: template.Name,
283287
Description: template.Description,
284288
MaxTTLMillis: template.MaxTTLMillis,
285289
MinAutostartIntervalMillis: template.MinAutostartIntervalMillis,
@@ -289,6 +293,7 @@ func TestPatchTemplateMeta(t *testing.T) {
289293
updated, err := client.Template(ctx, template.ID)
290294
require.NoError(t, err)
291295
assert.Equal(t, updated.UpdatedAt, template.UpdatedAt)
296+
assert.Equal(t, template.Name, updated.Name)
292297
assert.Equal(t, template.Description, updated.Description)
293298
assert.Equal(t, template.MaxTTLMillis, updated.MaxTTLMillis)
294299
assert.Equal(t, template.MinAutostartIntervalMillis, updated.MinAutostartIntervalMillis)
@@ -324,6 +329,7 @@ func TestPatchTemplateMeta(t *testing.T) {
324329
updated, err := client.Template(ctx, template.ID)
325330
require.NoError(t, err)
326331
assert.WithinDuration(t, template.UpdatedAt, updated.UpdatedAt, time.Minute)
332+
assert.Equal(t, template.Name, updated.Name)
327333
assert.Equal(t, template.Description, updated.Description)
328334
assert.Equal(t, template.MaxTTLMillis, updated.MaxTTLMillis)
329335
assert.Equal(t, template.MinAutostartIntervalMillis, updated.MinAutostartIntervalMillis)

codersdk/templates.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ type UpdateActiveTemplateVersion struct {
3434
}
3535

3636
type UpdateTemplateMeta struct {
37+
Name string `json:"name,omitempty" validate:"omitempty,username"`
3738
Description string `json:"description,omitempty"`
3839
MaxTTLMillis int64 `json:"max_ttl_ms,omitempty"`
3940
MinAutostartIntervalMillis int64 `json:"min_autostart_interval_ms,omitempty"`

site/src/api/typesGenerated.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,7 @@ export interface UpdateRoles {
332332

333333
// From codersdk/templates.go
334334
export interface UpdateTemplateMeta {
335+
readonly name?: string
335336
readonly description?: string
336337
readonly max_ttl_ms?: number
337338
readonly min_autostart_interval_ms?: number

0 commit comments

Comments
 (0)