@@ -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