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

Skip to content

Commit a4e40f0

Browse files
committed
modelquery
1 parent 973bedc commit a4e40f0

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
@@ -3281,8 +3281,13 @@ func (q *querier) GetWorkspaceBuildParameters(ctx context.Context, workspaceBuil
32813281
return q.db.GetWorkspaceBuildParameters(ctx, workspaceBuildID)
32823282
}
32833283

3284-
func (q *querier) GetWorkspaceBuildParametersByBuildIDs(ctx context.Context, workspaceBuildIds []uuid.UUID) ([]database.WorkspaceBuildParameter, error) {
3285-
panic("not implemented")
3284+
func (q *querier) GetWorkspaceBuildParametersByBuildIDs(ctx context.Context, workspaceBuildIDs []uuid.UUID) ([]database.WorkspaceBuildParameter, error) {
3285+
prep, err := prepareSQLFilter(ctx, q.auth, policy.ActionRead, rbac.ResourceWorkspace.Type)
3286+
if err != nil {
3287+
return nil, xerrors.Errorf("(dev error) prepare sql filter: %w", err)
3288+
}
3289+
3290+
return q.db.GetAuthorizedWorkspaceBuildParametersByBuildIDs(ctx, workspaceBuildIDs, prep)
32863291
}
32873292

32883293
func (q *querier) GetWorkspaceBuildStatsByTemplates(ctx context.Context, since time.Time) ([]database.GetWorkspaceBuildStatsByTemplatesRow, error) {
@@ -5270,6 +5275,10 @@ func (q *querier) GetAuthorizedWorkspacesAndAgentsByOwnerID(ctx context.Context,
52705275
return q.GetWorkspacesAndAgentsByOwnerID(ctx, ownerID)
52715276
}
52725277

5278+
func (q *querier) GetAuthorizedWorkspaceBuildParametersByBuildIDs(ctx context.Context, workspaceBuildIDs []uuid.UUID, _ rbac.PreparedAuthorized) ([]database.WorkspaceBuildParameter, error) {
5279+
return q.GetWorkspaceBuildParametersByBuildIDs(ctx, workspaceBuildIDs)
5280+
}
5281+
52735282
// GetAuthorizedUsers is not required for dbauthz since GetUsers is already
52745283
// authenticated.
52755284
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
@@ -13905,6 +13905,10 @@ func (q *FakeQuerier) GetAuthorizedWorkspacesAndAgentsByOwnerID(ctx context.Cont
1390513905
return out, nil
1390613906
}
1390713907

13908+
func (q *FakeQuerier) GetAuthorizedWorkspaceBuildParametersByBuildIDs(ctx context.Context, workspaceBuildIDs []uuid.UUID, prepared rbac.PreparedAuthorized) ([]database.WorkspaceBuildParameter, error) {
13909+
panic("not implemented")
13910+
}
13911+
1390813912
func (q *FakeQuerier) GetAuthorizedUsers(ctx context.Context, arg database.GetUsersParams, prepared rbac.PreparedAuthorized) ([]database.GetUsersRow, error) {
1390913913
if err := validateDatabaseType(arg); err != nil {
1391013914
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)