Skip to content

Commit 5c10124

Browse files
committed
implement pagination for the sites data source
1 parent ef6e341 commit 5c10124

File tree

3 files changed

+17
-6
lines changed

3 files changed

+17
-6
lines changed

examples/dns/main.tf

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ resource "netlify_dns_record" "fish" {
5252
priority = 10
5353
}
5454

55-
# TODO: verify this returns all DNS records
5655
data "netlify_dns_zone" "example" {
5756
name = "example-tf-test-test.com"
5857
depends_on = [

examples/site_data_sources/main.tf

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ data "netlify_site" "platform_test" {
1919
name = "platform-test-1"
2020
}
2121

22-
# TODO: verify this returns all sites
2322
data "netlify_sites" "all" {
2423
account_slug = "netlify-testing"
2524
}

internal/provider/sites_data_source.go

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"github.com/hashicorp/terraform-plugin-framework/datasource"
88
"github.com/hashicorp/terraform-plugin-framework/datasource/schema"
99
"github.com/hashicorp/terraform-plugin-framework/types"
10+
"github.com/netlify/terraform-provider-netlify/internal/netlifyapi"
1011
)
1112

1213
var (
@@ -96,10 +97,22 @@ func (d *sitesDataSource) Read(ctx context.Context, req datasource.ReadRequest,
9697
return
9798
}
9899

99-
sites, _, err := d.data.client.SitesAPI.ListSitesForAccount(ctx, config.AccountSlug.ValueString()).Execute()
100-
if err != nil {
101-
resp.Diagnostics.AddError("Error reading Netlify account", fmt.Sprintf("Could not list Netlify sites in account %q: %q", config.AccountSlug.ValueString(), err.Error()))
102-
return
100+
r := d.data.client.SitesAPI.
101+
ListSitesForAccount(ctx, config.AccountSlug.ValueString()).
102+
PerPage(100)
103+
sites := make([]netlifyapi.Site, 0)
104+
var page int64 = 1
105+
for {
106+
items, _, err := r.Page(page).Execute()
107+
if err != nil {
108+
resp.Diagnostics.AddError("Error reading Netlify account", fmt.Sprintf("Could not list Netlify sites in account %q: %q", config.AccountSlug.ValueString(), err.Error()))
109+
return
110+
}
111+
if len(items) == 0 {
112+
break
113+
}
114+
sites = append(sites, items...)
115+
page++
103116
}
104117
config.Sites = make([]sitesSiteModel, len(sites))
105118
for i, site := range sites {

0 commit comments

Comments
 (0)