Skip to content

Commit 6636afc

Browse files
authored
Fix inconsistent team_id in project_deployment_retention resource (#323)
Closes #322
1 parent dac8d92 commit 6636afc

File tree

3 files changed

+36
-22
lines changed

3 files changed

+36
-22
lines changed

client/project_deployment_retention.go

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ type UpdateDeploymentRetentionRequest struct {
2424
TeamID string
2525
}
2626

27+
type DeploymentExpirationResponse struct {
28+
DeploymentExpiration
29+
TeamID string `json:"-"`
30+
}
31+
2732
// DeleteDeploymentRetention will remove any existing deployment retention for a given project.
2833
func (c *Client) DeleteDeploymentRetention(ctx context.Context, projectID, teamID string) error {
2934
url := fmt.Sprintf("%s/v9/projects/%s/deployment-expiration", c.baseURL, projectID)
@@ -77,17 +82,20 @@ var DeploymentRetentionStringToDays = map[string]int{
7782
"unlimited": 36500,
7883
}
7984

80-
func (d deploymentExpirationResponse) toDeploymentExpiration() DeploymentExpiration {
81-
return DeploymentExpiration{
82-
ExpirationPreview: DeploymentRetentionStringToDays[d.DeploymentExpiration.Expiration],
83-
ExpirationProduction: DeploymentRetentionStringToDays[d.DeploymentExpiration.ExpirationProduction],
84-
ExpirationCanceled: DeploymentRetentionStringToDays[d.DeploymentExpiration.ExpirationCanceled],
85-
ExpirationErrored: DeploymentRetentionStringToDays[d.DeploymentExpiration.ExpirationErrored],
85+
func (d deploymentExpirationResponse) toDeploymentExpirationResponse(teamID string) DeploymentExpirationResponse {
86+
return DeploymentExpirationResponse{
87+
DeploymentExpiration: DeploymentExpiration{
88+
ExpirationPreview: DeploymentRetentionStringToDays[d.DeploymentExpiration.Expiration],
89+
ExpirationProduction: DeploymentRetentionStringToDays[d.DeploymentExpiration.ExpirationProduction],
90+
ExpirationCanceled: DeploymentRetentionStringToDays[d.DeploymentExpiration.ExpirationCanceled],
91+
ExpirationErrored: DeploymentRetentionStringToDays[d.DeploymentExpiration.ExpirationErrored],
92+
},
93+
TeamID: teamID,
8694
}
8795
}
8896

8997
// UpdateDeploymentRetention will update an existing deployment retention to the latest information.
90-
func (c *Client) UpdateDeploymentRetention(ctx context.Context, request UpdateDeploymentRetentionRequest) (DeploymentExpiration, error) {
98+
func (c *Client) UpdateDeploymentRetention(ctx context.Context, request UpdateDeploymentRetentionRequest) (DeploymentExpirationResponse, error) {
9199
url := fmt.Sprintf("%s/v9/projects/%s/deployment-expiration", c.baseURL, request.ProjectID)
92100
if c.teamID(request.TeamID) != "" {
93101
url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID))
@@ -105,11 +113,11 @@ func (c *Client) UpdateDeploymentRetention(ctx context.Context, request UpdateDe
105113
url: url,
106114
body: payload,
107115
}, &d)
108-
return d.toDeploymentExpiration(), err
116+
return d.toDeploymentExpirationResponse(c.teamID(request.TeamID)), err
109117
}
110118

111119
// GetDeploymentRetention returns the deployment retention for a given project.
112-
func (c *Client) GetDeploymentRetention(ctx context.Context, projectID, teamID string) (d DeploymentExpiration, err error) {
120+
func (c *Client) GetDeploymentRetention(ctx context.Context, projectID, teamID string) (d DeploymentExpirationResponse, err error) {
113121
url := fmt.Sprintf("%s/v2/projects/%s", c.baseURL, projectID)
114122
if c.teamID(teamID) != "" {
115123
url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID))
@@ -126,12 +134,18 @@ func (c *Client) GetDeploymentRetention(ctx context.Context, projectID, teamID s
126134
body: "",
127135
}, &p)
128136
if p.DeploymentExpiration == nil {
129-
return DeploymentExpiration{
130-
ExpirationPreview: 36500,
131-
ExpirationProduction: 36500,
132-
ExpirationCanceled: 36500,
133-
ExpirationErrored: 36500,
137+
return DeploymentExpirationResponse{
138+
DeploymentExpiration: DeploymentExpiration{
139+
ExpirationPreview: 36500,
140+
ExpirationProduction: 36500,
141+
ExpirationCanceled: 36500,
142+
ExpirationErrored: 36500,
143+
},
144+
TeamID: c.teamID(teamID),
134145
}, nil
135146
}
136-
return *p.DeploymentExpiration, err
147+
return DeploymentExpirationResponse{
148+
DeploymentExpiration: *p.DeploymentExpiration,
149+
TeamID: c.teamID(teamID),
150+
}, err
137151
}

vercel/data_source_project_deployment_retention.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ func (r *projectDeploymentRetentionDataSource) Read(ctx context.Context, req dat
122122
return
123123
}
124124

125-
result := convertResponseToProjectDeploymentRetention(out, config.ProjectID, config.TeamID)
125+
result := convertResponseToProjectDeploymentRetention(out, config.ProjectID)
126126
tflog.Info(ctx, "read project deployment retention", map[string]any{
127127
"team_id": result.TeamID.ValueString(),
128128
"project_id": result.ProjectID.ValueString(),

vercel/resource_project_deployment_retention.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -140,13 +140,13 @@ func (e *ProjectDeploymentRetention) toUpdateDeploymentRetentionRequest() client
140140
// convertResponseToProjectDeploymentRetention is used to populate terraform state based on an API response.
141141
// Where possible, values from the API response are used to populate state. If not possible,
142142
// values from plan are used.
143-
func convertResponseToProjectDeploymentRetention(response client.DeploymentExpiration, projectID types.String, teamID types.String) ProjectDeploymentRetention {
143+
func convertResponseToProjectDeploymentRetention(response client.DeploymentExpirationResponse, projectID types.String) ProjectDeploymentRetention {
144144
return ProjectDeploymentRetention{
145145
ExpirationPreview: types.StringValue(client.DeploymentRetentionDaysToString[response.ExpirationPreview]),
146146
ExpirationProduction: types.StringValue(client.DeploymentRetentionDaysToString[response.ExpirationProduction]),
147147
ExpirationCanceled: types.StringValue(client.DeploymentRetentionDaysToString[response.ExpirationCanceled]),
148148
ExpirationErrored: types.StringValue(client.DeploymentRetentionDaysToString[response.ExpirationErrored]),
149-
TeamID: teamID,
149+
TeamID: types.StringValue(response.TeamID),
150150
ProjectID: projectID,
151151
}
152152
}
@@ -186,7 +186,7 @@ func (r *projectDeploymentRetentionResource) Create(ctx context.Context, req res
186186
return
187187
}
188188

189-
result := convertResponseToProjectDeploymentRetention(response, plan.ProjectID, plan.TeamID)
189+
result := convertResponseToProjectDeploymentRetention(response, plan.ProjectID)
190190

191191
tflog.Info(ctx, "created project deployment retention", map[string]any{
192192
"team_id": result.TeamID.ValueString(),
@@ -227,7 +227,7 @@ func (r *projectDeploymentRetentionResource) Read(ctx context.Context, req resou
227227
return
228228
}
229229

230-
result := convertResponseToProjectDeploymentRetention(out, state.ProjectID, state.TeamID)
230+
result := convertResponseToProjectDeploymentRetention(out, state.ProjectID)
231231
tflog.Info(ctx, "read project deployment retention", map[string]any{
232232
"team_id": result.TeamID.ValueString(),
233233
"project_id": result.ProjectID.ValueString(),
@@ -289,7 +289,7 @@ func (r *projectDeploymentRetentionResource) Update(ctx context.Context, req res
289289
return
290290
}
291291

292-
result := convertResponseToProjectDeploymentRetention(response, plan.ProjectID, plan.TeamID)
292+
result := convertResponseToProjectDeploymentRetention(response, plan.ProjectID)
293293

294294
tflog.Info(ctx, "updated project deployment retention", map[string]any{
295295
"team_id": result.TeamID.ValueString(),
@@ -327,7 +327,7 @@ func (r *projectDeploymentRetentionResource) ImportState(ctx context.Context, re
327327
return
328328
}
329329

330-
result := convertResponseToProjectDeploymentRetention(out, types.StringValue(projectID), types.StringValue(teamID))
330+
result := convertResponseToProjectDeploymentRetention(out, types.StringValue(projectID))
331331
tflog.Info(ctx, "imported project deployment retention", map[string]any{
332332
"team_id": result.TeamID.ValueString(),
333333
"project_id": result.ProjectID.ValueString(),

0 commit comments

Comments
 (0)