Skip to content

Commit c1902a7

Browse files
committed
Revert "only use 1 function, not a 2 step"
This reverts commit 7b80138.
1 parent 7b80138 commit c1902a7

File tree

3 files changed

+29
-34
lines changed

3 files changed

+29
-34
lines changed

coderd/dynamicparameters/render.go

Lines changed: 25 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@ type Renderer interface {
3333

3434
var ErrTemplateVersionNotReady = xerrors.New("template version job not finished")
3535

36-
// loader is used to load the necessary coder objects for rendering a template
36+
// Loader is used to load the necessary coder objects for rendering a template
3737
// version's parameters. The output is a Renderer, which is the object that uses
3838
// the cached objects to render the template version's parameters.
39-
type loader struct {
39+
type Loader struct {
4040
templateVersionID uuid.UUID
4141

4242
// cache of objects
@@ -45,44 +45,39 @@ type loader struct {
4545
terraformValues *database.TemplateVersionTerraformValue
4646
}
4747

48-
// Prepare is the entrypoint for this package. It loads the necessary objects &
49-
// files from the database and returns a Renderer that can be used to render the
50-
// template version's parameters.
51-
func Prepare(ctx context.Context, db database.Store, cache *files.Cache, versionID uuid.UUID, options ...func(r *loader)) (Renderer, error) {
52-
l := &loader{
48+
// Prepare is the entrypoint for this package. It is broken into 2 steps to allow
49+
// prepopulating some of the existing data and saving some database queries.
50+
//
51+
// Usage: dynamicparameters.Prepare(...).Renderer(...)
52+
func Prepare(versionID uuid.UUID) *Loader {
53+
return &Loader{
5354
templateVersionID: versionID,
5455
}
56+
}
5557

56-
for _, opt := range options {
57-
opt(l)
58+
func (r *Loader) WithTemplateVersion(tv database.TemplateVersion) *Loader {
59+
if tv.ID == r.templateVersionID {
60+
r.templateVersion = &tv
5861
}
5962

60-
return l.Renderer(ctx, db, cache)
63+
return r
6164
}
6265

63-
func WithTemplateVersion(tv database.TemplateVersion) func(r *loader) {
64-
return func(r *loader) {
65-
if tv.ID == r.templateVersionID {
66-
r.templateVersion = &tv
67-
}
68-
}
69-
}
66+
func (r *Loader) WithProvisionerJob(job database.ProvisionerJob) *Loader {
67+
r.job = &job
7068

71-
func WithProvisionerJob(job database.ProvisionerJob) func(r *loader) {
72-
return func(r *loader) {
73-
r.job = &job
74-
}
69+
return r
7570
}
7671

77-
func WithTerraformValues(values database.TemplateVersionTerraformValue) func(r *loader) {
78-
return func(r *loader) {
79-
if values.TemplateVersionID == r.templateVersionID {
80-
r.terraformValues = &values
81-
}
72+
func (r *Loader) WithTerraformValues(values database.TemplateVersionTerraformValue) *Loader {
73+
if values.TemplateVersionID == r.templateVersionID {
74+
r.terraformValues = &values
8275
}
76+
77+
return r
8378
}
8479

85-
func (r *loader) loadData(ctx context.Context, db database.Store) error {
80+
func (r *Loader) loadData(ctx context.Context, db database.Store) error {
8681
if r.templateVersion == nil {
8782
tv, err := db.GetTemplateVersionByID(ctx, r.templateVersionID)
8883
if err != nil {
@@ -121,7 +116,7 @@ func (r *loader) loadData(ctx context.Context, db database.Store) error {
121116
// Static parameter rendering is required to support older template versions that
122117
// do not have the database state to support dynamic parameters. A constant
123118
// warning will be displayed for these template versions.
124-
func (r *loader) Renderer(ctx context.Context, db database.Store, cache *files.Cache) (Renderer, error) {
119+
func (r *Loader) Renderer(ctx context.Context, db database.Store, cache *files.Cache) (Renderer, error) {
125120
err := r.loadData(ctx, db)
126121
if err != nil {
127122
return nil, xerrors.Errorf("load data: %w", err)
@@ -136,7 +131,7 @@ func (r *loader) Renderer(ctx context.Context, db database.Store, cache *files.C
136131

137132
// Renderer caches all the necessary files when rendering a template version's
138133
// parameters. It must be closed after use to release the cached files.
139-
func (r *loader) dynamicRenderer(ctx context.Context, db database.Store, cache *files.Cache) (*dynamicRenderer, error) {
134+
func (r *Loader) dynamicRenderer(ctx context.Context, db database.Store, cache *files.Cache) (*dynamicRenderer, error) {
140135
// If they can read the template version, then they can read the file for
141136
// parameter loading purposes.
142137
//nolint:gocritic
@@ -176,7 +171,7 @@ func (r *loader) dynamicRenderer(ctx context.Context, db database.Store, cache *
176171

177172
type dynamicRenderer struct {
178173
db database.Store
179-
data *loader
174+
data *Loader
180175
templateFS fs.FS
181176

182177
ownerErrors map[uuid.UUID]error

coderd/dynamicparameters/static.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ type staticRender struct {
2020
staticParams []previewtypes.Parameter
2121
}
2222

23-
func (r *loader) staticRender(ctx context.Context, db database.Store) (*staticRender, error) {
23+
func (r *Loader) staticRender(ctx context.Context, db database.Store) (*staticRender, error) {
2424
dbTemplateVersionParameters, err := db.GetTemplateVersionParameters(ctx, r.templateVersionID)
2525
if err != nil {
2626
return nil, xerrors.Errorf("template version parameters: %w", err)

coderd/parameters.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,9 @@ func (api *API) templateVersionDynamicParameters(listen bool, initial codersdk.D
7979
ctx := r.Context()
8080
templateVersion := httpmw.TemplateVersionParam(r)
8181

82-
renderer, err := dynamicparameters.Prepare(ctx, api.Database, api.FileCache, templateVersion.ID,
83-
dynamicparameters.WithTemplateVersion(templateVersion),
84-
)
82+
renderer, err := dynamicparameters.Prepare(templateVersion.ID).
83+
WithTemplateVersion(templateVersion).
84+
Renderer(ctx, api.Database, api.FileCache)
8585
if err != nil {
8686
if httpapi.Is404Error(err) {
8787
httpapi.ResourceNotFound(rw)

0 commit comments

Comments
 (0)