Skip to content

Add remaining builder patterns to redis-enterprise request structs #41

@joshrotenberg

Description

@joshrotenberg

Remaining Builder Patterns for redis-enterprise

Current Status

redis-cloud: 100% complete (6/6 structs have builders)
⚠️ redis-enterprise: 28% complete (5/18 structs have builders)

Completed in PR #40

  • ✅ CreateUserRequest / UpdateUserRequest
  • ✅ CreateRoleRequest with BdbRole
  • ✅ CreateCrdbRequest with CreateCrdbInstance

Remaining Work (13 structs)

🔴 HIGH Priority (4 structs - complex with many fields)

  1. CreateDatabaseRequest (bdb.rs)

    • 12+ fields with many optionals
    • Has custom builder that should migrate to TypedBuilder
    • Most commonly used struct
  2. BootstrapRequest (cluster.rs)

    • Nested ClusterBootstrapInfo, BootstrapCredentials
    • Critical for cluster initialization
  3. CreateMigrationRequest (migrations.rs)

    • Complex MigrationEndpoint nested types
    • Important for data migration workflows
  4. DebugInfoRequest (debuginfo.rs)

    • 6+ optional fields
    • Complex diagnostic configuration

🟡 MEDIUM Priority (6 structs - 3-5 fields)

  1. CreateScheduledJobRequest (job_scheduler.rs) - 5 fields
  2. CreateLdapMappingRequest (ldap_mappings.rs) - 5 fields
  3. CreateSuffixRequest (suffixes.rs) - 4 fields
  4. CreateRedisAclRequest (redis_acls.rs) - 3 fields
  5. CreateCrdbTaskRequest (crdb_tasks.rs) - 3 fields
  6. DiagnosticRequest (diagnostics.rs) - 3 optional fields

🟢 LOW Priority (3 structs - simple)

  1. ServiceConfigRequest (services.rs) - 3 fields
  2. NodeActionRequest (nodes.rs) - 2 fields
  3. LicenseUpdateRequest (license.rs) - 1 field

⚪ May Not Need Builder

  • UploadModuleRequest (modules.rs) - Binary data only

Recommendations

  1. Phase 1: Tackle HIGH priority structs first (biggest UX improvement)
  2. Phase 2: Add MEDIUM priority structs
  3. Phase 3: Consider if LOW priority structs need builders at all

The HIGH priority structs would provide the most value as they're complex and frequently used.

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions