Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit184c1f0

Browse files
authored
chore: add db queries for dynamic parameters (#17137)
1 parentfd24116 commit184c1f0

File tree

10 files changed

+215
-0
lines changed

10 files changed

+215
-0
lines changed

‎coderd/database/dbauthz/dbauthz.go‎

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1741,6 +1741,22 @@ func (q *querier) GetFileByID(ctx context.Context, id uuid.UUID) (database.File,
17411741
returnfile,nil
17421742
}
17431743

1744+
func (q*querier)GetFileIDByTemplateVersionID(ctx context.Context,templateVersionID uuid.UUID) (uuid.UUID,error) {
1745+
fileID,err:=q.db.GetFileIDByTemplateVersionID(ctx,templateVersionID)
1746+
iferr!=nil {
1747+
returnuuid.Nil,err
1748+
}
1749+
// This is a kind of weird check, because users will almost never have this
1750+
// permission. Since this query is not currently used to provide data in a
1751+
// user facing way, it's expected that this query is run as some system
1752+
// subject in order to be authorized.
1753+
err=q.authorizeContext(ctx,policy.ActionRead,rbac.ResourceFile.WithID(fileID))
1754+
iferr!=nil {
1755+
returnuuid.Nil,err
1756+
}
1757+
returnfileID,nil
1758+
}
1759+
17441760
func (q*querier)GetFileTemplates(ctx context.Context,fileID uuid.UUID) ([]database.GetFileTemplatesRow,error) {
17451761
iferr:=q.authorizeContext(ctx,policy.ActionRead,rbac.ResourceSystem);err!=nil {
17461762
returnnil,err
@@ -2453,6 +2469,18 @@ func (q *querier) GetTemplateVersionParameters(ctx context.Context, templateVers
24532469
returnq.db.GetTemplateVersionParameters(ctx,templateVersionID)
24542470
}
24552471

2472+
func (q*querier)GetTemplateVersionTerraformValues(ctx context.Context,templateVersionID uuid.UUID) (database.TemplateVersionTerraformValue,error) {
2473+
// The template_version_terraform_values table should follow the same access
2474+
// control as the template_version table. Rather than reimplement the checks,
2475+
// we just defer to existing implementation. (plus we'd need to use this query
2476+
// to reimplement the proper checks anyway)
2477+
_,err:=q.GetTemplateVersionByID(ctx,templateVersionID)
2478+
iferr!=nil {
2479+
return database.TemplateVersionTerraformValue{},err
2480+
}
2481+
returnq.db.GetTemplateVersionTerraformValues(ctx,templateVersionID)
2482+
}
2483+
24562484
func (q*querier)GetTemplateVersionVariables(ctx context.Context,templateVersionID uuid.UUID) ([]database.TemplateVersionVariable,error) {
24572485
tv,err:=q.db.GetTemplateVersionByID(ctx,templateVersionID)
24582486
iferr!=nil {

‎coderd/database/dbauthz/dbauthz_test.go‎

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,15 @@ func (s *MethodTestSuite) TestFile() {
342342
f:=dbgen.File(s.T(),db, database.File{})
343343
check.Args(f.ID).Asserts(f,policy.ActionRead).Returns(f)
344344
}))
345+
s.Run("GetFileIDByTemplateVersionID",s.Subtest(func(db database.Store,check*expects) {
346+
o:=dbgen.Organization(s.T(),db, database.Organization{})
347+
u:=dbgen.User(s.T(),db, database.User{})
348+
_=dbgen.OrganizationMember(s.T(),db, database.OrganizationMember{OrganizationID:o.ID,UserID:u.ID})
349+
f:=dbgen.File(s.T(),db, database.File{CreatedBy:u.ID})
350+
j:=dbgen.ProvisionerJob(s.T(),db,nil, database.ProvisionerJob{StorageMethod:database.ProvisionerStorageMethodFile,FileID:f.ID})
351+
tv:=dbgen.TemplateVersion(s.T(),db, database.TemplateVersion{OrganizationID:o.ID,JobID:j.ID,CreatedBy:u.ID})
352+
check.Args(tv.ID).Asserts(rbac.ResourceFile.WithID(f.ID),policy.ActionRead).Returns(f.ID)
353+
}))
345354
s.Run("InsertFile",s.Subtest(func(db database.Store,check*expects) {
346355
u:=dbgen.User(s.T(),db, database.User{})
347356
check.Args(database.InsertFileParams{
@@ -1196,6 +1205,23 @@ func (s *MethodTestSuite) TestTemplate() {
11961205
})
11971206
check.Args(tv.ID).Asserts(t1,policy.ActionRead).Returns([]database.TemplateVersionParameter{})
11981207
}))
1208+
s.Run("GetTemplateVersionTerraformValues",s.Subtest(func(db database.Store,check*expects) {
1209+
o:=dbgen.Organization(s.T(),db, database.Organization{})
1210+
u:=dbgen.User(s.T(),db, database.User{})
1211+
_=dbgen.OrganizationMember(s.T(),db, database.OrganizationMember{OrganizationID:o.ID,UserID:u.ID})
1212+
t:=dbgen.Template(s.T(),db, database.Template{OrganizationID:o.ID,CreatedBy:u.ID})
1213+
job:=dbgen.ProvisionerJob(s.T(),db,nil, database.ProvisionerJob{OrganizationID:o.ID})
1214+
tv:=dbgen.TemplateVersion(s.T(),db, database.TemplateVersion{
1215+
OrganizationID:o.ID,
1216+
CreatedBy:u.ID,
1217+
JobID:job.ID,
1218+
TemplateID: uuid.NullUUID{UUID:t.ID,Valid:true},
1219+
})
1220+
dbgen.TemplateVersionTerraformValues(s.T(),db, database.InsertTemplateVersionTerraformValuesByJobIDParams{
1221+
JobID:job.ID,
1222+
})
1223+
check.Args(tv.ID).Asserts(t,policy.ActionRead)
1224+
}))
11991225
s.Run("GetTemplateVersionVariables",s.Subtest(func(db database.Store,check*expects) {
12001226
dbtestutil.DisableForeignKeysAndTriggers(s.T(),db)
12011227
t1:=dbgen.Template(s.T(),db, database.Template{})

‎coderd/database/dbgen/dbgen.go‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -971,6 +971,19 @@ func TemplateVersionParameter(t testing.TB, db database.Store, orig database.Tem
971971
returnversion
972972
}
973973

974+
funcTemplateVersionTerraformValues(t testing.TB,db database.Store,orig database.InsertTemplateVersionTerraformValuesByJobIDParams) {
975+
t.Helper()
976+
977+
params:= database.InsertTemplateVersionTerraformValuesByJobIDParams{
978+
JobID:takeFirst(orig.JobID,uuid.New()),
979+
CachedPlan:takeFirstSlice(orig.CachedPlan, []byte("{}")),
980+
UpdatedAt:takeFirst(orig.UpdatedAt,dbtime.Now()),
981+
}
982+
983+
err:=db.InsertTemplateVersionTerraformValuesByJobID(genCtx,params)
984+
require.NoError(t,err,"insert template version parameter")
985+
}
986+
974987
funcWorkspaceAgentStat(t testing.TB,db database.Store,orig database.WorkspaceAgentStat) database.WorkspaceAgentStat {
975988
iforig.ConnectionsByProto==nil {
976989
orig.ConnectionsByProto=json.RawMessage([]byte("{}"))

‎coderd/database/dbmem/dbmem.go‎

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3327,6 +3327,30 @@ func (q *FakeQuerier) GetFileByID(_ context.Context, id uuid.UUID) (database.Fil
33273327
return database.File{},sql.ErrNoRows
33283328
}
33293329

3330+
func (q*FakeQuerier)GetFileIDByTemplateVersionID(ctx context.Context,templateVersionID uuid.UUID) (uuid.UUID,error) {
3331+
q.mutex.RLock()
3332+
deferq.mutex.RUnlock()
3333+
3334+
for_,v:=rangeq.templateVersions {
3335+
ifv.ID==templateVersionID {
3336+
jobID:=v.JobID
3337+
for_,j:=rangeq.provisionerJobs {
3338+
ifj.ID==jobID {
3339+
ifj.StorageMethod==database.ProvisionerStorageMethodFile {
3340+
returnj.FileID,nil
3341+
}
3342+
// We found the right job id but it wasn't a proper match.
3343+
break
3344+
}
3345+
}
3346+
// We found the right template version but it wasn't a proper match.
3347+
break
3348+
}
3349+
}
3350+
3351+
returnuuid.Nil,sql.ErrNoRows
3352+
}
3353+
33303354
func (q*FakeQuerier)GetFileTemplates(_ context.Context,id uuid.UUID) ([]database.GetFileTemplatesRow,error) {
33313355
q.mutex.RLock()
33323356
deferq.mutex.RUnlock()
@@ -6020,6 +6044,19 @@ func (q *FakeQuerier) GetTemplateVersionParameters(_ context.Context, templateVe
60206044
returnparameters,nil
60216045
}
60226046

6047+
func (q*FakeQuerier)GetTemplateVersionTerraformValues(ctx context.Context,templateVersionID uuid.UUID) (database.TemplateVersionTerraformValue,error) {
6048+
q.mutex.RLock()
6049+
deferq.mutex.RUnlock()
6050+
6051+
for_,tvtv:=rangeq.templateVersionTerraformValues {
6052+
iftvtv.TemplateVersionID==templateVersionID {
6053+
returntvtv,nil
6054+
}
6055+
}
6056+
6057+
return database.TemplateVersionTerraformValue{},sql.ErrNoRows
6058+
}
6059+
60236060
func (q*FakeQuerier)GetTemplateVersionVariables(_ context.Context,templateVersionID uuid.UUID) ([]database.TemplateVersionVariable,error) {
60246061
q.mutex.RLock()
60256062
deferq.mutex.RUnlock()

‎coderd/database/dbmetrics/querymetrics.go‎

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/dbmock/dbmock.go‎

Lines changed: 30 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing 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 aboutcustomizing how changed files appear on GitHub.

‎coderd/database/queries.sql.go‎

Lines changed: 40 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/queries/files.sql‎

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,23 @@ WHERE
88
LIMIT
99
1;
1010

11+
-- name: GetFileIDByTemplateVersionID :one
12+
SELECT
13+
files.id
14+
FROM
15+
files
16+
JOIN
17+
provisioner_jobsON
18+
provisioner_jobs.storage_method='file'
19+
ANDprovisioner_jobs.file_id=files.id
20+
JOIN
21+
template_versionsONtemplate_versions.job_id=provisioner_jobs.id
22+
WHERE
23+
template_versions.id= @template_version_id
24+
LIMIT
25+
1;
26+
27+
1128
-- name: GetFileByHashAndCreator :one
1229
SELECT
1330
*

‎coderd/database/queries/templateversionterraformvalues.sql‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
-- name: GetTemplateVersionTerraformValues :one
2+
SELECT
3+
template_version_terraform_values.*
4+
FROM
5+
template_version_terraform_values
6+
WHERE
7+
template_version_terraform_values.template_version_id= @template_version_id;
8+
19
-- name: InsertTemplateVersionTerraformValuesByJobID :exec
210
INSERT INTO
311
template_version_terraform_values (

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp