Description
I would like to update the definition of DecayFunction
by moving the decay function configuration represented with an AdditionalProperties
behavior to DecayFunctionBase
instead of on each leaf class. This makes the definition more correct as we can access the fields in DecayPlacement
from a DecayFunction
instance, and simpler by factorizing the behavior in the common parent class.
export class DecayFunctionBase<TOrigin, TScale> extends ScoreFunctionBase
implements AdditionalProperty<Field, DecayPlacement<TOrigin, TScale>> {
multi_value_mode?: MultiValueMode
}
export class NumericDecayFunction extends DecayFunctionBase<double, double> {}
export class DateDecayFunction extends DecayFunctionBase<DateMath, Time> {}
export class GeoDecayFunction extends DecayFunctionBase<GeoLocation, Distance> {}
export type DecayFunction =
| DateDecayFunction
| NumericDecayFunction
| GeoDecayFunction
However, when doing so, the TypeScript generator doesn't generate the behavior on the DecayFunctionBase
parent class but only on child classes, and it uses the open generic parameter names instead of their actual value (see <QueryDslTOrigin, QueryDslTScale>
below):
export interface QueryDslDateDecayFunctionKeys extends QueryDslDecayFunctionBase<DateMath, Time> {
}
export type QueryDslDateDecayFunction = QueryDslDateDecayFunctionKeys |
{ [property: string]: QueryDslDecayPlacement<QueryDslTOrigin, QueryDslTScale> }
export interface QueryDslDateDistanceFeatureQuery extends QueryDslDistanceFeatureQueryBase<DateMath, Time> {
}
export type QueryDslDecayFunction = QueryDslDateDecayFunction | QueryDslNumericDecayFunction | QueryDslGeoDecayFunction
export interface QueryDslDecayFunctionBase<TOrigin = unknown, TScale = unknown> extends QueryDslScoreFunctionBase {
multi_value_mode?: QueryDslMultiValueMode
}
I tried to fix the TS generator but this is a rather complex area and did not manage to find how to fix it. Halp needed!