Skip to content

Commit fce89e7

Browse files
committed
fix context passing
1 parent 2cdd05a commit fce89e7

11 files changed

+48
-42
lines changed

packages/api/internal/handlers/auth.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package handlers
22

33
import (
4+
"context"
45
"errors"
56
"fmt"
67
"net/http"
@@ -18,9 +19,8 @@ func (a *APIStore) GetUserID(c *gin.Context) uuid.UUID {
1819
return c.Value(auth.UserIDContextKey).(uuid.UUID)
1920
}
2021

21-
func (a *APIStore) GetUserAndTeams(c *gin.Context) (*uuid.UUID, []*types.TeamWithDefault, error) {
22+
func (a *APIStore) GetUserAndTeams(ctx context.Context, c *gin.Context) (*uuid.UUID, []*types.TeamWithDefault, error) {
2223
userID := a.GetUserID(c)
23-
ctx := c.Request.Context()
2424

2525
teams, err := dbapi.GetTeamsByUser(ctx, a.sqlcDB, userID)
2626
if err != nil {
@@ -35,19 +35,20 @@ func (a *APIStore) GetTeamInfo(c *gin.Context) *types.Team {
3535
}
3636

3737
func (a *APIStore) GetTeamAndLimits(
38+
ctx context.Context,
3839
c *gin.Context,
3940
// Deprecated: use API Token authentication instead.
4041
teamID *string,
4142
) (*types.Team, *api.APIError) {
42-
_, span := tracer.Start(c.Request.Context(), "get-team-and-tier")
43+
ctx, span := tracer.Start(ctx, "get-team-and-tier")
4344
defer span.End()
4445

4546
if c.Value(auth.TeamContextKey) != nil {
4647
teamInfo := c.Value(auth.TeamContextKey).(*types.Team)
4748

4849
return teamInfo, nil
4950
} else if c.Value(auth.UserIDContextKey) != nil {
50-
_, teams, err := a.GetUserAndTeams(c)
51+
_, teams, err := a.GetUserAndTeams(ctx, c)
5152
if err != nil {
5253
return nil, &api.APIError{
5354
Code: http.StatusInternalServerError,

packages/api/internal/handlers/deprecated_template_request_build.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ func (a *APIStore) PostTemplates(c *gin.Context) {
3333
return
3434
}
3535

36-
team, apiErr := a.GetTeamAndLimits(c, body.TeamID)
36+
team, apiErr := a.GetTeamAndLimits(ctx, c, body.TeamID)
3737
if apiErr != nil {
3838
a.sendAPIStoreError(c, apiErr.Code, apiErr.ClientMsg)
3939
telemetry.ReportCriticalError(ctx, "error when getting team and limits", apiErr.Err)
@@ -93,7 +93,7 @@ func (a *APIStore) PostTemplatesTemplateID(c *gin.Context, rawTemplateID api.Tem
9393
}
9494
span.SetAttributes(telemetry.WithTemplateID(templateID))
9595

96-
team, apiErr := a.GetTeamAndLimits(c, body.TeamID)
96+
team, apiErr := a.GetTeamAndLimits(ctx, c, body.TeamID)
9797
if apiErr != nil {
9898
a.sendAPIStoreError(c, apiErr.Code, apiErr.ClientMsg)
9999
telemetry.ReportCriticalError(ctx, "error when getting team and tier", apiErr.Err)

packages/api/internal/handlers/deprecated_template_request_build_v2.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,20 @@ import (
1212
)
1313

1414
// PostV2Templates triggers a new template build
15-
func (a *APIStore) PostV2Templates(ctx *gin.Context) {
16-
body, err := apiutils.ParseBody[api.TemplateBuildRequestV2](ctx, ctx)
15+
func (a *APIStore) PostV2Templates(c *gin.Context) {
16+
ctx := c.Request.Context()
17+
18+
body, err := apiutils.ParseBody[api.TemplateBuildRequestV2](ctx, c)
1719
if err != nil {
18-
a.sendAPIStoreError(ctx, http.StatusBadRequest, fmt.Sprintf("Invalid request body: %s", err))
20+
a.sendAPIStoreError(c, http.StatusBadRequest, fmt.Sprintf("Invalid request body: %s", err))
1921
telemetry.ReportCriticalError(ctx, "invalid request body", err)
2022

2123
return
2224
}
2325

24-
t := requestTemplateBuild(ctx, a, api.TemplateBuildRequestV3(body))
26+
t := requestTemplateBuild(ctx, c, a, api.TemplateBuildRequestV3(body))
2527
if t != nil {
26-
ctx.JSON(http.StatusAccepted, &api.TemplateLegacy{
28+
c.JSON(http.StatusAccepted, &api.TemplateLegacy{
2729
TemplateID: t.TemplateID,
2830
BuildID: t.BuildID,
2931
Public: t.Public,

packages/api/internal/handlers/deprecated_template_start_build.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ func (a *APIStore) PostTemplatesTemplateIDBuildsBuildID(c *gin.Context, template
7979
return
8080
}
8181

82-
userID, teams, err := a.GetUserAndTeams(c)
82+
userID, teams, err := a.GetUserAndTeams(ctx, c)
8383
if err != nil {
8484
a.sendAPIStoreError(c, http.StatusInternalServerError, fmt.Sprintf("Error when getting default team: %s", err))
8585

packages/api/internal/handlers/template_build_status.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ func (a *APIStore) GetTemplatesTemplateIDBuildsBuildIDStatus(c *gin.Context, tem
4848
}
4949

5050
infoTeamID := buildInfo.TeamID.String()
51-
team, apiErr := a.GetTeamAndLimits(c, &infoTeamID)
51+
team, apiErr := a.GetTeamAndLimits(ctx, c, &infoTeamID)
5252
if apiErr != nil {
5353
a.sendAPIStoreError(c, apiErr.Code, apiErr.ClientMsg)
5454
telemetry.ReportCriticalError(ctx, "error when getting team and tier", apiErr.Err)

packages/api/internal/handlers/template_delete.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ func (a *APIStore) DeleteTemplatesTemplateID(c *gin.Context, aliasOrTemplateID a
5959
}
6060

6161
dbTeamID := template.TeamID.String()
62-
team, apiErr := a.GetTeamAndLimits(c, &dbTeamID)
62+
team, apiErr := a.GetTeamAndLimits(ctx, c, &dbTeamID)
6363
if apiErr != nil {
6464
a.sendAPIStoreError(c, apiErr.Code, apiErr.ClientMsg)
6565
telemetry.ReportCriticalError(ctx, "error when getting team and tier", apiErr.Err)

packages/api/internal/handlers/template_layer_files_upload.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ func (a *APIStore) GetTemplatesTemplateIDFilesHash(c *gin.Context, templateID ap
2525
}
2626

2727
dbTeamID := templateDB.TeamID.String()
28-
team, apiErr := a.GetTeamAndLimits(c, &dbTeamID)
28+
team, apiErr := a.GetTeamAndLimits(ctx, c, &dbTeamID)
2929
if apiErr != nil {
3030
a.sendAPIStoreError(c, apiErr.Code, apiErr.ClientMsg)
3131
telemetry.ReportCriticalError(ctx, "error when getting team and tier", apiErr.Err)

packages/api/internal/handlers/template_request_build_v3.go

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package handlers
22

33
import (
4+
"context"
45
"fmt"
56
"net/http"
67

@@ -17,44 +18,46 @@ import (
1718
)
1819

1920
// PostV3Templates triggers a new template build
20-
func (a *APIStore) PostV3Templates(ctx *gin.Context) {
21-
body, err := apiutils.ParseBody[api.TemplateBuildRequestV3](ctx, ctx)
21+
func (a *APIStore) PostV3Templates(c *gin.Context) {
22+
ctx := c.Request.Context()
23+
24+
body, err := apiutils.ParseBody[api.TemplateBuildRequestV3](ctx, c)
2225
if err != nil {
23-
a.sendAPIStoreError(ctx, http.StatusBadRequest, fmt.Sprintf("Invalid request body: %s", err))
26+
a.sendAPIStoreError(c, http.StatusBadRequest, fmt.Sprintf("Invalid request body: %s", err))
2427
telemetry.ReportCriticalError(ctx, "invalid request body", err)
2528

2629
return
2730
}
2831

29-
t := requestTemplateBuild(ctx, a, body)
32+
t := requestTemplateBuild(ctx, c, a, body)
3033
if t != nil {
31-
ctx.JSON(http.StatusAccepted, t)
34+
c.JSON(http.StatusAccepted, t)
3235
}
3336
}
3437

35-
func requestTemplateBuild(ctx *gin.Context, a *APIStore, body api.TemplateBuildRequestV3) *api.TemplateRequestResponseV3 {
36-
telemetry.ReportEvent(ctx, "started environment build")
38+
func requestTemplateBuild(ctx context.Context, c *gin.Context, a *APIStore, body api.TemplateBuildRequestV3) *api.TemplateRequestResponseV3 {
39+
telemetry.ReportEvent(c, "started environment build")
3740

3841
// Prepare info for rebuilding env
39-
team, apiErr := a.GetTeamAndLimits(ctx, body.TeamID)
42+
team, apiErr := a.GetTeamAndLimits(ctx, c, body.TeamID)
4043
if apiErr != nil {
41-
a.sendAPIStoreError(ctx, apiErr.Code, apiErr.ClientMsg)
42-
telemetry.ReportCriticalError(ctx, "error when getting team, limits", apiErr.Err)
44+
a.sendAPIStoreError(c, apiErr.Code, apiErr.ClientMsg)
45+
telemetry.ReportCriticalError(c, "error when getting team, limits", apiErr.Err)
4346

4447
return nil
4548
}
4649

4750
// Create the build, find the template ID by alias or generate a new one
48-
_, span := tracer.Start(ctx, "find-template-alias")
51+
_, span := tracer.Start(c, "find-template-alias")
4952
defer span.End()
5053
templateID := id.Generate()
5154
public := false
52-
templateAlias, err := a.sqlcDB.GetTemplateAliasByAlias(ctx, body.Alias)
55+
templateAlias, err := a.sqlcDB.GetTemplateAliasByAlias(c, body.Alias)
5356
switch {
5457
case err == nil:
5558
if templateAlias.TeamID != team.ID {
56-
a.sendAPIStoreError(ctx, http.StatusBadRequest, fmt.Sprintf("Alias `%s` is already taken", body.Alias))
57-
telemetry.ReportError(ctx, "template alias is already taken", nil, telemetry.WithTemplateID(templateAlias.EnvID), telemetry.WithTeamID(team.ID.String()), attribute.String("alias", body.Alias))
59+
a.sendAPIStoreError(c, http.StatusBadRequest, fmt.Sprintf("Alias `%s` is already taken", body.Alias))
60+
telemetry.ReportError(c, "template alias is already taken", nil, telemetry.WithTemplateID(templateAlias.EnvID), telemetry.WithTeamID(team.ID.String()), attribute.String("alias", body.Alias))
5861

5962
return nil
6063
}
@@ -64,17 +67,17 @@ func requestTemplateBuild(ctx *gin.Context, a *APIStore, body api.TemplateBuildR
6467
case dberrors.IsNotFoundError(err):
6568
// Alias is available and not used
6669
default:
67-
a.sendAPIStoreError(ctx, http.StatusInternalServerError, fmt.Sprintf("Error when getting template alias: %s", err))
68-
telemetry.ReportCriticalError(ctx, "error when getting template alias", err)
70+
a.sendAPIStoreError(c, http.StatusInternalServerError, fmt.Sprintf("Error when getting template alias: %s", err))
71+
telemetry.ReportCriticalError(c, "error when getting template alias", err)
6972

7073
return nil
7174
}
7275
span.End()
7376

74-
builderNodeID, err := a.templateManager.GetAvailableBuildClient(ctx, apiutils.WithClusterFallback(team.ClusterID))
77+
builderNodeID, err := a.templateManager.GetAvailableBuildClient(c, apiutils.WithClusterFallback(team.ClusterID))
7578
if err != nil {
76-
a.sendAPIStoreError(ctx, http.StatusInternalServerError, "Error when getting available build client")
77-
telemetry.ReportCriticalError(ctx, "error when getting available build client", err, telemetry.WithTemplateID(templateID))
79+
a.sendAPIStoreError(c, http.StatusInternalServerError, "Error when getting available build client")
80+
telemetry.ReportCriticalError(c, "error when getting available build client", err, telemetry.WithTemplateID(templateID))
7881

7982
return nil
8083
}
@@ -91,17 +94,17 @@ func requestTemplateBuild(ctx *gin.Context, a *APIStore, body api.TemplateBuildR
9194
Version: templates.TemplateV2LatestVersion,
9295
}
9396

94-
template, apiError := template.RegisterBuild(ctx, a.templateBuildsCache, a.db, buildReq)
97+
template, apiError := template.RegisterBuild(c, a.templateBuildsCache, a.db, buildReq)
9598
if apiError != nil {
96-
a.sendAPIStoreError(ctx, apiError.Code, apiError.ClientMsg)
97-
telemetry.ReportCriticalError(ctx, "build template register failed", apiError.Err)
99+
a.sendAPIStoreError(c, apiError.Code, apiError.ClientMsg)
100+
telemetry.ReportCriticalError(c, "build template register failed", apiError.Err)
98101

99102
return nil
100103
}
101104

102-
_, span = tracer.Start(ctx, "posthog-analytics")
105+
_, span = tracer.Start(c, "posthog-analytics")
103106
defer span.End()
104-
properties := a.posthog.GetPackageToPosthogProperties(&ctx.Request.Header)
107+
properties := a.posthog.GetPackageToPosthogProperties(&c.Request.Header)
105108
a.posthog.IdentifyAnalyticsTeam(team.ID.String(), team.Name)
106109
a.posthog.CreateAnalyticsTeamEvent(team.ID.String(), "submitted environment build request", properties.
107110
Set("environment", template.TemplateID).

packages/api/internal/handlers/template_start_build_v2.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ func (a *APIStore) PostV2TemplatesTemplateIDBuildsBuildID(c *gin.Context, templa
6969
}
7070

7171
dbTeamID := templateBuildDB.Env.TeamID.String()
72-
team, apiErr := a.GetTeamAndLimits(c, &dbTeamID)
72+
team, apiErr := a.GetTeamAndLimits(ctx, c, &dbTeamID)
7373
if apiErr != nil {
7474
a.sendAPIStoreError(c, apiErr.Code, apiErr.ClientMsg)
7575
telemetry.ReportCriticalError(ctx, "error when getting team and tier", apiErr.Err)

packages/api/internal/handlers/template_update.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ func (a *APIStore) PatchTemplatesTemplateID(c *gin.Context, aliasOrTemplateID ap
6565
}
6666

6767
dbTeamID := template.TeamID.String()
68-
team, apiErr := a.GetTeamAndLimits(c, &dbTeamID)
68+
team, apiErr := a.GetTeamAndLimits(ctx, c, &dbTeamID)
6969
if apiErr != nil {
7070
a.sendAPIStoreError(c, apiErr.Code, apiErr.ClientMsg)
7171
telemetry.ReportCriticalError(ctx, "error when getting team and tier", apiErr.Err)

0 commit comments

Comments
 (0)