Skip to content

Commit e1ad75b

Browse files
committed
feat: proto & db changes to persist coder_ai_task state
Signed-off-by: Danny Kopping <dannykopping@gmail.com>
1 parent 6d8f5b1 commit e1ad75b

File tree

16 files changed

+917
-486
lines changed

16 files changed

+917
-486
lines changed

coderd/database/dbauthz/dbauthz.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4489,6 +4489,28 @@ func (q *querier) UpdateTemplateScheduleByID(ctx context.Context, arg database.U
44894489
return update(q.log, q.auth, fetch, q.db.UpdateTemplateScheduleByID)(ctx, arg)
44904490
}
44914491

4492+
func (q *querier) UpdateTemplateVersionAITaskByJobID(ctx context.Context, arg database.UpdateTemplateVersionAITaskByJobIDParams) error {
4493+
// An actor is allowed to update the template version AI task flag if they are authorized to update the template.
4494+
tv, err := q.db.GetTemplateVersionByJobID(ctx, arg.JobID)
4495+
if err != nil {
4496+
return err
4497+
}
4498+
var obj rbac.Objecter
4499+
if !tv.TemplateID.Valid {
4500+
obj = rbac.ResourceTemplate.InOrg(tv.OrganizationID)
4501+
} else {
4502+
tpl, err := q.db.GetTemplateByID(ctx, tv.TemplateID.UUID)
4503+
if err != nil {
4504+
return err
4505+
}
4506+
obj = tpl
4507+
}
4508+
if err := q.authorizeContext(ctx, policy.ActionUpdate, obj); err != nil {
4509+
return err
4510+
}
4511+
return q.db.UpdateTemplateVersionAITaskByJobID(ctx, arg)
4512+
}
4513+
44924514
func (q *querier) UpdateTemplateVersionByID(ctx context.Context, arg database.UpdateTemplateVersionByIDParams) error {
44934515
// An actor is allowed to update the template version if they are authorized to update the template.
44944516
tv, err := q.db.GetTemplateVersionByID(ctx, arg.ID)
@@ -4845,6 +4867,13 @@ func (q *querier) UpdateWorkspaceAutostart(ctx context.Context, arg database.Upd
48454867
return update(q.log, q.auth, fetch, q.db.UpdateWorkspaceAutostart)(ctx, arg)
48464868
}
48474869

4870+
func (q *querier) UpdateWorkspaceBuildAITaskByID(ctx context.Context, arg database.UpdateWorkspaceBuildAITaskByIDParams) error {
4871+
if err := q.authorizeContext(ctx, policy.ActionUpdate, rbac.ResourceSystem); err != nil {
4872+
return err
4873+
}
4874+
return q.db.UpdateWorkspaceBuildAITaskByID(ctx, arg)
4875+
}
4876+
48484877
// UpdateWorkspaceBuildCostByID is used by the provisioning system to update the cost of a workspace build.
48494878
func (q *querier) UpdateWorkspaceBuildCostByID(ctx context.Context, arg database.UpdateWorkspaceBuildCostByIDParams) error {
48504879
if err := q.authorizeContext(ctx, policy.ActionUpdate, rbac.ResourceSystem); err != nil {

coderd/database/dbgen/dbgen.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,6 @@ func WorkspaceBuild(t testing.TB, db database.Store, orig database.WorkspaceBuil
369369
UUID: uuid.UUID{},
370370
Valid: false,
371371
}),
372-
HasAITask: orig.HasAITask,
373372
})
374373
if err != nil {
375374
return err
@@ -944,7 +943,6 @@ func TemplateVersion(t testing.TB, db database.Store, orig database.TemplateVers
944943
JobID: takeFirst(orig.JobID, uuid.New()),
945944
CreatedBy: takeFirst(orig.CreatedBy, uuid.New()),
946945
SourceExampleID: takeFirst(orig.SourceExampleID, sql.NullString{}),
947-
HasAITask: orig.HasAITask,
948946
})
949947
if err != nil {
950948
return err

coderd/database/dbmem/dbmem.go

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9399,7 +9399,6 @@ func (q *FakeQuerier) InsertTemplateVersion(_ context.Context, arg database.Inse
93999399
JobID: arg.JobID,
94009400
CreatedBy: arg.CreatedBy,
94019401
SourceExampleID: arg.SourceExampleID,
9402-
HasAITask: arg.HasAITask,
94039402
}
94049403
q.templateVersions = append(q.templateVersions, version)
94059404
return nil
@@ -10079,7 +10078,6 @@ func (q *FakeQuerier) InsertWorkspaceBuild(_ context.Context, arg database.Inser
1007910078
MaxDeadline: arg.MaxDeadline,
1008010079
Reason: arg.Reason,
1008110080
TemplateVersionPresetID: arg.TemplateVersionPresetID,
10082-
HasAITask: arg.HasAITask,
1008310081
}
1008410082
q.workspaceBuilds = append(q.workspaceBuilds, workspaceBuild)
1008510083
return nil
@@ -11285,6 +11283,26 @@ func (q *FakeQuerier) UpdateTemplateScheduleByID(_ context.Context, arg database
1128511283
return sql.ErrNoRows
1128611284
}
1128711285

11286+
func (q *FakeQuerier) UpdateTemplateVersionAITaskByJobID(_ context.Context, arg database.UpdateTemplateVersionAITaskByJobIDParams) error {
11287+
if err := validateDatabaseType(arg); err != nil {
11288+
return err
11289+
}
11290+
11291+
q.mutex.Lock()
11292+
defer q.mutex.Unlock()
11293+
11294+
for index, templateVersion := range q.templateVersions {
11295+
if templateVersion.JobID != arg.JobID {
11296+
continue
11297+
}
11298+
templateVersion.HasAITask = arg.HasAITask
11299+
templateVersion.UpdatedAt = arg.UpdatedAt
11300+
q.templateVersions[index] = templateVersion
11301+
return nil
11302+
}
11303+
return sql.ErrNoRows
11304+
}
11305+
1128811306
func (q *FakeQuerier) UpdateTemplateVersionByID(_ context.Context, arg database.UpdateTemplateVersionByIDParams) error {
1128911307
if err := validateDatabaseType(arg); err != nil {
1129011308
return err
@@ -11980,6 +11998,27 @@ func (q *FakeQuerier) UpdateWorkspaceAutostart(_ context.Context, arg database.U
1198011998
return sql.ErrNoRows
1198111999
}
1198212000

12001+
func (q *FakeQuerier) UpdateWorkspaceBuildAITaskByID(_ context.Context, arg database.UpdateWorkspaceBuildAITaskByIDParams) error {
12002+
err := validateDatabaseType(arg)
12003+
if err != nil {
12004+
return err
12005+
}
12006+
12007+
q.mutex.Lock()
12008+
defer q.mutex.Unlock()
12009+
12010+
for index, workspaceBuild := range q.workspaceBuilds {
12011+
if workspaceBuild.ID != arg.ID {
12012+
continue
12013+
}
12014+
workspaceBuild.HasAITask = arg.HasAITask
12015+
workspaceBuild.UpdatedAt = dbtime.Now()
12016+
q.workspaceBuilds[index] = workspaceBuild
12017+
return nil
12018+
}
12019+
return sql.ErrNoRows
12020+
}
12021+
1198312022
func (q *FakeQuerier) UpdateWorkspaceBuildCostByID(_ context.Context, arg database.UpdateWorkspaceBuildCostByIDParams) error {
1198412023
if err := validateDatabaseType(arg); err != nil {
1198512024
return err

coderd/database/dbmetrics/querymetrics.go

Lines changed: 14 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: 28 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: 2 additions & 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: 51 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries/templateversions.sql

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,11 +88,10 @@ INSERT INTO
8888
readme,
8989
job_id,
9090
created_by,
91-
source_example_id,
92-
has_ai_task
91+
source_example_id
9392
)
9493
VALUES
95-
($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12);
94+
($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11);
9695

9796
-- name: UpdateTemplateVersionByID :exec
9897
UPDATE
@@ -123,6 +122,15 @@ SET
123122
WHERE
124123
job_id = $1;
125124

125+
-- name: UpdateTemplateVersionAITaskByJobID :exec
126+
UPDATE
127+
template_versions
128+
SET
129+
has_ai_task = $2,
130+
updated_at = $3
131+
WHERE
132+
job_id = $1;
133+
126134
-- name: GetPreviousTemplateVersion :one
127135
SELECT
128136
*

coderd/database/queries/workspacebuilds.sql

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -121,11 +121,10 @@ INSERT INTO
121121
deadline,
122122
max_deadline,
123123
reason,
124-
template_version_preset_id,
125-
has_ai_task
124+
template_version_preset_id
126125
)
127126
VALUES
128-
($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15);
127+
($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14);
129128

130129
-- name: UpdateWorkspaceBuildCostByID :exec
131130
UPDATE
@@ -152,6 +151,15 @@ SET
152151
updated_at = @updated_at::timestamptz
153152
WHERE id = @id::uuid;
154153

154+
-- name: UpdateWorkspaceBuildAITaskByID :exec
155+
UPDATE
156+
workspace_builds
157+
SET
158+
has_ai_task = @has_ai_task,
159+
ai_tasks_sidebar_app_id = @sidebar_app_id,
160+
updated_at = @updated_at::timestamptz
161+
WHERE id = @id::uuid;
162+
155163
-- name: GetActiveWorkspaceBuildsByTemplateID :many
156164
SELECT wb.*
157165
FROM (

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy