Skip to content

Commit 7b80138

Browse files
committed
only use 1 function, not a 2 step
1 parent 000f722 commit 7b80138

File tree

3 files changed

+34
-29
lines changed

3 files changed

+34
-29
lines changed

coderd/dynamicparameters/render.go

Lines changed: 30 additions & 25 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,39 +45,44 @@ type Loader struct {
4545
terraformValues *database.TemplateVersionTerraformValue
4646
}
4747

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{
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{
5453
templateVersionID: versionID,
5554
}
56-
}
5755

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

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

66-
func (r *Loader) WithProvisionerJob(job database.ProvisionerJob) *Loader {
67-
r.job = &job
68-
69-
return r
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+
}
7069
}
7170

72-
func (r *Loader) WithTerraformValues(values database.TemplateVersionTerraformValue) *Loader {
73-
if values.TemplateVersionID == r.templateVersionID {
74-
r.terraformValues = &values
71+
func WithProvisionerJob(job database.ProvisionerJob) func(r *loader) {
72+
return func(r *loader) {
73+
r.job = &job
7574
}
75+
}
7676

77-
return r
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+
}
82+
}
7883
}
7984

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

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

172177
type dynamicRenderer struct {
173178
db database.Store
174-
data *Loader
179+
data *loader
175180
templateFS fs.FS
176181

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

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy