11package postgres
22
33import (
4- "reflect"
5-
64 "github.com/render-oss/cli/internal/ipallowlist"
75 "github.com/render-oss/cli/pkg/client"
86 pgclient "github.com/render-oss/cli/pkg/client/postgres"
@@ -64,13 +62,12 @@ type PostgresUpdateOut struct {
6462}
6563
6664type PostgresUpdateDiff struct {
67- Name * PostgresFieldDiff [string ] `json:"name,omitempty"`
68- Plan * PostgresFieldDiff [pgclient.PostgresPlans ] `json:"plan,omitempty"`
69- DiskSizeGB * PostgresFieldDiff [* int ] `json:"diskSizeGB,omitempty"`
70- DiskAutoscalingEnabled * PostgresFieldDiff [bool ] `json:"diskAutoscalingEnabled,omitempty"`
71- HighAvailabilityEnabled * PostgresFieldDiff [bool ] `json:"highAvailabilityEnabled,omitempty"`
72- IPAllowList * PostgresFieldDiff [[]client.CidrBlockAndDescription ] `json:"ipAllowList,omitempty"`
73- ParameterOverrides * PostgresFieldDiff [* client.PostgresParameterOverrides ] `json:"parameterOverrides,omitempty"`
65+ Name * PostgresFieldDiff [string ] `json:"name,omitempty"`
66+ Plan * PostgresFieldDiff [pgclient.PostgresPlans ] `json:"plan,omitempty"`
67+ DiskSizeGB * PostgresFieldDiff [* int ] `json:"diskSizeGB,omitempty"`
68+ DiskAutoscalingEnabled * PostgresFieldDiff [bool ] `json:"diskAutoscalingEnabled,omitempty"`
69+ HighAvailabilityEnabled * PostgresFieldDiff [bool ] `json:"highAvailabilityEnabled,omitempty"`
70+ IPAllowList * PostgresFieldDiff [[]client.CidrBlockAndDescription ] `json:"ipAllowList,omitempty"`
7471}
7572
7673type PostgresFieldDiff [T any ] struct {
@@ -160,14 +157,6 @@ func newPostgresUpdateDiff(before *client.PostgresDetail, after *PostgresOut) Po
160157 if ! ipallowlist .Equal (before .IpAllowList , after .IpAllowList ) {
161158 diff .IPAllowList = newPostgresFieldDiff (before .IpAllowList , after .IpAllowList )
162159 }
163- beforeOverrides := normalizePostgresParameterOverrides (before .ParameterOverrides )
164- afterOverrides := normalizePostgresParameterOverrides (after .ParameterOverrides )
165- if ! reflect .DeepEqual (beforeOverrides , afterOverrides ) {
166- diff .ParameterOverrides = newPostgresFieldDiff (
167- beforeOverrides ,
168- afterOverrides ,
169- )
170- }
171160 return diff
172161}
173162
@@ -194,9 +183,10 @@ func finalizePostgresOut(out *PostgresOut, project *client.Project, env *client.
194183 if out .ReadReplicas == nil {
195184 out .ReadReplicas = client.ReadReplicas {}
196185 }
197- if out .ParameterOverrides != nil && len (* out .ParameterOverrides ) == 0 {
198- out .ParameterOverrides = nil
199- }
186+ // Parameter overrides are still early in rollout, so keep them out of
187+ // CLI-facing output even when the API/client type carries populated values.
188+ out .ParameterOverrides = nil
189+ hideReadReplicaParameterOverrides (out .ReadReplicas )
200190 if env != nil {
201191 out .EnvironmentId = & env .Id
202192 out .EnvironmentName = env .Name
@@ -214,6 +204,7 @@ func finalizePostgresListItemOut(out *PostgresListItemOut, project *client.Proje
214204 if out .ReadReplicas == nil {
215205 out .ReadReplicas = client.ReadReplicas {}
216206 }
207+ hideReadReplicaParameterOverrides (out .ReadReplicas )
217208 if env != nil {
218209 out .EnvironmentId = & env .Id
219210 out .EnvironmentName = env .Name
@@ -231,9 +222,10 @@ func newPostgresFieldDiff[T any](before, after T) *PostgresFieldDiff[T] {
231222 }
232223}
233224
234- func normalizePostgresParameterOverrides (overrides * client.PostgresParameterOverrides ) * client.PostgresParameterOverrides {
235- if overrides == nil || len (* overrides ) == 0 {
236- return nil
225+ func hideReadReplicaParameterOverrides (replicas client.ReadReplicas ) {
226+ // Read replicas share the same early-rollout parameter override field, so
227+ // omit it from list/detail output until the feature is generally available.
228+ for i := range replicas {
229+ replicas [i ].ParameterOverrides = nil
237230 }
238- return overrides
239231}
0 commit comments