Skip to content

Commit 12c4bb5

Browse files
hugodutkastirby
authored andcommitted
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 (cherry picked from commit b830c05)
1 parent 45d9274 commit 12c4bb5

File tree

14 files changed

+167
-54
lines changed

14 files changed

+167
-54
lines changed

coderd/database/dbgen/dbgen.go

Lines changed: 11 additions & 10 deletions
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

Lines changed: 11 additions & 10 deletions
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

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: 28 additions & 0 deletions
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.';
Lines changed: 30 additions & 0 deletions
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

Lines changed: 4 additions & 2 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: 30 additions & 20 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: 3 additions & 2 deletions
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

Lines changed: 9 additions & 5 deletions
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)
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