Skip to content

Commit d1b16de

Browse files
committed
refactor: also changing how fields are set into the createdatabase object
1 parent 1dd4bdc commit d1b16de

File tree

2 files changed

+64
-28
lines changed

2 files changed

+64
-28
lines changed

provider/resource_rediscloud_pro_database.go

Lines changed: 24 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -401,41 +401,37 @@ func resourceRedisCloudProDatabaseCreate(ctx context.Context, d *schema.Resource
401401
RemoteBackup: buildBackupPlan(d.Get("remote_backup").([]interface{}), d.Get("periodic_backup_path")),
402402
}
403403

404-
if v, ok := d.GetOk("query_performance_factor"); ok {
405-
createDatabase.QueryPerformanceFactor = redis.String(v.(string))
406-
}
404+
utils.SetStringIfNotEmpty(d, "query_performance_factor", func(s *string) {
405+
createDatabase.QueryPerformanceFactor = s
406+
})
407407

408-
if v, ok := d.GetOk("redis_version"); ok {
409-
createDatabase.RedisVersion = redis.String(v.(string))
410-
}
408+
utils.SetStringIfNotEmpty(d, "redis_version", func(s *string) {
409+
createDatabase.RedisVersion = s
410+
})
411411

412-
if v, ok := d.GetOk("password"); ok {
413-
createDatabase.Password = redis.String(v.(string))
414-
}
412+
utils.SetStringIfNotEmpty(d, "password", func(s *string) {
413+
createDatabase.Password = s
414+
})
415415

416-
if v, ok := d.GetOk("average_item_size_in_bytes"); ok {
417-
if size, valid := v.(int); valid && size > 0 {
418-
createDatabase.AverageItemSizeInBytes = redis.Int(size)
419-
}
420-
}
416+
utils.SetIntIfPositive(d, "average_item_size_in_bytes", func(i *int) {
417+
createDatabase.AverageItemSizeInBytes = i
418+
})
421419

422-
if v, ok := d.GetOk("dataset_size_in_gb"); ok {
423-
createDatabase.DatasetSizeInGB = redis.Float64(v.(float64))
424-
}
420+
utils.SetFloat64(d, "dataset_size_in_gb", func(f *float64) {
421+
createDatabase.DatasetSizeInGB = f
422+
})
425423

426-
if v, ok := d.GetOk("memory_limit_in_gb"); ok {
427-
createDatabase.MemoryLimitInGB = redis.Float64(v.(float64))
428-
}
424+
utils.SetFloat64(d, "memory_limit_in_gb", func(f *float64) {
425+
createDatabase.MemoryLimitInGB = f
426+
})
429427

430-
if v, ok := d.GetOk("port"); ok {
431-
createDatabase.PortNumber = redis.Int(v.(int))
432-
}
428+
utils.SetInt(d, "port", func(i *int) {
429+
createDatabase.PortNumber = i
430+
})
433431

434-
if v, ok := d.GetOk("resp_version"); ok {
435-
if s, valid := v.(string); valid && s != "" {
436-
createDatabase.RespVersion = redis.String(s)
437-
}
438-
}
432+
utils.SetStringIfNotEmpty(d, "resp_version", func(s *string) {
433+
createDatabase.RespVersion = s
434+
})
439435

440436
// Confirm sub is ready to accept a db request
441437
if err := waitForSubscriptionToBeActive(ctx, subId, api); err != nil {

provider/utils/utils.go

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,43 @@ func GetInt(d *schema.ResourceData, key string) *int {
2828
}
2929
return redis.Int(0)
3030
}
31+
32+
func SetStringIfNotEmpty(d *schema.ResourceData, key string, setter func(*string)) {
33+
if v, ok := d.GetOk(key); ok {
34+
if s, valid := v.(string); valid && s != "" {
35+
setter(redis.String(s))
36+
}
37+
}
38+
}
39+
40+
func SetIntIfPositive(d *schema.ResourceData, key string, setter func(*int)) {
41+
if v, ok := d.GetOk(key); ok {
42+
if i, valid := v.(int); valid && i > 0 {
43+
setter(redis.Int(i))
44+
}
45+
}
46+
}
47+
48+
func SetInt(d *schema.ResourceData, key string, setter func(*int)) {
49+
if v, ok := d.GetOk(key); ok {
50+
if i, valid := v.(int); valid {
51+
setter(redis.Int(i))
52+
}
53+
}
54+
}
55+
56+
func SetFloat64(d *schema.ResourceData, key string, setter func(*float64)) {
57+
if v, ok := d.GetOk(key); ok {
58+
if f, valid := v.(float64); valid {
59+
setter(redis.Float64(f))
60+
}
61+
}
62+
}
63+
64+
func SetBool(d *schema.ResourceData, key string, setter func(*bool)) {
65+
if v, ok := d.GetOk(key); ok {
66+
if b, valid := v.(bool); valid {
67+
setter(redis.Bool(b))
68+
}
69+
}
70+
}

0 commit comments

Comments
 (0)