Skip to content

Commit 3762175

Browse files
committed
modelquery
1 parent a7f4846 commit 3762175

File tree

4 files changed

+52
-2
lines changed

4 files changed

+52
-2
lines changed

coderd/database/dbauthz/dbauthz.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3252,8 +3252,13 @@ func (q *querier) GetWorkspaceBuildParameters(ctx context.Context, workspaceBuil
32523252
return q.db.GetWorkspaceBuildParameters(ctx, workspaceBuildID)
32533253
}
32543254

3255-
func (q *querier) GetWorkspaceBuildParametersByBuildIDs(ctx context.Context, workspaceBuildIds []uuid.UUID) ([]database.WorkspaceBuildParameter, error) {
3256-
panic("not implemented")
3255+
func (q *querier) GetWorkspaceBuildParametersByBuildIDs(ctx context.Context, workspaceBuildIDs []uuid.UUID) ([]database.WorkspaceBuildParameter, error) {
3256+
prep, err := prepareSQLFilter(ctx, q.auth, policy.ActionRead, rbac.ResourceWorkspace.Type)
3257+
if err != nil {
3258+
return nil, xerrors.Errorf("(dev error) prepare sql filter: %w", err)
3259+
}
3260+
3261+
return q.db.GetAuthorizedWorkspaceBuildParametersByBuildIDs(ctx, workspaceBuildIDs, prep)
32573262
}
32583263

32593264
func (q *querier) GetWorkspaceBuildStatsByTemplates(ctx context.Context, since time.Time) ([]database.GetWorkspaceBuildStatsByTemplatesRow, error) {
@@ -5200,6 +5205,10 @@ func (q *querier) GetAuthorizedWorkspacesAndAgentsByOwnerID(ctx context.Context,
52005205
return q.GetWorkspacesAndAgentsByOwnerID(ctx, ownerID)
52015206
}
52025207

5208+
func (q *querier) GetAuthorizedWorkspaceBuildParametersByBuildIDs(ctx context.Context, workspaceBuildIDs []uuid.UUID, _ rbac.PreparedAuthorized) ([]database.WorkspaceBuildParameter, error) {
5209+
return q.GetWorkspaceBuildParametersByBuildIDs(ctx, workspaceBuildIDs)
5210+
}
5211+
52035212
// GetAuthorizedUsers is not required for dbauthz since GetUsers is already
52045213
// authenticated.
52055214
func (q *querier) GetAuthorizedUsers(ctx context.Context, arg database.GetUsersParams, _ rbac.PreparedAuthorized) ([]database.GetUsersRow, error) {

coderd/database/dbmem/dbmem.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13806,6 +13806,10 @@ func (q *FakeQuerier) GetAuthorizedWorkspacesAndAgentsByOwnerID(ctx context.Cont
1380613806
return out, nil
1380713807
}
1380813808

13809+
func (q *FakeQuerier) GetAuthorizedWorkspaceBuildParametersByBuildIDs(ctx context.Context, workspaceBuildIDs []uuid.UUID, prepared rbac.PreparedAuthorized) ([]database.WorkspaceBuildParameter, error) {
13810+
panic("not implemented")
13811+
}
13812+
1380913813
func (q *FakeQuerier) GetAuthorizedUsers(ctx context.Context, arg database.GetUsersParams, prepared rbac.PreparedAuthorized) ([]database.GetUsersRow, error) {
1381013814
if err := validateDatabaseType(arg); err != nil {
1381113815
return nil, err

coderd/database/dbmetrics/querymetrics.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/modelqueries.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,7 @@ func (q *sqlQuerier) GetTemplateGroupRoles(ctx context.Context, id uuid.UUID) ([
226226
type workspaceQuerier interface {
227227
GetAuthorizedWorkspaces(ctx context.Context, arg GetWorkspacesParams, prepared rbac.PreparedAuthorized) ([]GetWorkspacesRow, error)
228228
GetAuthorizedWorkspacesAndAgentsByOwnerID(ctx context.Context, ownerID uuid.UUID, prepared rbac.PreparedAuthorized) ([]GetWorkspacesAndAgentsByOwnerIDRow, error)
229+
GetAuthorizedWorkspaceBuildParametersByBuildIDs(ctx context.Context, workspaceBuildIDs []uuid.UUID, prepared rbac.PreparedAuthorized) ([]WorkspaceBuildParameter, error)
229230
}
230231

231232
// GetAuthorizedWorkspaces returns all workspaces that the user is authorized to access.
@@ -372,6 +373,35 @@ func (q *sqlQuerier) GetAuthorizedWorkspacesAndAgentsByOwnerID(ctx context.Conte
372373
return items, nil
373374
}
374375

376+
func (q *sqlQuerier) GetAuthorizedWorkspaceBuildParametersByBuildIDs(ctx context.Context, workspaceBuildIDs []uuid.UUID, prepared rbac.PreparedAuthorized) ([]WorkspaceBuildParameter, error) {
377+
authorizedFilter, err := prepared.CompileToSQL(ctx, rbac.ConfigWorkspaces())
378+
if err != nil {
379+
return nil, xerrors.Errorf("compile authorized filter: %w", err)
380+
}
381+
382+
filtered, err := insertAuthorizedFilter(getWorkspaceBuildParametersByBuildIDs, fmt.Sprintf(" AND %s", authorizedFilter))
383+
if err != nil {
384+
return nil, xerrors.Errorf("insert authorized filter: %w", err)
385+
}
386+
387+
query := fmt.Sprintf("-- name: GetAuthorizedWorkspaceBuildParametersByBuildIDs :many\n%s", filtered)
388+
rows, err := q.db.QueryContext(ctx, query, pq.Array(workspaceBuildIDs))
389+
if err != nil {
390+
return nil, err
391+
}
392+
defer rows.Close()
393+
394+
var items []WorkspaceBuildParameter
395+
for rows.Next() {
396+
var i WorkspaceBuildParameter
397+
if err := rows.Scan(&i.WorkspaceBuildID, &i.Name, &i.Value); err != nil {
398+
return nil, err
399+
}
400+
items = append(items, i)
401+
}
402+
return items, nil
403+
}
404+
375405
type userQuerier interface {
376406
GetAuthorizedUsers(ctx context.Context, arg GetUsersParams, prepared rbac.PreparedAuthorized) ([]GetUsersRow, error)
377407
}

0 commit comments

Comments
 (0)