Skip to content

Commit f3a9380

Browse files
Add getDependencies call for each state handling method (#3016)
1 parent 79f099e commit f3a9380

File tree

1 file changed

+33
-10
lines changed

1 file changed

+33
-10
lines changed

tools/scaffolder/internal/generate/versioned_handler.go

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ func generateVersionHandlerFile(dir, resourceName, typesPath, resultPath string,
2424
return nil
2525
}
2626
}
27-
27+
2828
referenceFields, err := ParseReferenceFields(resultPath, resourceName)
2929
if err != nil {
3030
return fmt.Errorf("failed to parse reference fields: %w", err)
@@ -86,22 +86,45 @@ func generateVersionStateHandlers(f *jen.File, resourceName, apiPkg, versionSuff
8686
{"HandleDeleting", "StateDeleted", "Deleted"},
8787
}
8888

89+
resourceVarName := strings.ToLower(resourceName)
90+
8991
for _, handler := range handlers {
9092
f.Comment(fmt.Sprintf("%s handles the %s state for version %s", handler.name, strings.ToLower(strings.TrimPrefix(handler.name, "Handle")), versionSuffix))
91-
f.Func().Params(jen.Id("h").Op("*").Id("Handler"+versionSuffix)).Id(handler.name).Params(
92-
jen.Id("ctx").Qual("context", "Context"),
93-
jen.Id(strings.ToLower(resourceName)).Op("*").Qual(apiPkg, resourceName),
94-
).Params(
95-
jen.Qual(pkgCtrlState, "Result"),
96-
jen.Error(),
97-
).Block(
98-
jen.Comment("TODO: Implement "+strings.ToLower(strings.TrimPrefix(handler.name, "Handle"))+" state logic"),
93+
94+
// Build the method body with getDependencies call
95+
methodBody := []jen.Code{
96+
jen.List(jen.Id("_"), jen.Err()).Op(":=").Id("h").Dot("getDependencies").Call(
97+
jen.Id("ctx"),
98+
jen.Id(resourceVarName),
99+
),
100+
jen.If(jen.Err().Op("!=").Nil()).Block(
101+
jen.Return(
102+
jen.Qual("github.com/mongodb/mongodb-atlas-kubernetes/v2/pkg/result", "Error").Call(
103+
jen.Qual("github.com/mongodb/mongodb-atlas-kubernetes/v2/pkg/state", "State"+strings.TrimPrefix(handler.name, "Handle")),
104+
jen.Qual("fmt", "Errorf").Call(
105+
jen.Lit(fmt.Sprintf("failed to resolve %s dependencies: %%w", resourceName)),
106+
jen.Err(),
107+
),
108+
),
109+
),
110+
),
111+
jen.Line(),
112+
jen.Comment("TODO: Implement " + strings.ToLower(strings.TrimPrefix(handler.name, "Handle")) + " state logic"),
99113
jen.Comment("TODO: Use h.atlasProvider.SdkClientSet(ctx, h.globalSecretRef, h.log) to get Atlas SDK client"),
114+
jen.Comment("TODO: Replace _ with deps and use deps variable when calling h.translator.ToAPI() methods"),
100115
jen.Return(jen.Qual("github.com/mongodb/mongodb-atlas-kubernetes/v2/pkg/result", "NextState").Call(
101116
jen.Qual("github.com/mongodb/mongodb-atlas-kubernetes/v2/pkg/state", handler.nextState),
102117
jen.Lit(handler.message),
103118
)),
104-
)
119+
}
120+
121+
f.Func().Params(jen.Id("h").Op("*").Id("Handler"+versionSuffix)).Id(handler.name).Params(
122+
jen.Id("ctx").Qual("context", "Context"),
123+
jen.Id(resourceVarName).Op("*").Qual(apiPkg, resourceName),
124+
).Params(
125+
jen.Qual(pkgCtrlState, "Result"),
126+
jen.Error(),
127+
).Block(methodBody...)
105128
}
106129
}
107130

0 commit comments

Comments
 (0)