11using System ;
2+ using System . Collections . Generic ;
3+ using System . Linq . Expressions ;
24
35namespace Nest
46{
57 public class SingleMappingDescriptor < T > :
68 DescriptorBase < SingleMappingDescriptor < T > , IPropertiesDescriptor < T , IProperty > > , IPropertiesDescriptor < T , IProperty >
79 where T : class
810 {
9-
1011 [ Obsolete ( "Only valid for indices created before Elasticsearch 5.0 and will be removed in the next major version. For newly created indices, use `text` or `keyword` instead." ) ]
1112 public IProperty String ( Func < StringPropertyDescriptor < T > , IStringProperty > selector ) =>
1213 selector ? . Invoke ( new StringPropertyDescriptor < T > ( ) ) ;
@@ -17,6 +18,10 @@ public IProperty Text(Func<TextPropertyDescriptor<T>, ITextProperty> selector) =
1718 public IProperty Keyword ( Func < KeywordPropertyDescriptor < T > , IKeywordProperty > selector ) =>
1819 selector ? . Invoke ( new KeywordPropertyDescriptor < T > ( ) ) ;
1920
21+ /// <summary>
22+ /// Number introduces a numeric mapping that defaults to `float` use .Type() to set the right type if needed or use
23+ /// Scalar instead of <see cref="Number"/>
24+ /// </summary>
2025 public IProperty Number ( Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
2126 selector ? . Invoke ( new NumberPropertyDescriptor < T > ( ) ) ;
2227
@@ -28,7 +33,7 @@ public IProperty Boolean(Func<BooleanPropertyDescriptor<T>, IBooleanProperty> se
2833
2934 public IProperty Binary ( Func < BinaryPropertyDescriptor < T > , IBinaryProperty > selector ) =>
3035 selector ? . Invoke ( new BinaryPropertyDescriptor < T > ( ) ) ;
31-
36+ /
3237 public IProperty Attachment ( Func < AttachmentPropertyDescriptor < T > , IAttachmentProperty > selector ) =>
3338 selector ? . Invoke ( new AttachmentPropertyDescriptor < T > ( ) ) ;
3439
@@ -61,5 +66,157 @@ public IProperty Generic(Func<GenericPropertyDescriptor<T>, IGenericProperty> se
6166
6267 public IProperty Percolator ( Func < PercolatorPropertyDescriptor < T > , IPercolatorProperty > selector ) =>
6368 selector ? . Invoke ( new PercolatorPropertyDescriptor < T > ( ) ) ;
69+
70+ #pragma warning disable CS3001 // Argument type is not CLS-compliant
71+ public IProperty Scalar ( Expression < Func < T , int > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
72+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Integer ) ) ;
73+ public IProperty Scalar ( Expression < Func < T , IEnumerable < int > > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
74+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Integer ) ) ;
75+ public IProperty Scalar ( Expression < Func < T , int ? > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
76+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Integer ) ) ;
77+ public IProperty Scalar ( Expression < Func < T , IEnumerable < int ? > > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
78+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Integer ) ) ;
79+
80+ public IProperty Scalar ( Expression < Func < T , float > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
81+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Float ) ) ;
82+ public IProperty Scalar ( Expression < Func < T , IEnumerable < float > > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
83+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Float ) ) ;
84+ public IProperty Scalar ( Expression < Func < T , float ? > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
85+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Float ) ) ;
86+ public IProperty Scalar ( Expression < Func < T , IEnumerable < float ? > > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
87+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Float ) ) ;
88+
89+ public IProperty Scalar ( Expression < Func < T , sbyte > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
90+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Byte ) ) ;
91+ public IProperty Scalar ( Expression < Func < T , sbyte ? > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
92+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Byte ) ) ;
93+ public IProperty Scalar ( Expression < Func < T , IEnumerable < sbyte > > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
94+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Byte ) ) ;
95+ public IProperty Scalar ( Expression < Func < T , IEnumerable < sbyte ? > > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
96+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Byte ) ) ;
97+
98+ public IProperty Scalar ( Expression < Func < T , short > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
99+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Short ) ) ;
100+ public IProperty Scalar ( Expression < Func < T , short ? > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
101+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Short ) ) ;
102+ public IProperty Scalar ( Expression < Func < T , IEnumerable < short > > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
103+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Short ) ) ;
104+ public IProperty Scalar ( Expression < Func < T , IEnumerable < short ? > > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
105+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Short ) ) ;
106+
107+ public IProperty Scalar ( Expression < Func < T , byte > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
108+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Short ) ) ;
109+ public IProperty Scalar ( Expression < Func < T , byte ? > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
110+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Short ) ) ;
111+ public IProperty Scalar ( Expression < Func < T , IEnumerable < byte > > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
112+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Short ) ) ;
113+ public IProperty Scalar ( Expression < Func < T , IEnumerable < byte ? > > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
114+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Short ) ) ;
115+
116+ public IProperty Scalar ( Expression < Func < T , long > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
117+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Long ) ) ;
118+ public IProperty Scalar ( Expression < Func < T , long ? > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
119+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Long ) ) ;
120+ public IProperty Scalar ( Expression < Func < T , IEnumerable < long > > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
121+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Long ) ) ;
122+ public IProperty Scalar ( Expression < Func < T , IEnumerable < long ? > > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
123+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Long ) ) ;
124+
125+ public IProperty Scalar ( Expression < Func < T , uint > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
126+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Long ) ) ;
127+ public IProperty Scalar ( Expression < Func < T , uint ? > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
128+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Long ) ) ;
129+ public IProperty Scalar ( Expression < Func < T , IEnumerable < uint > > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
130+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Long ) ) ;
131+ public IProperty Scalar ( Expression < Func < T , IEnumerable < uint ? > > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
132+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Long ) ) ;
133+
134+ public IProperty Scalar ( Expression < Func < T , TimeSpan > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
135+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Long ) ) ;
136+ public IProperty Scalar ( Expression < Func < T , TimeSpan ? > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
137+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Long ) ) ;
138+ public IProperty Scalar ( Expression < Func < T , IEnumerable < TimeSpan > > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
139+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Long ) ) ;
140+ public IProperty Scalar ( Expression < Func < T , IEnumerable < TimeSpan ? > > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
141+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Long ) ) ;
142+
143+ public IProperty Scalar ( Expression < Func < T , decimal > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
144+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Double ) ) ;
145+ public IProperty Scalar ( Expression < Func < T , decimal ? > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
146+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Double ) ) ;
147+ public IProperty Scalar ( Expression < Func < T , IEnumerable < decimal > > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
148+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Double ) ) ;
149+ public IProperty Scalar ( Expression < Func < T , IEnumerable < decimal ? > > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
150+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Double ) ) ;
151+
152+ public IProperty Scalar ( Expression < Func < T , ulong > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
153+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Double ) ) ;
154+ public IProperty Scalar ( Expression < Func < T , ulong ? > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
155+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Double ) ) ;
156+ public IProperty Scalar ( Expression < Func < T , IEnumerable < ulong > > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
157+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Double ) ) ;
158+ public IProperty Scalar ( Expression < Func < T , IEnumerable < ulong ? > > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
159+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Double ) ) ;
160+
161+ public IProperty Scalar ( Expression < Func < T , double > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
162+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Double ) ) ;
163+ public IProperty Scalar ( Expression < Func < T , double ? > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
164+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Double ) ) ;
165+ public IProperty Scalar ( Expression < Func < T , IEnumerable < double > > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
166+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Double ) ) ;
167+ public IProperty Scalar ( Expression < Func < T , IEnumerable < double ? > > > field , Func < NumberPropertyDescriptor < T > , INumberProperty > selector ) =>
168+ selector . InvokeOrDefault ( new NumberPropertyDescriptor < T > ( ) . Name ( field ) . Type ( NumberType . Double ) ) ;
169+
170+ public IProperty Scalar ( Expression < Func < T , DateTime > > field , Func < DatePropertyDescriptor < T > , IDateProperty > selector ) =>
171+ selector . InvokeOrDefault ( new DatePropertyDescriptor < T > ( ) . Name ( field ) ) ;
172+ public IProperty Scalar ( Expression < Func < T , DateTime ? > > field , Func < DatePropertyDescriptor < T > , IDateProperty > selector ) =>
173+ selector . InvokeOrDefault ( new DatePropertyDescriptor < T > ( ) . Name ( field ) ) ;
174+ public IProperty Scalar ( Expression < Func < T , IEnumerable < DateTime > > > field , Func < DatePropertyDescriptor < T > , IDateProperty > selector ) =>
175+ selector . InvokeOrDefault ( new DatePropertyDescriptor < T > ( ) . Name ( field ) ) ;
176+ public IProperty Scalar ( Expression < Func < T , IEnumerable < DateTime ? > > > field , Func < DatePropertyDescriptor < T > , IDateProperty > selector ) =>
177+ selector . InvokeOrDefault ( new DatePropertyDescriptor < T > ( ) . Name ( field ) ) ;
178+
179+ public IProperty Scalar ( Expression < Func < T , DateTimeOffset > > field , Func < DatePropertyDescriptor < T > , IDateProperty > selector ) =>
180+ selector . InvokeOrDefault ( new DatePropertyDescriptor < T > ( ) . Name ( field ) ) ;
181+ public IProperty Scalar ( Expression < Func < T , DateTimeOffset ? > > field , Func < DatePropertyDescriptor < T > , IDateProperty > selector ) =>
182+ selector . InvokeOrDefault ( new DatePropertyDescriptor < T > ( ) . Name ( field ) ) ;
183+ public IProperty Scalar ( Expression < Func < T , IEnumerable < DateTimeOffset > > > field , Func < DatePropertyDescriptor < T > , IDateProperty > selector ) =>
184+ selector . InvokeOrDefault ( new DatePropertyDescriptor < T > ( ) . Name ( field ) ) ;
185+ public IProperty Scalar ( Expression < Func < T , IEnumerable < DateTimeOffset ? > > > field , Func < DatePropertyDescriptor < T > , IDateProperty > selector ) =>
186+ selector . InvokeOrDefault ( new DatePropertyDescriptor < T > ( ) . Name ( field ) ) ;
187+
188+ public IProperty Scalar ( Expression < Func < T , bool > > field , Func < BooleanPropertyDescriptor < T > , IBooleanProperty > selector ) =>
189+ selector . InvokeOrDefault ( new BooleanPropertyDescriptor < T > ( ) . Name ( field ) ) ;
190+ public IProperty Scalar ( Expression < Func < T , bool ? > > field , Func < BooleanPropertyDescriptor < T > , IBooleanProperty > selector ) =>
191+ selector . InvokeOrDefault ( new BooleanPropertyDescriptor < T > ( ) . Name ( field ) ) ;
192+ public IProperty Scalar ( Expression < Func < T , IEnumerable < bool > > > field , Func < BooleanPropertyDescriptor < T > , IBooleanProperty > selector ) =>
193+ selector . InvokeOrDefault ( new BooleanPropertyDescriptor < T > ( ) . Name ( field ) ) ;
194+ public IProperty Scalar ( Expression < Func < T , IEnumerable < bool ? > > > field , Func < BooleanPropertyDescriptor < T > , IBooleanProperty > selector ) =>
195+ selector . InvokeOrDefault ( new BooleanPropertyDescriptor < T > ( ) . Name ( field ) ) ;
196+
197+ public IProperty Scalar ( Expression < Func < T , char > > field , Func < KeywordPropertyDescriptor < T > , IKeywordProperty > selector ) =>
198+ selector . InvokeOrDefault ( new KeywordPropertyDescriptor < T > ( ) . Name ( field ) ) ;
199+ public IProperty Scalar ( Expression < Func < T , char ? > > field , Func < KeywordPropertyDescriptor < T > , IKeywordProperty > selector ) =>
200+ selector . InvokeOrDefault ( new KeywordPropertyDescriptor < T > ( ) . Name ( field ) ) ;
201+ public IProperty Scalar ( Expression < Func < T , IEnumerable < char > > > field , Func < KeywordPropertyDescriptor < T > , IKeywordProperty > selector ) =>
202+ selector . InvokeOrDefault ( new KeywordPropertyDescriptor < T > ( ) . Name ( field ) ) ;
203+ public IProperty Scalar ( Expression < Func < T , IEnumerable < char ? > > > field , Func < KeywordPropertyDescriptor < T > , IKeywordProperty > selector ) =>
204+ selector . InvokeOrDefault ( new KeywordPropertyDescriptor < T > ( ) . Name ( field ) ) ;
205+
206+ public IProperty Scalar ( Expression < Func < T , Guid > > field , Func < KeywordPropertyDescriptor < T > , IKeywordProperty > selector ) =>
207+ selector . InvokeOrDefault ( new KeywordPropertyDescriptor < T > ( ) . Name ( field ) ) ;
208+ public IProperty Scalar ( Expression < Func < T , Guid ? > > field , Func < KeywordPropertyDescriptor < T > , IKeywordProperty > selector ) =>
209+ selector . InvokeOrDefault ( new KeywordPropertyDescriptor < T > ( ) . Name ( field ) ) ;
210+ public IProperty Scalar ( Expression < Func < T , IEnumerable < Guid > > > field , Func < KeywordPropertyDescriptor < T > , IKeywordProperty > selector ) =>
211+ selector . InvokeOrDefault ( new KeywordPropertyDescriptor < T > ( ) . Name ( field ) ) ;
212+ public IProperty Scalar ( Expression < Func < T , IEnumerable < Guid ? > > > field , Func < KeywordPropertyDescriptor < T > , IKeywordProperty > selector ) =>
213+ selector . InvokeOrDefault ( new KeywordPropertyDescriptor < T > ( ) . Name ( field ) ) ;
214+
215+
216+ public IProperty Scalar ( Expression < Func < T , string > > field , Func < TextPropertyDescriptor < T > , ITextProperty > selector ) =>
217+ selector . InvokeOrDefault ( new TextPropertyDescriptor < T > ( ) . Name ( field ) ) ;
218+ public IProperty Scalar ( Expression < Func < T , IEnumerable < string > > > field , Func < TextPropertyDescriptor < T > , ITextProperty > selector ) =>
219+ selector . InvokeOrDefault ( new TextPropertyDescriptor < T > ( ) . Name ( field ) ) ;
220+ #pragma warning restore CS3001 // Argument type is not CLS-compliant
64221 }
65222}
0 commit comments