Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit b830c05

Browse files
authored
chore: track usage of built-in example templates (#15671)
Addresses coder/nexus#99. Changes: - Save the id of the built-in example template used to create a template version in the database - Include the example id in telemetry
1 parent b08238c commit b830c05

14 files changed

+167
-54
lines changed

coderd/database/dbgen/dbgen.go

+11-10
Original file line numberDiff line numberDiff line change
@@ -788,16 +788,17 @@ func TemplateVersion(t testing.TB, db database.Store, orig database.TemplateVers
788788
err := db.InTx(func(db database.Store) error {
789789
versionID := takeFirst(orig.ID, uuid.New())
790790
err := db.InsertTemplateVersion(genCtx, database.InsertTemplateVersionParams{
791-
ID: versionID,
792-
TemplateID: takeFirst(orig.TemplateID, uuid.NullUUID{}),
793-
OrganizationID: takeFirst(orig.OrganizationID, uuid.New()),
794-
CreatedAt: takeFirst(orig.CreatedAt, dbtime.Now()),
795-
UpdatedAt: takeFirst(orig.UpdatedAt, dbtime.Now()),
796-
Name: takeFirst(orig.Name, testutil.GetRandomName(t)),
797-
Message: orig.Message,
798-
Readme: takeFirst(orig.Readme, testutil.GetRandomName(t)),
799-
JobID: takeFirst(orig.JobID, uuid.New()),
800-
CreatedBy: takeFirst(orig.CreatedBy, uuid.New()),
791+
ID: versionID,
792+
TemplateID: takeFirst(orig.TemplateID, uuid.NullUUID{}),
793+
OrganizationID: takeFirst(orig.OrganizationID, uuid.New()),
794+
CreatedAt: takeFirst(orig.CreatedAt, dbtime.Now()),
795+
UpdatedAt: takeFirst(orig.UpdatedAt, dbtime.Now()),
796+
Name: takeFirst(orig.Name, testutil.GetRandomName(t)),
797+
Message: orig.Message,
798+
Readme: takeFirst(orig.Readme, testutil.GetRandomName(t)),
799+
JobID: takeFirst(orig.JobID, uuid.New()),
800+
CreatedBy: takeFirst(orig.CreatedBy, uuid.New()),
801+
SourceExampleID: takeFirst(orig.SourceExampleID, sql.NullString{}),
801802
})
802803
if err != nil {
803804
return err

coderd/database/dbmem/dbmem.go

+11-10
Original file line numberDiff line numberDiff line change
@@ -7699,16 +7699,17 @@ func (q *FakeQuerier) InsertTemplateVersion(_ context.Context, arg database.Inse
76997699

77007700
//nolint:gosimple
77017701
version := database.TemplateVersionTable{
7702-
ID: arg.ID,
7703-
TemplateID: arg.TemplateID,
7704-
OrganizationID: arg.OrganizationID,
7705-
CreatedAt: arg.CreatedAt,
7706-
UpdatedAt: arg.UpdatedAt,
7707-
Name: arg.Name,
7708-
Message: arg.Message,
7709-
Readme: arg.Readme,
7710-
JobID: arg.JobID,
7711-
CreatedBy: arg.CreatedBy,
7702+
ID: arg.ID,
7703+
TemplateID: arg.TemplateID,
7704+
OrganizationID: arg.OrganizationID,
7705+
CreatedAt: arg.CreatedAt,
7706+
UpdatedAt: arg.UpdatedAt,
7707+
Name: arg.Name,
7708+
Message: arg.Message,
7709+
Readme: arg.Readme,
7710+
JobID: arg.JobID,
7711+
CreatedBy: arg.CreatedBy,
7712+
SourceExampleID: arg.SourceExampleID,
77127713
}
77137714
q.templateVersions = append(q.templateVersions, version)
77147715
return nil

coderd/database/dump.sql

+3-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
-- We cannot alter the column type while a view depends on it, so we drop it and recreate it.
2+
DROP VIEW template_version_with_user;
3+
4+
ALTER TABLE
5+
template_versions
6+
DROP COLUMN source_example_id;
7+
8+
-- Recreate `template_version_with_user` as described in dump.sql
9+
CREATE VIEW template_version_with_user AS
10+
SELECT
11+
template_versions.id,
12+
template_versions.template_id,
13+
template_versions.organization_id,
14+
template_versions.created_at,
15+
template_versions.updated_at,
16+
template_versions.name,
17+
template_versions.readme,
18+
template_versions.job_id,
19+
template_versions.created_by,
20+
template_versions.external_auth_providers,
21+
template_versions.message,
22+
template_versions.archived,
23+
COALESCE(visible_users.avatar_url, ''::text) AS created_by_avatar_url,
24+
COALESCE(visible_users.username, ''::text) AS created_by_username
25+
FROM (template_versions
26+
LEFT JOIN visible_users ON (template_versions.created_by = visible_users.id));
27+
28+
COMMENT ON VIEW template_version_with_user IS 'Joins in the username + avatar url of the created by user.';
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
-- We cannot alter the column type while a view depends on it, so we drop it and recreate it.
2+
DROP VIEW template_version_with_user;
3+
4+
ALTER TABLE
5+
template_versions
6+
ADD
7+
COLUMN source_example_id TEXT;
8+
9+
-- Recreate `template_version_with_user` as described in dump.sql
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+
COALESCE(visible_users.avatar_url, ''::text) AS created_by_avatar_url,
26+
COALESCE(visible_users.username, ''::text) AS created_by_username
27+
FROM (template_versions
28+
LEFT JOIN visible_users ON (template_versions.created_by = visible_users.id));
29+
30+
COMMENT ON VIEW template_version_with_user IS 'Joins in the username + avatar url of the created by user.';

coderd/database/models.go

+4-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries.sql.go

+30-20
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries/templateversions.sql

+3-2
Original file line numberDiff line numberDiff line change
@@ -87,10 +87,11 @@ INSERT INTO
8787
message,
8888
readme,
8989
job_id,
90-
created_by
90+
created_by,
91+
source_example_id
9192
)
9293
VALUES
93-
($1, $2, $3, $4, $5, $6, $7, $8, $9, $10);
94+
($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11);
9495

9596
-- name: UpdateTemplateVersionByID :exec
9697
UPDATE

coderd/telemetry/telemetry.go

+9-5
Original file line numberDiff line numberDiff line change
@@ -868,6 +868,9 @@ func ConvertTemplateVersion(version database.TemplateVersion) TemplateVersion {
868868
if version.TemplateID.Valid {
869869
snapVersion.TemplateID = &version.TemplateID.UUID
870870
}
871+
if version.SourceExampleID.Valid {
872+
snapVersion.SourceExampleID = &version.SourceExampleID.String
873+
}
871874
return snapVersion
872875
}
873876

@@ -1116,11 +1119,12 @@ type Template struct {
11161119
}
11171120

11181121
type TemplateVersion struct {
1119-
ID uuid.UUID `json:"id"`
1120-
CreatedAt time.Time `json:"created_at"`
1121-
TemplateID *uuid.UUID `json:"template_id,omitempty"`
1122-
OrganizationID uuid.UUID `json:"organization_id"`
1123-
JobID uuid.UUID `json:"job_id"`
1122+
ID uuid.UUID `json:"id"`
1123+
CreatedAt time.Time `json:"created_at"`
1124+
TemplateID *uuid.UUID `json:"template_id,omitempty"`
1125+
OrganizationID uuid.UUID `json:"organization_id"`
1126+
JobID uuid.UUID `json:"job_id"`
1127+
SourceExampleID *string `json:"source_example_id,omitempty"`
11241128
}
11251129

11261130
type ProvisionerJob struct {

0 commit comments

Comments
 (0)