1
1
package coderd
2
2
3
3
import (
4
+ "context"
4
5
"database/sql"
5
6
"encoding/json"
6
7
"errors"
@@ -36,7 +37,16 @@ func (api *API) templateVersion(rw http.ResponseWriter, r *http.Request) {
36
37
return
37
38
}
38
39
39
- httpapi .Write (rw , http .StatusOK , convertTemplateVersion (templateVersion , convertProvisionerJob (job )))
40
+ createdByName , err := getUsernameByUserID (r .Context (), api .Database , templateVersion .CreatedBy )
41
+ if err != nil {
42
+ httpapi .Write (rw , http .StatusInternalServerError , codersdk.Response {
43
+ Message : "Internal error fetching creator name." ,
44
+ Detail : err .Error (),
45
+ })
46
+ return
47
+ }
48
+
49
+ httpapi .Write (rw , http .StatusOK , convertTemplateVersion (templateVersion , convertProvisionerJob (job ), createdByName ))
40
50
}
41
51
42
52
func (api * API ) patchCancelTemplateVersion (rw http.ResponseWriter , r * http.Request ) {
@@ -476,7 +486,15 @@ func (api *API) templateVersionsByTemplate(rw http.ResponseWriter, r *http.Reque
476
486
})
477
487
return err
478
488
}
479
- apiVersions = append (apiVersions , convertTemplateVersion (version , convertProvisionerJob (job )))
489
+ createdByName , err := getUsernameByUserID (r .Context (), store , version .CreatedBy )
490
+ if err != nil {
491
+ httpapi .Write (rw , http .StatusInternalServerError , codersdk.Response {
492
+ Message : "Internal error fetching creator name." ,
493
+ Detail : err .Error (),
494
+ })
495
+ return err
496
+ }
497
+ apiVersions = append (apiVersions , convertTemplateVersion (version , convertProvisionerJob (job ), createdByName ))
480
498
}
481
499
482
500
return nil
@@ -525,7 +543,16 @@ func (api *API) templateVersionByName(rw http.ResponseWriter, r *http.Request) {
525
543
return
526
544
}
527
545
528
- httpapi .Write (rw , http .StatusOK , convertTemplateVersion (templateVersion , convertProvisionerJob (job )))
546
+ createdByName , err := getUsernameByUserID (r .Context (), api .Database , templateVersion .CreatedBy )
547
+ if err != nil {
548
+ httpapi .Write (rw , http .StatusInternalServerError , codersdk.Response {
549
+ Message : "Internal error fetching creator name." ,
550
+ Detail : err .Error (),
551
+ })
552
+ return
553
+ }
554
+
555
+ httpapi .Write (rw , http .StatusOK , convertTemplateVersion (templateVersion , convertProvisionerJob (job ), createdByName ))
529
556
}
530
557
531
558
func (api * API ) patchActiveTemplateVersion (rw http.ResponseWriter , r * http.Request ) {
@@ -735,6 +762,10 @@ func (api *API) postTemplateVersionsByOrganization(rw http.ResponseWriter, r *ht
735
762
Name : namesgenerator .GetRandomName (1 ),
736
763
Readme : "" ,
737
764
JobID : provisionerJob .ID ,
765
+ CreatedBy : uuid.NullUUID {
766
+ UUID : apiKey .UserID ,
767
+ Valid : true ,
768
+ },
738
769
})
739
770
if err != nil {
740
771
return xerrors .Errorf ("insert template version: %w" , err )
@@ -748,7 +779,16 @@ func (api *API) postTemplateVersionsByOrganization(rw http.ResponseWriter, r *ht
748
779
return
749
780
}
750
781
751
- httpapi .Write (rw , http .StatusCreated , convertTemplateVersion (templateVersion , convertProvisionerJob (provisionerJob )))
782
+ createdByName , err := getUsernameByUserID (r .Context (), api .Database , templateVersion .CreatedBy )
783
+ if err != nil {
784
+ httpapi .Write (rw , http .StatusInternalServerError , codersdk.Response {
785
+ Message : "Internal error fetching creator name." ,
786
+ Detail : err .Error (),
787
+ })
788
+ return
789
+ }
790
+
791
+ httpapi .Write (rw , http .StatusCreated , convertTemplateVersion (templateVersion , convertProvisionerJob (provisionerJob ), createdByName ))
752
792
}
753
793
754
794
// templateVersionResources returns the workspace agent resources associated
@@ -796,7 +836,18 @@ func (api *API) templateVersionLogs(rw http.ResponseWriter, r *http.Request) {
796
836
api .provisionerJobLogs (rw , r , job )
797
837
}
798
838
799
- func convertTemplateVersion (version database.TemplateVersion , job codersdk.ProvisionerJob ) codersdk.TemplateVersion {
839
+ func getUsernameByUserID (ctx context.Context , db database.Store , userID uuid.NullUUID ) (string , error ) {
840
+ if ! userID .Valid {
841
+ return "" , nil
842
+ }
843
+ user , err := db .GetUserByID (ctx , userID .UUID )
844
+ if err != nil {
845
+ return "" , err
846
+ }
847
+ return user .Username , nil
848
+ }
849
+
850
+ func convertTemplateVersion (version database.TemplateVersion , job codersdk.ProvisionerJob , createdByName string ) codersdk.TemplateVersion {
800
851
return codersdk.TemplateVersion {
801
852
ID : version .ID ,
802
853
TemplateID : & version .TemplateID .UUID ,
@@ -806,5 +857,7 @@ func convertTemplateVersion(version database.TemplateVersion, job codersdk.Provi
806
857
Name : version .Name ,
807
858
Job : job ,
808
859
Readme : version .Readme ,
860
+ CreatedByID : version .CreatedBy .UUID ,
861
+ CreatedByName : createdByName ,
809
862
}
810
863
}
0 commit comments