public static IEnumerable <string> Get_ElasticSearchFields(IModelElasticSearchField elasticSearchField) { if (elasticSearchField != null) { var modelElasticSearchFieldList = elasticSearchField.Parent as IModelElasticSearchFieldList; if (modelElasticSearchFieldList != null) { var modelElasticSearchFieldsItem = modelElasticSearchFieldList.Parent as IModelElasticSearchFieldsItem; if (modelElasticSearchFieldsItem != null) { var typeInfo = modelElasticSearchFieldsItem.TypeInfo; if (typeInfo != null && typeInfo.Type != null) { var esFields = new HashSet <string>(); foreach (var ti in typeInfo.DescendantsAndSelf(t => t.Descendants)) { esFields.UnionWith(ElasticSearchClient.ElasticSearchFields(ti.Type, true)); } return(esFields); } } } } return(Enumerable.Empty <string>()); }
/// <summary> /// Returns an Enumeration of potential ElasticSearch Field Names /// </summary> /// <param name="suggestContext">IModelMemberElasticSearchSuggestContext instance</param> /// <returns>Enumeration of potential ElasticSearch Field Names</returns> public static IEnumerable <string> Get_ElasticSearchFields(IModelMemberElasticSearchSuggestContext suggestContext) { if (suggestContext?.Parent?.Parent is IModelElasticSearchFieldProperties esProperties) { if (!(esProperties.Parent is IModelMember member)) { var fields = esProperties.Parent as IModelMemberElasticSearchFields; member = fields?.Parent?.Parent as IModelMember; } if (member?.ModelClass?.TypeInfo?.Type != null) { var esFields = new HashSet <string>(); foreach (var ti in member.ModelClass.TypeInfo.DescendantsAndSelf(t => t.Descendants)) { esFields.UnionWith(ElasticSearchClient.ElasticSearchFields(ti.Type, false)); } return(esFields); } } return(Enumerable.Empty <string>()); }