feat(sdk/go): bundle Create() positional parameters into options struct
Nessuno ha ancora preso questa issue.
- Lingua principale
- Rust
- Stelle
- 8.7k
- Fork
- 1.3k
- Merge medio
- 2g 7h
- PR unite (30g)
- 243
Descrizione
Summary
SandboxInterface.Create() now takes 7 positional parameters plus variadic opts after the sandbox templates refactor in PR #2781:
Create(ctx context.Context, workspace, name string, workload *SandboxWorkloadConfig,
policy *SandboxPolicy, providers []string, labels map[string]string,
opts ...CreateOptions) (*Sandbox, error)
Four consecutive nilable parameters of different types makes call sites unreadable:
client.Sandboxes().Create(ctx, "default", "my-sandbox", nil, nil, nil, nil)
Proposed Change
Bundle the creation parameters into a CreateSandboxParams struct:
type CreateSandboxParams struct {
Workload *SandboxWorkloadConfig
Policy *SandboxPolicy
Providers []string
Labels map[string]string
}
The interface becomes:
Create(ctx context.Context, workspace, name string, params CreateSandboxParams, opts ...CreateOptions) (*Sandbox, error)
This follows the k8s client-go pattern this SDK models, where creation parameters are bundled into typed structs rather than passed as positional arguments. Since PR #2781 is already a breaking change, the migration cost for this improvement is minimal.
The same pattern should apply to CreateFromTemplate() if it has a similar parameter list.
Context
Identified during PR #2781 code review (comment). The parameter list grew from 5 to 7+opts when policy and providers were promoted to top-level request fields.
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia dalle definizioni e implementazioni dell'SDK Go di SandboxInterface.Create(), quindi traccia i relativi punti di chiamata e test. Verifica se CreateFromTemplate() ha un elenco di parametri simile. Il lavoro è completato quando la struct tipizzata CreateSandboxParams viene utilizzata in modo coerente, i punti di chiamata interessati sono stati migrati e i test dell'SDK Go passano.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- go
- Ambito
- api
- Tipo di issue
- Refactoring
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Attiva
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 52/100