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

Skip to content

Commit 7eb2c2f

Browse files
authored
Revert "chore: Implement joins with golang templates (#6429)" (#6560)
This reverts commit 8b125d6.
1 parent a8433b1 commit 7eb2c2f

36 files changed

+660
-894
lines changed

coderd/audit/diff.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ type Auditable interface {
1414
database.User |
1515
database.Workspace |
1616
database.GitSSHKey |
17-
database.WorkspaceBuildRBAC |
17+
database.WorkspaceBuild |
1818
database.AuditableGroup |
1919
database.License
2020
}

coderd/audit/request.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ func ResourceTarget[T Auditable](tgt T) string {
6262
return typed.Username
6363
case database.Workspace:
6464
return typed.Name
65-
case database.WorkspaceBuildRBAC:
65+
case database.WorkspaceBuild:
6666
// this isn't used
6767
return ""
6868
case database.GitSSHKey:
@@ -89,7 +89,7 @@ func ResourceID[T Auditable](tgt T) uuid.UUID {
8989
return typed.ID
9090
case database.Workspace:
9191
return typed.ID
92-
case database.WorkspaceBuildRBAC:
92+
case database.WorkspaceBuild:
9393
return typed.ID
9494
case database.GitSSHKey:
9595
return typed.UserID
@@ -114,7 +114,7 @@ func ResourceType[T Auditable](tgt T) database.ResourceType {
114114
return database.ResourceTypeUser
115115
case database.Workspace:
116116
return database.ResourceTypeWorkspace
117-
case database.WorkspaceBuildRBAC:
117+
case database.WorkspaceBuild:
118118
return database.ResourceTypeWorkspaceBuild
119119
case database.GitSSHKey:
120120
return database.ResourceTypeGitSshKey

coderd/autobuild/executor/lifecycle_executor.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ func isEligibleForAutoStartStop(ws database.Workspace) bool {
204204

205205
func getNextTransition(
206206
ws database.Workspace,
207-
priorHistory database.WorkspaceBuildRBAC,
207+
priorHistory database.WorkspaceBuild,
208208
priorJob database.ProvisionerJob,
209209
) (
210210
validTransition database.WorkspaceTransition,
@@ -239,7 +239,7 @@ func getNextTransition(
239239

240240
// TODO(cian): this function duplicates most of api.postWorkspaceBuilds. Refactor.
241241
// See: https://github.com/coder/coder/issues/1401
242-
func build(ctx context.Context, store database.Store, workspace database.Workspace, trans database.WorkspaceTransition, priorHistory database.WorkspaceBuildRBAC, priorJob database.ProvisionerJob) error {
242+
func build(ctx context.Context, store database.Store, workspace database.Workspace, trans database.WorkspaceTransition, priorHistory database.WorkspaceBuild, priorJob database.ProvisionerJob) error {
243243
template, err := store.GetTemplateByID(ctx, workspace.TemplateID)
244244
if err != nil {
245245
return xerrors.Errorf("get workspace template: %w", err)

coderd/autobuild/executor/lifecycle_executor_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,17 @@ package executor_test
22

33
import (
44
"context"
5+
"os"
56
"testing"
67
"time"
78

8-
"github.com/google/uuid"
99
"go.uber.org/goleak"
1010

11+
"github.com/google/uuid"
12+
1113
"github.com/coder/coder/coderd/autobuild/executor"
1214
"github.com/coder/coder/coderd/coderdtest"
1315
"github.com/coder/coder/coderd/database"
14-
"github.com/coder/coder/coderd/database/dbtestutil"
1516
"github.com/coder/coder/coderd/schedule"
1617
"github.com/coder/coder/coderd/util/ptr"
1718
"github.com/coder/coder/codersdk"
@@ -492,7 +493,7 @@ func TestExecutorWorkspaceAutostopNoWaitChangedMyMind(t *testing.T) {
492493
}
493494

494495
func TestExecutorAutostartMultipleOK(t *testing.T) {
495-
if !dbtestutil.UsingRealDatabase() {
496+
if os.Getenv("DB") == "" {
496497
t.Skip(`This test only really works when using a "real" database, similar to a HA setup`)
497498
}
498499

coderd/database/db.go

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@ import (
1616

1717
"github.com/jmoiron/sqlx"
1818
"golang.org/x/xerrors"
19-
20-
"github.com/coder/coder/coderd/database/sqlxqueries"
2119
)
2220

2321
// Store contains all queryable database functions.
@@ -39,21 +37,11 @@ type DBTX interface {
3937
QueryRowContext(context.Context, string, ...interface{}) *sql.Row
4038
SelectContext(ctx context.Context, dest interface{}, query string, args ...interface{}) error
4139
GetContext(ctx context.Context, dest interface{}, query string, args ...interface{}) error
42-
43-
// Extends the sqlx interface
44-
sqlx.QueryerContext
4540
}
4641

4742
// New creates a new database store using a SQL database connection.
4843
func New(sdb *sql.DB) Store {
4944
dbx := sqlx.NewDb(sdb, "postgres")
50-
// Load the embedded queries. If this fails, some of our queries
51-
// will never work. This is a fatal developer error that should never
52-
// happen.
53-
_, err := sqlxqueries.LoadQueries()
54-
if err != nil {
55-
panic(xerrors.Errorf("load queries: %w", err))
56-
}
5745
return &sqlQuerier{
5846
db: dbx,
5947
sdb: dbx,

coderd/database/dbauthz/querier.go

Lines changed: 61 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1167,12 +1167,25 @@ func (q *querier) GetWorkspaces(ctx context.Context, arg database.GetWorkspacesP
11671167
return q.db.GetAuthorizedWorkspaces(ctx, arg, prep)
11681168
}
11691169

1170-
func (q *querier) GetLatestWorkspaceBuildByWorkspaceID(ctx context.Context, workspaceID uuid.UUID) (database.WorkspaceBuildRBAC, error) {
1171-
return fetch(q.log, q.auth, q.db.GetLatestWorkspaceBuildByWorkspaceID)(ctx, workspaceID)
1170+
func (q *querier) GetLatestWorkspaceBuildByWorkspaceID(ctx context.Context, workspaceID uuid.UUID) (database.WorkspaceBuild, error) {
1171+
if _, err := q.GetWorkspaceByID(ctx, workspaceID); err != nil {
1172+
return database.WorkspaceBuild{}, err
1173+
}
1174+
return q.db.GetLatestWorkspaceBuildByWorkspaceID(ctx, workspaceID)
11721175
}
11731176

1174-
func (q *querier) GetLatestWorkspaceBuildsByWorkspaceIDs(ctx context.Context, ids []uuid.UUID) ([]database.WorkspaceBuildRBAC, error) {
1175-
return fetchWithPostFilter(q.auth, q.db.GetLatestWorkspaceBuildsByWorkspaceIDs)(ctx, ids)
1177+
func (q *querier) GetLatestWorkspaceBuildsByWorkspaceIDs(ctx context.Context, ids []uuid.UUID) ([]database.WorkspaceBuild, error) {
1178+
// This is not ideal as not all builds will be returned if the workspace cannot be read.
1179+
// This should probably be handled differently? Maybe join workspace builds with workspace
1180+
// ownership properties and filter on that.
1181+
for _, id := range ids {
1182+
_, err := q.GetWorkspaceByID(ctx, id)
1183+
if err != nil {
1184+
return nil, err
1185+
}
1186+
}
1187+
1188+
return q.db.GetLatestWorkspaceBuildsByWorkspaceIDs(ctx, ids)
11761189
}
11771190

11781191
func (q *querier) GetWorkspaceAgentByID(ctx context.Context, id uuid.UUID) (database.WorkspaceAgent, error) {
@@ -1250,16 +1263,35 @@ func (q *querier) GetWorkspaceAppsByAgentID(ctx context.Context, agentID uuid.UU
12501263
return q.db.GetWorkspaceAppsByAgentID(ctx, agentID)
12511264
}
12521265

1253-
func (q *querier) GetWorkspaceBuildByID(ctx context.Context, buildID uuid.UUID) (database.WorkspaceBuildRBAC, error) {
1254-
return fetch(q.log, q.auth, q.db.GetWorkspaceBuildByID)(ctx, buildID)
1266+
func (q *querier) GetWorkspaceBuildByID(ctx context.Context, buildID uuid.UUID) (database.WorkspaceBuild, error) {
1267+
build, err := q.db.GetWorkspaceBuildByID(ctx, buildID)
1268+
if err != nil {
1269+
return database.WorkspaceBuild{}, err
1270+
}
1271+
if _, err := q.GetWorkspaceByID(ctx, build.WorkspaceID); err != nil {
1272+
return database.WorkspaceBuild{}, err
1273+
}
1274+
return build, nil
12551275
}
12561276

1257-
func (q *querier) GetWorkspaceBuildByJobID(ctx context.Context, jobID uuid.UUID) (database.WorkspaceBuildRBAC, error) {
1258-
return fetch(q.log, q.auth, q.db.GetWorkspaceBuildByJobID)(ctx, jobID)
1277+
func (q *querier) GetWorkspaceBuildByJobID(ctx context.Context, jobID uuid.UUID) (database.WorkspaceBuild, error) {
1278+
build, err := q.db.GetWorkspaceBuildByJobID(ctx, jobID)
1279+
if err != nil {
1280+
return database.WorkspaceBuild{}, err
1281+
}
1282+
// Authorized fetch
1283+
_, err = q.GetWorkspaceByID(ctx, build.WorkspaceID)
1284+
if err != nil {
1285+
return database.WorkspaceBuild{}, err
1286+
}
1287+
return build, nil
12591288
}
12601289

1261-
func (q *querier) GetWorkspaceBuildByWorkspaceIDAndBuildNumber(ctx context.Context, arg database.GetWorkspaceBuildByWorkspaceIDAndBuildNumberParams) (database.WorkspaceBuildRBAC, error) {
1262-
return fetch(q.log, q.auth, q.db.GetWorkspaceBuildByWorkspaceIDAndBuildNumber)(ctx, arg)
1290+
func (q *querier) GetWorkspaceBuildByWorkspaceIDAndBuildNumber(ctx context.Context, arg database.GetWorkspaceBuildByWorkspaceIDAndBuildNumberParams) (database.WorkspaceBuild, error) {
1291+
if _, err := q.GetWorkspaceByID(ctx, arg.WorkspaceID); err != nil {
1292+
return database.WorkspaceBuild{}, err
1293+
}
1294+
return q.db.GetWorkspaceBuildByWorkspaceIDAndBuildNumber(ctx, arg)
12631295
}
12641296

12651297
func (q *querier) GetWorkspaceBuildParameters(ctx context.Context, workspaceBuildID uuid.UUID) ([]database.WorkspaceBuildParameter, error) {
@@ -1273,20 +1305,11 @@ func (q *querier) GetWorkspaceBuildParameters(ctx context.Context, workspaceBuil
12731305
return q.db.GetWorkspaceBuildParameters(ctx, workspaceBuildID)
12741306
}
12751307

1276-
func (q *querier) GetWorkspaceBuildsByWorkspaceID(ctx context.Context, arg database.GetWorkspaceBuildsByWorkspaceIDParams) ([]database.WorkspaceBuildRBAC, error) {
1277-
builds, err := q.db.GetWorkspaceBuildsByWorkspaceID(ctx, arg)
1278-
if err != nil {
1279-
return nil, err
1280-
}
1281-
if len(builds) == 0 {
1282-
return []database.WorkspaceBuildRBAC{}, nil
1283-
}
1284-
// All builds come from the same workspace, so we only need to check the first one.
1285-
err = q.authorizeContext(ctx, rbac.ActionRead, builds[0])
1286-
if err != nil {
1308+
func (q *querier) GetWorkspaceBuildsByWorkspaceID(ctx context.Context, arg database.GetWorkspaceBuildsByWorkspaceIDParams) ([]database.WorkspaceBuild, error) {
1309+
if _, err := q.GetWorkspaceByID(ctx, arg.WorkspaceID); err != nil {
12871310
return nil, err
12881311
}
1289-
return builds, nil
1312+
return q.db.GetWorkspaceBuildsByWorkspaceID(ctx, arg)
12901313
}
12911314

12921315
func (q *querier) GetWorkspaceByAgentID(ctx context.Context, agentID uuid.UUID) (database.Workspace, error) {
@@ -1346,7 +1369,11 @@ func (q *querier) GetWorkspaceResourcesByJobID(ctx context.Context, jobID uuid.U
13461369
if err != nil {
13471370
return nil, err
13481371
}
1349-
obj = build
1372+
workspace, err := q.db.GetWorkspaceByID(ctx, build.WorkspaceID)
1373+
if err != nil {
1374+
return nil, err
1375+
}
1376+
obj = workspace
13501377
default:
13511378
return nil, xerrors.Errorf("unknown job type: %s", job.Type)
13521379
}
@@ -1387,7 +1414,12 @@ func (q *querier) InsertWorkspaceBuildParameters(ctx context.Context, arg databa
13871414
return err
13881415
}
13891416

1390-
err = q.authorizeContext(ctx, rbac.ActionUpdate, build)
1417+
workspace, err := q.db.GetWorkspaceByID(ctx, build.WorkspaceID)
1418+
if err != nil {
1419+
return err
1420+
}
1421+
1422+
err = q.authorizeContext(ctx, rbac.ActionUpdate, workspace)
13911423
if err != nil {
13921424
return err
13931425
}
@@ -1451,7 +1483,11 @@ func (q *querier) UpdateWorkspaceBuildByID(ctx context.Context, arg database.Upd
14511483
return database.WorkspaceBuild{}, err
14521484
}
14531485

1454-
err = q.authorizeContext(ctx, rbac.ActionUpdate, build)
1486+
workspace, err := q.db.GetWorkspaceByID(ctx, build.WorkspaceID)
1487+
if err != nil {
1488+
return database.WorkspaceBuild{}, err
1489+
}
1490+
err = q.authorizeContext(ctx, rbac.ActionUpdate, workspace.RBACObject())
14551491
if err != nil {
14561492
return database.WorkspaceBuild{}, err
14571493
}

0 commit comments

Comments
 (0)