Skip to content

Commit efeb85e

Browse files
committed
feat: add user-level parameter auto-fill
1 parent 5a2cf7c commit efeb85e

File tree

16 files changed

+441
-0
lines changed

16 files changed

+441
-0
lines changed

coderd/apidoc/docs.go

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

coderd/apidoc/swagger.json

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

coderd/coderd.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -823,6 +823,7 @@ func New(options *Options) *API {
823823
r.Post("/convert-login", api.postConvertLoginType)
824824
r.Delete("/", api.deleteUser)
825825
r.Get("/", api.userByName)
826+
r.Get("/parameters", api.userParameters)
826827
r.Get("/login-type", api.userLoginType)
827828
r.Put("/profile", api.putUserProfile)
828829
r.Route("/status", func(r chi.Router) {

coderd/database/dbauthz/dbauthz.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1754,6 +1754,17 @@ func (q *querier) GetUserLinksByUserID(ctx context.Context, userID uuid.UUID) ([
17541754
return q.db.GetUserLinksByUserID(ctx, userID)
17551755
}
17561756

1757+
func (q *querier) GetUserWorkspaceBuildParameters(ctx context.Context, ownerID uuid.UUID) ([]database.GetUserWorkspaceBuildParametersRow, error) {
1758+
u, err := q.db.GetUserByID(ctx, ownerID)
1759+
if err != nil {
1760+
return nil, err
1761+
}
1762+
if err := q.authorizeContext(ctx, rbac.ActionUpdate, u.UserDataRBACObject()); err != nil {
1763+
return nil, err
1764+
}
1765+
return q.db.GetUserWorkspaceBuildParameters(ctx, ownerID)
1766+
}
1767+
17571768
func (q *querier) GetUsers(ctx context.Context, arg database.GetUsersParams) ([]database.GetUsersRow, error) {
17581769
// This does the filtering in SQL.
17591770
prep, err := prepareSQLFilter(ctx, q.auth, rbac.ActionRead, rbac.ResourceUser.Type)

coderd/database/dbmem/dbmem.go

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3758,6 +3758,42 @@ func (q *FakeQuerier) GetUserLinksByUserID(_ context.Context, userID uuid.UUID)
37583758
return uls, nil
37593759
}
37603760

3761+
func (q *FakeQuerier) GetUserWorkspaceBuildParameters(ctx context.Context, ownerID uuid.UUID) ([]database.GetUserWorkspaceBuildParametersRow, error) {
3762+
q.mutex.RLock()
3763+
defer q.mutex.RUnlock()
3764+
3765+
userWorkspaceIDs := make(map[uuid.UUID]struct{})
3766+
for _, ws := range q.workspaces {
3767+
if ws.OwnerID != ownerID {
3768+
continue
3769+
}
3770+
userWorkspaceIDs[ws.ID] = struct{}{}
3771+
}
3772+
3773+
userWorkspaceBuilds := make(map[uuid.UUID]database.WorkspaceBuildTable)
3774+
for _, wb := range q.workspaceBuilds {
3775+
if _, ok := userWorkspaceIDs[wb.WorkspaceID]; !ok {
3776+
continue
3777+
}
3778+
userWorkspaceBuilds[wb.ID] = wb
3779+
}
3780+
3781+
userWorkspaceBuildParameters := make([]database.GetUserWorkspaceBuildParametersRow, 0)
3782+
for _, wbp := range q.workspaceBuildParameters {
3783+
wb, ok := userWorkspaceBuilds[wbp.WorkspaceBuildID]
3784+
if !ok {
3785+
continue
3786+
}
3787+
userWorkspaceBuildParameters = append(userWorkspaceBuildParameters, database.GetUserWorkspaceBuildParametersRow{
3788+
Name: wbp.Name,
3789+
Value: wbp.Value,
3790+
CreatedAt: wb.CreatedAt,
3791+
})
3792+
}
3793+
3794+
return userWorkspaceBuildParameters, nil
3795+
}
3796+
37613797
func (q *FakeQuerier) GetUsers(_ context.Context, params database.GetUsersParams) ([]database.GetUsersRow, error) {
37623798
if err := validateDatabaseType(params); err != nil {
37633799
return nil, err

coderd/database/dbmetrics/dbmetrics.go

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

coderd/database/dbmock/dbmock.go

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

coderd/database/querier.go

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

coderd/database/queries.sql.go

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

coderd/database/queries/workspacebuildparameters.sql

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,28 @@ FROM
1414
workspace_build_parameters
1515
WHERE
1616
workspace_build_id = $1;
17+
18+
-- name: GetUserWorkspaceBuildParameters :many
19+
SELECT
20+
sub.name,
21+
sub.value,
22+
sub.created_at
23+
FROM (
24+
SELECT
25+
wbp.name,
26+
wbp.value,
27+
wb.created_at,
28+
ROW_NUMBER() OVER (PARTITION BY wbp.name ORDER BY wb.created_at DESC) as rn
29+
FROM
30+
workspace_build_parameters wbp
31+
JOIN
32+
workspace_builds wb ON wb.id = wbp.workspace_build_id
33+
JOIN
34+
workspaces w ON w.id = wb.workspace_id
35+
WHERE
36+
w.owner_id = $1
37+
AND wb.transition = 'start'
38+
) sub
39+
WHERE
40+
sub.rn = 1
41+
LIMIT 100;

0 commit comments

Comments
 (0)