Skip to content

Commit 34935c5

Browse files
committed
Correctly insert metadata into db
1 parent 5ef5671 commit 34935c5

File tree

11 files changed

+146
-93
lines changed

11 files changed

+146
-93
lines changed

coderd/database/dbauthz/querier.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1472,18 +1472,26 @@ func (q *querier) InsertWorkspaceAgentStat(ctx context.Context, arg database.Ins
14721472
return q.db.InsertWorkspaceAgentStat(ctx, arg)
14731473
}
14741474

1475-
func (q *querier) UpsertWorkspaceAgentMetadata(ctx context.Context, arg database.UpsertWorkspaceAgentMetadataParams) error {
1476-
workspace, err := q.db.GetWorkspaceByID(ctx, arg.WorkspaceID)
1475+
func (q *querier) InsertWorkspaceAgentMetadata(ctx context.Context, arg database.InsertWorkspaceAgentMetadataParams) error {
1476+
workspace, err := q.db.GetWorkspaceByAgentID(ctx, arg.WorkspaceAgentID)
1477+
1478+
err = q.authorizeContext(ctx, rbac.ActionUpdate, workspace)
14771479
if err != nil {
14781480
return err
14791481
}
14801482

1483+
return q.db.InsertWorkspaceAgentMetadata(ctx, arg)
1484+
}
1485+
1486+
func (q *querier) UpdateWorkspaceAgentMetadata(ctx context.Context, arg database.UpdateWorkspaceAgentMetadataParams) error {
1487+
workspace, err := q.db.GetWorkspaceByAgentID(ctx, arg.WorkspaceAgentID)
1488+
14811489
err = q.authorizeContext(ctx, rbac.ActionUpdate, workspace)
14821490
if err != nil {
14831491
return err
14841492
}
14851493

1486-
return q.db.UpsertWorkspaceAgentMetadata(ctx, arg)
1494+
return q.db.UpdateWorkspaceAgentMetadata(ctx, arg)
14871495
}
14881496

14891497
func (q *querier) GetWorkspaceAgentMetadata(ctx context.Context, workspaceAgentID uuid.UUID) ([]database.WorkspaceAgentMetadatum, error) {

coderd/database/dbfake/databasefake.go

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2670,20 +2670,17 @@ func (q *fakeQuerier) InsertAPIKey(_ context.Context, arg database.InsertAPIKeyP
26702670
return key, nil
26712671
}
26722672

2673-
func (q *fakeQuerier) UpsertWorkspaceAgentMetadata(_ context.Context, arg database.UpsertWorkspaceAgentMetadataParams) error {
2673+
func (q *fakeQuerier) UpdateWorkspaceAgentMetadata(_ context.Context, arg database.UpdateWorkspaceAgentMetadataParams) error {
26742674
q.mutex.Lock()
26752675
defer q.mutex.Unlock()
26762676

26772677
//nolint:gosimple
26782678
updated := database.WorkspaceAgentMetadatum{
2679-
WorkspaceID: arg.WorkspaceID,
26802679
WorkspaceAgentID: arg.WorkspaceAgentID,
26812680
Key: arg.Key,
26822681
Value: arg.Value,
26832682
Error: arg.Error,
26842683
CollectedAt: arg.CollectedAt,
2685-
Timeout: arg.Timeout,
2686-
Interval: arg.Interval,
26872684
}
26882685

26892686
for i, m := range q.workspaceAgentMetadata {
@@ -2693,7 +2690,22 @@ func (q *fakeQuerier) UpsertWorkspaceAgentMetadata(_ context.Context, arg databa
26932690
}
26942691
}
26952692

2696-
q.workspaceAgentMetadata = append(q.workspaceAgentMetadata, updated)
2693+
return sql.ErrNoRows
2694+
}
2695+
2696+
func (q *fakeQuerier) InsertWorkspaceAgentMetadata(_ context.Context, arg database.InsertWorkspaceAgentMetadataParams) error {
2697+
q.mutex.Lock()
2698+
defer q.mutex.Unlock()
2699+
2700+
//nolint:gosimple
2701+
metadatum := database.WorkspaceAgentMetadatum{
2702+
WorkspaceAgentID: arg.WorkspaceAgentID,
2703+
Key: arg.Key,
2704+
Timeout: arg.Timeout,
2705+
Interval: arg.Interval,
2706+
}
2707+
2708+
q.workspaceAgentMetadata = append(q.workspaceAgentMetadata, metadatum)
26972709
return nil
26982710
}
26992711

coderd/database/dump.sql

Lines changed: 0 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
-- TODO: Do we need an index for workspace_agent_id or is the multi-column PRIMARY
22
-- key enough?
33
CREATE TABLE workspace_agent_metadata (
4-
workspace_id uuid NOT NULL,
54
workspace_agent_id uuid NOT NULL,
65
key character varying(128) NOT NULL,
76
value text NOT NULL,
@@ -10,6 +9,5 @@ CREATE TABLE workspace_agent_metadata (
109
interval bigint NOT NULL,
1110
collected_at timestamp with time zone NOT NULL,
1211
PRIMARY KEY (workspace_agent_id, key),
13-
FOREIGN KEY (workspace_agent_id) REFERENCES workspace_agents(id) ON DELETE CASCADE,
14-
FOREIGN KEY (workspace_id) REFERENCES workspaces(id) ON DELETE CASCADE
12+
FOREIGN KEY (workspace_agent_id) REFERENCES workspace_agents(id) ON DELETE CASCADE
1513
);

coderd/database/models.go

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

coderd/database/querier.go

Lines changed: 5 additions & 4 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: 67 additions & 55 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries/workspaceagents.sql

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -94,25 +94,27 @@ SET
9494
WHERE
9595
id = $1;
9696

97-
-- name: UpsertWorkspaceAgentMetadata :exec
97+
-- name: InsertWorkspaceAgentMetadata :exec
9898
INSERT INTO
9999
workspace_agent_metadata (
100-
workspace_id,
101100
workspace_agent_id,
102101
key,
103-
value,
104-
error,
105-
collected_at,
106102
timeout,
107103
interval
108104
)
109105
VALUES
110-
($1, $2, $3, $4, $5, $6, $7, $8)
111-
ON CONFLICT (workspace_agent_id, key) DO UPDATE SET
112-
value = $4,
113-
error = $5,
114-
collected_at = $6,
115-
-- interval and timeout are set once
106+
($1, $2, $3, $4);
107+
108+
-- name: UpdateWorkspaceAgentMetadata :exec
109+
UPDATE
110+
workspace_agent_metadata
111+
SET
112+
value = $3,
113+
error = $4,
114+
collected_at = $5
115+
WHERE
116+
workspace_agent_id = $1
117+
AND key = $2;
116118

117119
-- name: GetWorkspaceAgentMetadata :many
118120
SELECT

coderd/provisionerdserver/provisionerdserver.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1226,6 +1226,18 @@ func InsertWorkspaceResource(ctx context.Context, db database.Store, jobID uuid.
12261226
}
12271227
snapshot.WorkspaceAgents = append(snapshot.WorkspaceAgents, telemetry.ConvertWorkspaceAgent(dbAgent))
12281228

1229+
for _, md := range prAgent.Metadata {
1230+
err := db.InsertWorkspaceAgentMetadata(ctx, database.InsertWorkspaceAgentMetadataParams{
1231+
WorkspaceAgentID: agentID,
1232+
Key: md.Key,
1233+
Timeout: md.Timeout,
1234+
Interval: md.Interval,
1235+
})
1236+
if err != nil {
1237+
return xerrors.Errorf("insert agent metadata: %w", err)
1238+
}
1239+
}
1240+
12291241
for _, app := range prAgent.Apps {
12301242
slug := app.Slug
12311243
if slug == "" {

0 commit comments

Comments
 (0)