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

Skip to content

Commit d2634e2

Browse files
committed
only use 1 function, not a 2 step
1 parent c1902a7 commit d2634e2

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)