Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit6cc4cfa

Browse files
authored
feat: allow for default presets (#18445)
1 parent3fb5d0b commit6cc4cfa

File tree

54 files changed

+2183
-655
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+2183
-655
lines changed

‎CLAUDE.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,5 +103,4 @@ Read [cursor rules](.cursorrules).
103103

104104
The frontend is contained in the site folder.
105105

106-
For building Frontend refer to[this document](docs/contributing/frontend.md)
107106
For building Frontend refer to[this document](docs/about/contributing/frontend.md)

‎coderd/apidoc/docs.go

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/apidoc/swagger.json

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/dbfake/dbfake.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -416,6 +416,7 @@ func (t TemplateVersionBuilder) Do() TemplateVersionResponse {
416416
DesiredInstances:preset.DesiredInstances,
417417
InvalidateAfterSecs:preset.InvalidateAfterSecs,
418418
SchedulingTimezone:preset.SchedulingTimezone,
419+
IsDefault:false,
419420
})
420421
}
421422

‎coderd/database/dbgen/dbgen.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1303,6 +1303,7 @@ func Preset(t testing.TB, db database.Store, seed database.InsertPresetParams) d
13031303
DesiredInstances:seed.DesiredInstances,
13041304
InvalidateAfterSecs:seed.InvalidateAfterSecs,
13051305
SchedulingTimezone:seed.SchedulingTimezone,
1306+
IsDefault:seed.IsDefault,
13061307
})
13071308
require.NoError(t,err,"insert preset")
13081309
returnpreset

‎coderd/database/dbmem/dbmem.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9198,6 +9198,7 @@ func (q *FakeQuerier) InsertPreset(_ context.Context, arg database.InsertPresetP
91989198
Valid:true,
91999199
},
92009200
PrebuildStatus:database.PrebuildStatusHealthy,
9201+
IsDefault:arg.IsDefault,
92019202
}
92029203
q.presets=append(q.presets,preset)
92039204
returnpreset,nil

‎coderd/database/dump.sql

Lines changed: 4 additions & 1 deletion
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
DROPINDEX IF EXISTS idx_template_version_presets_default;
2+
ALTERTABLE template_version_presets DROP COLUMN IF EXISTS is_default;
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
ALTERTABLE template_version_presets ADD COLUMN is_defaultBOOLEANNOT NULL DEFAULT FALSE;
2+
3+
-- Add a unique constraint to ensure only one default preset per template version
4+
CREATEUNIQUE INDEXidx_template_version_presets_default
5+
ON template_version_presets (template_version_id)
6+
WHERE is_default= TRUE;

‎coderd/database/models.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/queries.sql.go

Lines changed: 15 additions & 6 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/queries/presets.sql

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ INSERT INTO template_version_presets (
66
created_at,
77
desired_instances,
88
invalidate_after_secs,
9-
scheduling_timezone
9+
scheduling_timezone,
10+
is_default
1011
)
1112
VALUES (
1213
@id,
@@ -15,7 +16,8 @@ VALUES (
1516
@created_at,
1617
@desired_instances,
1718
@invalidate_after_secs,
18-
@scheduling_timezone
19+
@scheduling_timezone,
20+
@is_default
1921
) RETURNING*;
2022

2123
-- name: InsertPresetParameters :many

‎coderd/database/unique_constraint.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/presets.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,9 @@ func (api *API) templateVersionPresets(rw http.ResponseWriter, r *http.Request)
4141
varres []codersdk.Preset
4242
for_,preset:=rangepresets {
4343
sdkPreset:= codersdk.Preset{
44-
ID:preset.ID,
45-
Name:preset.Name,
44+
ID:preset.ID,
45+
Name:preset.Name,
46+
Default:preset.IsDefault,
4647
}
4748
for_,presetParam:=rangepresetParams {
4849
ifpresetParam.TemplateVersionPresetID!=preset.ID {

‎coderd/presets_test.go

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package coderd_test
22

33
import (
4+
"slices"
45
"testing"
56

7+
"github.com/stretchr/testify/assert"
68
"github.com/stretchr/testify/require"
79

810
"github.com/coder/coder/v2/coderd/coderdtest"
@@ -137,3 +139,93 @@ func TestTemplateVersionPresets(t *testing.T) {
137139
})
138140
}
139141
}
142+
143+
funcTestTemplateVersionPresetsDefault(t*testing.T) {
144+
t.Parallel()
145+
146+
typeexpectedPresetstruct {
147+
namestring
148+
isDefaultbool
149+
}
150+
151+
cases:= []struct {
152+
namestring
153+
presets []database.InsertPresetParams
154+
expected []expectedPreset
155+
}{
156+
{
157+
name:"no presets",
158+
presets:nil,
159+
expected:nil,
160+
},
161+
{
162+
name:"single default preset",
163+
presets: []database.InsertPresetParams{
164+
{Name:"Default Preset",IsDefault:true},
165+
},
166+
expected: []expectedPreset{
167+
{name:"Default Preset",isDefault:true},
168+
},
169+
},
170+
{
171+
name:"single non-default preset",
172+
presets: []database.InsertPresetParams{
173+
{Name:"Regular Preset",IsDefault:false},
174+
},
175+
expected: []expectedPreset{
176+
{name:"Regular Preset",isDefault:false},
177+
},
178+
},
179+
{
180+
name:"mixed presets",
181+
presets: []database.InsertPresetParams{
182+
{Name:"Default Preset",IsDefault:true},
183+
{Name:"Regular Preset",IsDefault:false},
184+
},
185+
expected: []expectedPreset{
186+
{name:"Default Preset",isDefault:true},
187+
{name:"Regular Preset",isDefault:false},
188+
},
189+
},
190+
}
191+
192+
for_,tc:=rangecases {
193+
tc:=tc
194+
t.Run(tc.name,func(t*testing.T) {
195+
t.Parallel()
196+
ctx:=testutil.Context(t,testutil.WaitShort)
197+
198+
client,db:=coderdtest.NewWithDatabase(t,&coderdtest.Options{IncludeProvisionerDaemon:true})
199+
user:=coderdtest.CreateFirstUser(t,client)
200+
version:=coderdtest.CreateTemplateVersion(t,client,user.OrganizationID,nil)
201+
202+
// Create presets
203+
for_,preset:=rangetc.presets {
204+
preset.TemplateVersionID=version.ID
205+
_=dbgen.Preset(t,db,preset)
206+
}
207+
208+
// Get presets via API
209+
userSubject,_,err:=httpmw.UserRBACSubject(ctx,db,user.UserID,rbac.ScopeAll)
210+
require.NoError(t,err)
211+
userCtx:=dbauthz.As(ctx,userSubject)
212+
213+
gotPresets,err:=client.TemplateVersionPresets(userCtx,version.ID)
214+
require.NoError(t,err)
215+
216+
// Verify results
217+
require.Len(t,gotPresets,len(tc.expected))
218+
219+
for_,expected:=rangetc.expected {
220+
found:=slices.ContainsFunc(gotPresets,func(preset codersdk.Preset)bool {
221+
ifpreset.Name!=expected.name {
222+
returnfalse
223+
}
224+
225+
returnassert.Equal(t,expected.isDefault,preset.Default)
226+
})
227+
require.True(t,found,"Expected preset %s not found",expected.name)
228+
}
229+
})
230+
}
231+
}

‎coderd/provisionerdserver/provisionerdserver.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2230,6 +2230,7 @@ func InsertWorkspacePresetAndParameters(ctx context.Context, db database.Store,
22302230
DesiredInstances:desiredInstances,
22312231
InvalidateAfterSecs:ttl,
22322232
SchedulingTimezone:schedulingTimezone,
2233+
IsDefault:protoPreset.GetDefault(),
22332234
})
22342235
iferr!=nil {
22352236
returnxerrors.Errorf("insert preset: %w",err)

‎codersdk/presets.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ type Preset struct {
1414
ID uuid.UUID
1515
Namestring
1616
Parameters []PresetParameter
17+
Defaultbool
1718
}
1819

1920
typePresetParameterstruct {

‎docs/reference/api/schemas.md

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp