Skip to content

Commit 4818df1

Browse files
committed
add has_external_agents column to template_versions table
1 parent 3ea541e commit 4818df1

File tree

24 files changed

+267
-38
lines changed

24 files changed

+267
-38
lines changed

coderd/database/dbauthz/dbauthz.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4695,6 +4695,28 @@ func (q *querier) UpdateTemplateVersionDescriptionByJobID(ctx context.Context, a
46954695
return q.db.UpdateTemplateVersionDescriptionByJobID(ctx, arg)
46964696
}
46974697

4698+
func (q *querier) UpdateTemplateVersionExternalAgentsByJobID(ctx context.Context, arg database.UpdateTemplateVersionExternalAgentsByJobIDParams) error {
4699+
// An actor is allowed to update the template version AI task flag if they are authorized to update the template.
4700+
tv, err := q.db.GetTemplateVersionByJobID(ctx, arg.JobID)
4701+
if err != nil {
4702+
return err
4703+
}
4704+
var obj rbac.Objecter
4705+
if !tv.TemplateID.Valid {
4706+
obj = rbac.ResourceTemplate.InOrg(tv.OrganizationID)
4707+
} else {
4708+
tpl, err := q.db.GetTemplateByID(ctx, tv.TemplateID.UUID)
4709+
if err != nil {
4710+
return err
4711+
}
4712+
obj = tpl
4713+
}
4714+
if err := q.authorizeContext(ctx, policy.ActionUpdate, obj); err != nil {
4715+
return err
4716+
}
4717+
return q.db.UpdateTemplateVersionExternalAgentsByJobID(ctx, arg)
4718+
}
4719+
46984720
func (q *querier) UpdateTemplateVersionExternalAuthProvidersByJobID(ctx context.Context, arg database.UpdateTemplateVersionExternalAuthProvidersByJobIDParams) error {
46994721
// An actor is allowed to update the template version external auth providers if they are authorized to update the template.
47004722
tv, err := q.db.GetTemplateVersionByJobID(ctx, arg.JobID)

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/dbmock/dbmock.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/dump.sql

Lines changed: 3 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
ALTER TABLE template_versions DROP COLUMN has_external_agents;
2+
3+
-- Recreate `template_version_with_user` as defined in dump.sql
4+
CREATE VIEW template_version_with_user AS
5+
SELECT
6+
template_versions.id,
7+
template_versions.template_id,
8+
template_versions.organization_id,
9+
template_versions.created_at,
10+
template_versions.updated_at,
11+
template_versions.name,
12+
template_versions.readme,
13+
template_versions.job_id,
14+
template_versions.created_by,
15+
template_versions.external_auth_providers,
16+
template_versions.message,
17+
template_versions.archived,
18+
template_versions.source_example_id,
19+
template_versions.has_ai_task,
20+
COALESCE(visible_users.avatar_url, '' :: text) AS created_by_avatar_url,
21+
COALESCE(visible_users.username, '' :: text) AS created_by_username,
22+
COALESCE(visible_users.name, '' :: text) AS created_by_name
23+
FROM
24+
(
25+
template_versions
26+
LEFT JOIN visible_users ON (
27+
(template_versions.created_by = visible_users.id)
28+
)
29+
);
30+
31+
COMMENT ON VIEW template_version_with_user IS 'Joins in the username + avatar url of the created by user.';
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
-- Determines if a coder_ai_task resource is defined in a template version.
2+
ALTER TABLE
3+
template_versions
4+
ADD
5+
COLUMN has_external_agents BOOLEAN;
6+
7+
DROP VIEW template_version_with_user;
8+
9+
-- We're adding the external_agents column.
10+
CREATE VIEW template_version_with_user AS
11+
SELECT
12+
template_versions.id,
13+
template_versions.template_id,
14+
template_versions.organization_id,
15+
template_versions.created_at,
16+
template_versions.updated_at,
17+
template_versions.name,
18+
template_versions.readme,
19+
template_versions.job_id,
20+
template_versions.created_by,
21+
template_versions.external_auth_providers,
22+
template_versions.message,
23+
template_versions.archived,
24+
template_versions.source_example_id,
25+
template_versions.has_ai_task,
26+
template_versions.has_external_agents,
27+
COALESCE(visible_users.avatar_url, '' :: text) AS created_by_avatar_url,
28+
COALESCE(visible_users.username, '' :: text) AS created_by_username,
29+
COALESCE(visible_users.name, '' :: text) AS created_by_name
30+
FROM
31+
(
32+
template_versions
33+
LEFT JOIN visible_users ON (
34+
(template_versions.created_by = visible_users.id)
35+
)
36+
);
37+
38+
COMMENT ON VIEW template_version_with_user IS 'Joins in the username + avatar url of the created by user.';

coderd/database/modelqueries.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ func (q *sqlQuerier) GetAuthorizedTemplates(ctx context.Context, arg GetTemplate
8282
pq.Array(arg.IDs),
8383
arg.Deprecated,
8484
arg.HasAITask,
85+
arg.HasExternalAgents,
8586
)
8687
if err != nil {
8788
return nil, err

coderd/database/models.go

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

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