func BodyDefinitionFromBlock()

in internal/langserver/handlers/tfschema/body_candidates.go [43:69]


func BodyDefinitionFromBlock(block *hclsyntax.Block) types.TypeBase {
	typeValue := parser.ExtractAzureResourceType(block)
	if typeValue == nil {
		return nil
	}
	var bodyDef types.TypeBase
	def, err := azure.GetResourceDefinitionByResourceType(*typeValue)
	if err != nil || def == nil {
		return nil
	}
	bodyDef = def
	if len(block.Labels) >= 2 && block.Labels[0] == "azapi_resource_action" {
		parts := strings.Split(*typeValue, "@")
		if len(parts) != 2 {
			return nil
		}
		actionName := parser.ExtractAction(block)
		if actionName != nil && len(*actionName) != 0 {
			resourceFuncDef, err := azure.GetResourceFunction(parts[0], parts[1], *actionName)
			if err != nil || resourceFuncDef == nil {
				return nil
			}
			bodyDef = resourceFuncDef
		}
	}
	return bodyDef
}