Skip to content

Commit 2464721

Browse files
committed
Improve declaration of untagged unions to allow for generator optimizations
1 parent 8d0b9be commit 2464721

File tree

2 files changed

+34
-62
lines changed

2 files changed

+34
-62
lines changed

specification/_types/query_dsl/compound.ts

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -171,25 +171,30 @@ export class DecayPlacement<TOrigin, TScale> {
171171
origin?: TOrigin
172172
}
173173

174-
export class DecayFunctionBase {
174+
export class DecayFunctionBase<TOrigin, TScale>
175+
implements AdditionalProperty<Field, DecayPlacement<TOrigin, TScale>>
176+
{
175177
/**
176178
* Determines how the distance is calculated when a field used for computing the decay contains multiple values.
177179
* @server_default min
178180
*/
179181
multi_value_mode?: MultiValueMode
180182
}
181183

182-
export class NumericDecayFunction
183-
extends DecayFunctionBase
184-
implements AdditionalProperty<Field, DecayPlacement<double, double>> {}
184+
export class NumericDecayFunction extends DecayFunctionBase<
185+
double,
186+
double
187+
> {}
185188

186-
export class DateDecayFunction
187-
extends DecayFunctionBase
188-
implements AdditionalProperty<Field, DecayPlacement<DateMath, Duration>> {}
189+
export class DateDecayFunction extends DecayFunctionBase<
190+
DateMath,
191+
Duration
192+
> {}
189193

190-
export class GeoDecayFunction
191-
extends DecayFunctionBase
192-
implements AdditionalProperty<Field, DecayPlacement<GeoLocation, Distance>> {}
194+
export class GeoDecayFunction extends DecayFunctionBase<
195+
GeoLocation,
196+
Distance
197+
> {}
193198

194199
/** @codegen_names date, numeric, geo */
195200
// Note: deserialization depends on value types

specification/_types/query_dsl/term.ts

Lines changed: 19 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -105,33 +105,30 @@ export class PrefixQuery extends QueryBase {
105105
case_insensitive?: boolean
106106
}
107107

108-
export class RangeQueryBase extends QueryBase {
108+
export class RangeQueryBase<T> extends QueryBase {
109109
/**
110110
* Indicates how the range query matches values for `range` fields.
111111
* @server_default intersects
112112
*/
113113
relation?: RangeRelation
114-
}
115-
116-
export class DateRangeQuery extends RangeQueryBase {
117114
/**
118115
* Greater than.
119116
*/
120-
gt?: DateMath
117+
gt?: T
121118
/**
122119
* Greater than or equal to.
123120
*/
124-
gte?: DateMath
121+
gte?: T
125122
/**
126123
* Less than.
127124
*/
128-
lt?: DateMath
125+
lt?: T
129126
/**
130127
* Less than or equal to.
131128
*/
132-
lte?: DateMath
133-
from?: DateMath | null
134-
to?: DateMath | null
129+
lte?: T
130+
from?: T | null
131+
to?: T | null
135132
/**
136133
* Date format used to convert `date` values in the query.
137134
*/
@@ -142,51 +139,21 @@ export class DateRangeQuery extends RangeQueryBase {
142139
time_zone?: TimeZone
143140
}
144141

145-
export class NumberRangeQuery extends RangeQueryBase {
146-
/**
147-
* Greater than.
148-
*/
149-
gt?: double
150-
/**
151-
* Greater than or equal to.
152-
*/
153-
gte?: double
154-
/**
155-
* Less than.
156-
*/
157-
lt?: double
158-
/**
159-
* Less than or equal to.
160-
*/
161-
lte?: double
162-
from?: double | null
163-
to?: double | null
164-
}
142+
export class DateRangeQuery extends RangeQueryBase<
143+
DateMath
144+
> {}
165145

166-
export class TermsRangeQuery extends RangeQueryBase {
167-
/**
168-
* Greater than.
169-
*/
170-
gt?: string
171-
/**
172-
* Greater than or equal to.
173-
*/
174-
gte?: string
175-
/**
176-
* Less than.
177-
*/
178-
lt?: string
179-
/**
180-
* Less than or equal to.
181-
*/
182-
lte?: string
183-
from?: string | null
184-
to?: string | null
185-
}
146+
export class NumberRangeQuery extends RangeQueryBase<
147+
double
148+
> {}
149+
150+
export class TermRangeQuery extends RangeQueryBase<
151+
string
152+
> {}
186153

187-
/** @codegen_names date, number, terms */
154+
/** @codegen_names date, number, term */
188155
// Note: deserialization depends on value types
189-
export type RangeQuery = DateRangeQuery | NumberRangeQuery | TermsRangeQuery
156+
export type RangeQuery = DateRangeQuery | NumberRangeQuery | TermRangeQuery
190157

191158
export enum RangeRelation {
192159
/**

0 commit comments

Comments
 (0)