Skip to content

Commit c6ca8f7

Browse files
committed
feat(provider): keep track of content-type update counts, use them as offsets to editor-interface versions
1 parent 53f3ad1 commit c6ca8f7

4 files changed

Lines changed: 44 additions & 2 deletions

File tree

internal/provider/content_type_resource.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,8 @@ func (r *contentTypeResource) Update(ctx context.Context, req resource.UpdateReq
250250

251251
resp.Diagnostics.Append(util.PrivateDataSetValue(ctx, resp.Private, "version", currentVersion)...)
252252
resp.Diagnostics.Append(resp.State.Set(ctx, &data)...)
253+
254+
r.providerData.editorInterfaceVersionOffset.Increment(data.ContentTypeId.ValueString())
253255
}
254256

255257
//nolint:cyclop

internal/provider/editor_interface_resource.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ func (r *editorInterfaceResource) Create(ctx context.Context, req resource.Creat
5757
}
5858

5959
currentVersion := 1
60+
currentVersion += r.providerData.editorInterfaceVersionOffset.Get(data.ContentTypeId.ValueString())
6061

6162
params := contentfulManagement.PutEditorInterfaceParams{
6263
SpaceID: data.SpaceId.ValueString(),
@@ -92,6 +93,8 @@ func (r *editorInterfaceResource) Create(ctx context.Context, req resource.Creat
9293

9394
resp.Diagnostics.Append(util.PrivateDataSetValue(ctx, resp.Private, "version", currentVersion)...)
9495
resp.Diagnostics.Append(resp.State.Set(ctx, &data)...)
96+
97+
r.providerData.editorInterfaceVersionOffset.Reset(data.ContentTypeId.ValueString())
9598
}
9699

97100
func (r *editorInterfaceResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) {
@@ -143,6 +146,8 @@ func (r *editorInterfaceResource) Read(ctx context.Context, req resource.ReadReq
143146

144147
resp.Diagnostics.Append(util.PrivateDataSetValue(ctx, resp.Private, "version", currentVersion)...)
145148
resp.Diagnostics.Append(resp.State.Set(ctx, &data)...)
149+
150+
r.providerData.editorInterfaceVersionOffset.Reset(data.ContentTypeId.ValueString())
146151
}
147152

148153
func (r *editorInterfaceResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) {
@@ -158,6 +163,8 @@ func (r *editorInterfaceResource) Update(ctx context.Context, req resource.Updat
158163
currentVersionDiags := util.PrivateDataGetValue(ctx, req.Private, "version", &currentVersion)
159164
resp.Diagnostics.Append(currentVersionDiags...)
160165

166+
currentVersion += r.providerData.editorInterfaceVersionOffset.Get(data.ContentTypeId.ValueString())
167+
161168
params := contentfulManagement.PutEditorInterfaceParams{
162169
SpaceID: data.SpaceId.ValueString(),
163170
EnvironmentID: data.EnvironmentId.ValueString(),
@@ -196,6 +203,8 @@ func (r *editorInterfaceResource) Update(ctx context.Context, req resource.Updat
196203

197204
resp.Diagnostics.Append(util.PrivateDataSetValue(ctx, resp.Private, "version", currentVersion)...)
198205
resp.Diagnostics.Append(resp.State.Set(ctx, &data)...)
206+
207+
r.providerData.editorInterfaceVersionOffset.Reset(data.ContentTypeId.ValueString())
199208
}
200209

201210
func (r *editorInterfaceResource) Delete(_ context.Context, _ resource.DeleteRequest, _ *resource.DeleteResponse) {

internal/provider/provider.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,13 @@ func (p *ContentfulProvider) Configure(ctx context.Context, req provider.Configu
8989
resp.Diagnostics.AddError("Failed to create Contentful client: %s", err.Error())
9090
}
9191

92-
resp.DataSourceData = ContentfulProviderData{client: contentfulManagementClient}
93-
resp.ResourceData = ContentfulProviderData{client: contentfulManagementClient}
92+
providerData := ContentfulProviderData{
93+
client: contentfulManagementClient,
94+
editorInterfaceVersionOffset: &ContentfulContentTypeCounter{},
95+
}
96+
97+
resp.DataSourceData = providerData
98+
resp.ResourceData = providerData
9499
}
95100

96101
func (p *ContentfulProvider) Metadata(_ context.Context, _ provider.MetadataRequest, resp *provider.MetadataResponse) {

internal/provider/provider_data.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,30 @@ import (
66

77
type ContentfulProviderData struct {
88
client *contentfulManagement.Client
9+
10+
editorInterfaceVersionOffset *ContentfulContentTypeCounter
11+
}
12+
13+
type ContentfulContentTypeCounter struct {
14+
m map[string]int
15+
}
16+
17+
func (c *ContentfulContentTypeCounter) getOrCreateMap() map[string]int {
18+
if c.m == nil {
19+
c.m = make(map[string]int)
20+
}
21+
22+
return c.m
23+
}
24+
25+
func (c *ContentfulContentTypeCounter) Get(contentTypeID string) int {
26+
return c.getOrCreateMap()[contentTypeID]
27+
}
28+
29+
func (c *ContentfulContentTypeCounter) Reset(contentTypeID string) {
30+
delete(c.getOrCreateMap(), contentTypeID)
31+
}
32+
33+
func (c *ContentfulContentTypeCounter) Increment(contentTypeID string) {
34+
c.getOrCreateMap()[contentTypeID]++
935
}

0 commit comments

Comments
 (0)