Skip to content

Commit 0e7f380

Browse files
committed
Allow project parameters to optionally have user and workspace
1 parent ac61247 commit 0e7f380

File tree

2 files changed

+33
-23
lines changed

2 files changed

+33
-23
lines changed

coderd/projectparameter/projectparameter.go

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,11 @@ import (
1515

1616
// Scope targets identifiers to pull parameters from.
1717
type Scope struct {
18-
OrganizationID string
19-
ProjectID uuid.UUID
20-
ProjectVersionID uuid.UUID
21-
UserID string
22-
WorkspaceID uuid.UUID
23-
WorkspaceHistoryID uuid.UUID
18+
OrganizationID string
19+
ProjectID uuid.UUID
20+
ProjectVersionID uuid.UUID
21+
UserID sql.NullString
22+
WorkspaceID uuid.NullUUID
2423
}
2524

2625
// Value represents a computed parameter.
@@ -106,22 +105,26 @@ func Compute(ctx context.Context, db database.Store, scope Scope) ([]Value, erro
106105
return nil, err
107106
}
108107

109-
// User parameters come fourth!
110-
err = compute.inject(ctx, database.GetParameterValuesByScopeParams{
111-
Scope: database.ParameterScopeUser,
112-
ScopeID: scope.UserID,
113-
})
114-
if err != nil {
115-
return nil, err
108+
if scope.UserID.Valid {
109+
// User parameters come fourth!
110+
err = compute.inject(ctx, database.GetParameterValuesByScopeParams{
111+
Scope: database.ParameterScopeUser,
112+
ScopeID: scope.UserID.String,
113+
})
114+
if err != nil {
115+
return nil, err
116+
}
116117
}
117118

118-
// Workspace parameters come last!
119-
err = compute.inject(ctx, database.GetParameterValuesByScopeParams{
120-
Scope: database.ParameterScopeWorkspace,
121-
ScopeID: scope.WorkspaceID.String(),
122-
})
123-
if err != nil {
124-
return nil, err
119+
if scope.WorkspaceID.Valid {
120+
// Workspace parameters come last!
121+
err = compute.inject(ctx, database.GetParameterValuesByScopeParams{
122+
Scope: database.ParameterScopeWorkspace,
123+
ScopeID: scope.WorkspaceID.UUID.String(),
124+
})
125+
if err != nil {
126+
return nil, err
127+
}
125128
}
126129

127130
for _, projectVersionParameter := range compute.projectVersionParametersByName {

coderd/projectparameter/projectparameter_test.go

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,14 @@ func TestCompute(t *testing.T) {
2222
OrganizationID: uuid.New().String(),
2323
ProjectID: uuid.New(),
2424
ProjectVersionID: uuid.New(),
25-
UserID: uuid.NewString(),
25+
WorkspaceID: uuid.NullUUID{
26+
UUID: uuid.New(),
27+
Valid: true,
28+
},
29+
UserID: sql.NullString{
30+
String: uuid.NewString(),
31+
Valid: true,
32+
},
2633
}
2734
}
2835
type projectParameterOptions struct {
@@ -163,7 +170,7 @@ func TestCompute(t *testing.T) {
163170
ID: uuid.New(),
164171
Name: parameter.Name,
165172
Scope: database.ParameterScopeWorkspace,
166-
ScopeID: scope.WorkspaceID.String(),
173+
ScopeID: scope.WorkspaceID.UUID.String(),
167174
SourceScheme: database.ParameterSourceSchemeData,
168175
SourceValue: "nop",
169176
DestinationScheme: database.ParameterDestinationSchemeEnvironmentVariable,
@@ -189,7 +196,7 @@ func TestCompute(t *testing.T) {
189196
ID: uuid.New(),
190197
Name: parameter.Name,
191198
Scope: database.ParameterScopeWorkspace,
192-
ScopeID: scope.WorkspaceID.String(),
199+
ScopeID: scope.WorkspaceID.UUID.String(),
193200
SourceScheme: database.ParameterSourceSchemeData,
194201
SourceValue: "nop",
195202
DestinationScheme: database.ParameterDestinationSchemeEnvironmentVariable,

0 commit comments

Comments
 (0)