Skip to content

Commit 46e0953

Browse files
refactor: Show template versions as timeline (coder#4800)
1 parent cc65567 commit 46e0953

21 files changed

+218
-218
lines changed

cli/templateversions.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ func displayTemplateVersions(activeVersionID uuid.UUID, templateVersions ...code
9494
rows[i] = templateVersionRow{
9595
Name: templateVersion.Name,
9696
CreatedAt: templateVersion.CreatedAt,
97-
CreatedBy: templateVersion.CreatedByName,
97+
CreatedBy: templateVersion.CreatedBy.Username,
9898
Status: strings.Title(string(templateVersion.Job.Status)),
9999
Active: activeStatus,
100100
}

cli/templateversions_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func TestTemplateVersions(t *testing.T) {
3535
require.NoError(t, <-errC)
3636

3737
pty.ExpectMatch(version.Name)
38-
pty.ExpectMatch(version.CreatedByName)
38+
pty.ExpectMatch(version.CreatedBy.Username)
3939
pty.ExpectMatch("Active")
4040
})
4141
}

coderd/database/dump.sql

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ALTER TABLE template_versions ALTER COLUMN created_by DROP NOT NULL;
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
BEGIN;
2+
ALTER TABLE template_versions ALTER COLUMN created_by SET NOT NULL;
3+
UPDATE template_versions SET created_by = '00000000-0000-0000-0000-000000000000'::uuid WHERE created_by IS NULL;
4+
COMMIT;

coderd/database/models.go

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

coderd/templates.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -658,10 +658,7 @@ func (api *API) autoImportTemplate(ctx context.Context, opts autoImportTemplateO
658658
Name: namesgenerator.GetRandomName(1),
659659
Readme: "",
660660
JobID: job.ID,
661-
CreatedBy: uuid.NullUUID{
662-
UUID: opts.userID,
663-
Valid: true,
664-
},
661+
CreatedBy: opts.userID,
665662
})
666663
if err != nil {
667664
return xerrors.Errorf("insert template version: %w", err)

coderd/templateversions.go

Lines changed: 23 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package coderd
22

33
import (
4-
"context"
54
"database/sql"
65
"encoding/json"
76
"errors"
@@ -43,16 +42,16 @@ func (api *API) templateVersion(rw http.ResponseWriter, r *http.Request) {
4342
return
4443
}
4544

46-
createdByName, err := getUsernameByUserID(ctx, api.Database, templateVersion.CreatedBy)
45+
user, err := api.Database.GetUserByID(ctx, templateVersion.CreatedBy)
4746
if err != nil {
4847
httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
49-
Message: "Internal error fetching creator name.",
48+
Message: "Internal error on fetching user.",
5049
Detail: err.Error(),
5150
})
5251
return
5352
}
5453

55-
httpapi.Write(ctx, rw, http.StatusOK, convertTemplateVersion(templateVersion, convertProvisionerJob(job), createdByName))
54+
httpapi.Write(ctx, rw, http.StatusOK, convertTemplateVersion(templateVersion, convertProvisionerJob(job), user))
5655
}
5756

5857
func (api *API) patchCancelTemplateVersion(rw http.ResponseWriter, r *http.Request) {
@@ -523,15 +522,15 @@ func (api *API) templateVersionsByTemplate(rw http.ResponseWriter, r *http.Reque
523522
})
524523
return err
525524
}
526-
createdByName, err := getUsernameByUserID(ctx, store, version.CreatedBy)
525+
user, err := store.GetUserByID(ctx, version.CreatedBy)
527526
if err != nil {
528527
httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
529-
Message: "Internal error fetching creator name.",
528+
Message: "Internal error on fetching user.",
530529
Detail: err.Error(),
531530
})
532531
return err
533532
}
534-
apiVersions = append(apiVersions, convertTemplateVersion(version, convertProvisionerJob(job), createdByName))
533+
apiVersions = append(apiVersions, convertTemplateVersion(version, convertProvisionerJob(job), user))
535534
}
536535

537536
return nil
@@ -581,16 +580,16 @@ func (api *API) templateVersionByName(rw http.ResponseWriter, r *http.Request) {
581580
return
582581
}
583582

584-
createdByName, err := getUsernameByUserID(ctx, api.Database, templateVersion.CreatedBy)
583+
user, err := api.Database.GetUserByID(ctx, templateVersion.CreatedBy)
585584
if err != nil {
586585
httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
587-
Message: "Internal error fetching creator name.",
586+
Message: "Internal error on fetching user.",
588587
Detail: err.Error(),
589588
})
590589
return
591590
}
592591

593-
httpapi.Write(ctx, rw, http.StatusOK, convertTemplateVersion(templateVersion, convertProvisionerJob(job), createdByName))
592+
httpapi.Write(ctx, rw, http.StatusOK, convertTemplateVersion(templateVersion, convertProvisionerJob(job), user))
594593
}
595594

596595
func (api *API) patchActiveTemplateVersion(rw http.ResponseWriter, r *http.Request) {
@@ -841,10 +840,7 @@ func (api *API) postTemplateVersionsByOrganization(rw http.ResponseWriter, r *ht
841840
Name: req.Name,
842841
Readme: "",
843842
JobID: provisionerJob.ID,
844-
CreatedBy: uuid.NullUUID{
845-
UUID: apiKey.UserID,
846-
Valid: true,
847-
},
843+
CreatedBy: apiKey.UserID,
848844
})
849845
if err != nil {
850846
return xerrors.Errorf("insert template version: %w", err)
@@ -859,16 +855,16 @@ func (api *API) postTemplateVersionsByOrganization(rw http.ResponseWriter, r *ht
859855
}
860856
aReq.New = templateVersion
861857

862-
createdByName, err := getUsernameByUserID(ctx, api.Database, templateVersion.CreatedBy)
858+
user, err := api.Database.GetUserByID(ctx, templateVersion.CreatedBy)
863859
if err != nil {
864860
httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
865-
Message: "Internal error fetching creator name.",
861+
Message: "Internal error on fetching user.",
866862
Detail: err.Error(),
867863
})
868864
return
869865
}
870866

871-
httpapi.Write(ctx, rw, http.StatusCreated, convertTemplateVersion(templateVersion, convertProvisionerJob(provisionerJob), createdByName))
867+
httpapi.Write(ctx, rw, http.StatusCreated, convertTemplateVersion(templateVersion, convertProvisionerJob(provisionerJob), user))
872868
}
873869

874870
// templateVersionResources returns the workspace agent resources associated
@@ -926,18 +922,17 @@ func (api *API) templateVersionLogs(rw http.ResponseWriter, r *http.Request) {
926922
api.provisionerJobLogs(rw, r, job)
927923
}
928924

929-
func getUsernameByUserID(ctx context.Context, db database.Store, userID uuid.NullUUID) (string, error) {
930-
if !userID.Valid {
931-
return "", nil
932-
}
933-
user, err := db.GetUserByID(ctx, userID.UUID)
934-
if err != nil {
935-
return "", err
925+
func convertTemplateVersion(version database.TemplateVersion, job codersdk.ProvisionerJob, user database.User) codersdk.TemplateVersion {
926+
createdBy := codersdk.User{
927+
ID: user.ID,
928+
Username: user.Username,
929+
Email: user.Email,
930+
CreatedAt: user.CreatedAt,
931+
Status: codersdk.UserStatus(user.Status),
932+
Roles: []codersdk.Role{},
933+
AvatarURL: user.AvatarURL.String,
936934
}
937-
return user.Username, nil
938-
}
939935

940-
func convertTemplateVersion(version database.TemplateVersion, job codersdk.ProvisionerJob, createdByName string) codersdk.TemplateVersion {
941936
return codersdk.TemplateVersion{
942937
ID: version.ID,
943938
TemplateID: &version.TemplateID.UUID,
@@ -947,7 +942,6 @@ func convertTemplateVersion(version database.TemplateVersion, job codersdk.Provi
947942
Name: version.Name,
948943
Job: job,
949944
Readme: version.Readme,
950-
CreatedByID: version.CreatedBy.UUID,
951-
CreatedByName: createdByName,
945+
CreatedBy: createdBy,
952946
}
953947
}

codersdk/templateversions.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,7 @@ type TemplateVersion struct {
2121
Name string `json:"name"`
2222
Job ProvisionerJob `json:"job"`
2323
Readme string `json:"readme"`
24-
CreatedByID uuid.UUID `json:"created_by_id"`
25-
CreatedByName string `json:"created_by_name"`
24+
CreatedBy User `json:"created_by"`
2625
}
2726

2827
// TemplateVersion returns a template version by ID.

0 commit comments

Comments
 (0)