Skip to content

Commit c64636b

Browse files
committed
Add git auth providers schema
1 parent f7c10ad commit c64636b

File tree

12 files changed

+167
-51
lines changed

12 files changed

+167
-51
lines changed

coderd/database/dbauthz/querier.go

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

888+
func (q *querier) UpdateTemplateVersionGitAuthProvidersByJobID(ctx context.Context, arg database.UpdateTemplateVersionGitAuthProvidersByJobIDParams) error {
889+
// An actor is allowed to update the template version git auth providers if they are authorized to update the template.
890+
tv, err := q.db.GetTemplateVersionByJobID(ctx, arg.JobID)
891+
if err != nil {
892+
return err
893+
}
894+
var obj rbac.Objecter
895+
if !tv.TemplateID.Valid {
896+
obj = rbac.ResourceTemplate.InOrg(tv.OrganizationID)
897+
} else {
898+
tpl, err := q.db.GetTemplateByID(ctx, tv.TemplateID.UUID)
899+
if err != nil {
900+
return err
901+
}
902+
obj = tpl
903+
}
904+
if err := q.authorizeContext(ctx, rbac.ActionUpdate, obj); err != nil {
905+
return err
906+
}
907+
return q.db.UpdateTemplateVersionGitAuthProvidersByJobID(ctx, arg)
908+
}
909+
888910
func (q *querier) GetTemplateGroupRoles(ctx context.Context, id uuid.UUID) ([]database.TemplateGroup, error) {
889911
// An actor is authorized to read template group roles if they are authorized to read the template.
890912
template, err := q.db.GetTemplateByID(ctx, id)

coderd/database/dbauthz/querier_test.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -724,6 +724,18 @@ func (s *MethodTestSuite) TestTemplate() {
724724
Readme: "foo",
725725
}).Asserts(t1, rbac.ActionUpdate).Returns()
726726
}))
727+
s.Run("UpdateTemplateVersionGitAuthProvidersByJobID", s.Subtest(func(db database.Store, check *expects) {
728+
jobID := uuid.New()
729+
t1 := dbgen.Template(s.T(), db, database.Template{})
730+
_ = dbgen.TemplateVersion(s.T(), db, database.TemplateVersion{
731+
TemplateID: uuid.NullUUID{UUID: t1.ID, Valid: true},
732+
JobID: jobID,
733+
})
734+
check.Args(database.UpdateTemplateVersionGitAuthProvidersByJobIDParams{
735+
JobID: jobID,
736+
GitAuthProviders: []string{},
737+
}).Asserts(t1, rbac.ActionUpdate).Returns()
738+
}))
727739
}
728740

729741
func (s *MethodTestSuite) TestUser() {

coderd/database/dbfake/databasefake.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3260,6 +3260,26 @@ func (q *fakeQuerier) UpdateTemplateVersionDescriptionByJobID(_ context.Context,
32603260
return sql.ErrNoRows
32613261
}
32623262

3263+
func (q *fakeQuerier) UpdateTemplateVersionGitAuthProvidersByJobID(_ context.Context, arg database.UpdateTemplateVersionGitAuthProvidersByJobIDParams) error {
3264+
if err := validateDatabaseType(arg); err != nil {
3265+
return err
3266+
}
3267+
3268+
q.mutex.Lock()
3269+
defer q.mutex.Unlock()
3270+
3271+
for index, templateVersion := range q.templateVersions {
3272+
if templateVersion.JobID != arg.JobID {
3273+
continue
3274+
}
3275+
templateVersion.GitAuthProviders = arg.GitAuthProviders
3276+
templateVersion.UpdatedAt = arg.UpdatedAt
3277+
q.templateVersions[index] = templateVersion
3278+
return nil
3279+
}
3280+
return sql.ErrNoRows
3281+
}
3282+
32633283
func (q *fakeQuerier) UpdateWorkspaceAgentConnectionByID(_ context.Context, arg database.UpdateWorkspaceAgentConnectionByIDParams) error {
32643284
if err := validateDatabaseType(arg); err != nil {
32653285
return err

coderd/database/dump.sql

Lines changed: 4 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
ALTER TABLE template_versions
2+
DROP COLUMN git_auth_providers;
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
ALTER TABLE template_versions
2+
ADD COLUMN git_auth_providers text[];
3+
4+
COMMENT ON COLUMN template_versions.git_auth_providers IS 'IDs of Git auth providers for a specific template version';

coderd/database/models.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/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: 37 additions & 8 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: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,15 @@ SET
102102
WHERE
103103
job_id = $1;
104104

105+
-- name: UpdateTemplateVersionGitAuthProvidersByJobID :exec
106+
UPDATE
107+
template_versions
108+
SET
109+
git_auth_providers = $2,
110+
updated_at = $3
111+
WHERE
112+
job_id = $1;
113+
105114
-- name: GetPreviousTemplateVersion :one
106115
SELECT
107116
*

0 commit comments

Comments
 (0)