import { encoder } from 'src/utils/encoder'; import { decoder } from 'src/utils/decoder'; import { QueryFilterFilterPropertyOperator as dQueryFilterFilterPropertyOperator } from 'src/types/enums/proto/meta/QueryFilterFilterPropertyOperator'; import { Query_Sort_Sort, Query_Filter_FilterProperty_Operator, TimeResolution } from 'src/.generated/meta/v1/meta'; import { QuerySortSort as dQuerySortSort } from 'src/types/enums/proto/meta/QuerySortSort'; import { TimeResolution as dTimeResolution } from 'src/types/enums/proto/meta/TimeResolution'; export type dQueryFilterFilterProperty = { operator: (dQueryFilterFilterPropertyOperator | keyof typeof dQueryFilterFilterPropertyOperator) | undefined; }; export type eQueryFilterFilterProperty = { operator: (Query_Filter_FilterProperty_Operator | keyof typeof Query_Filter_FilterProperty_Operator) | undefined; }; export type dQuerySortSortProperty = { sort: dQuerySortSort | keyof typeof dQuerySortSort; }; export type eQuerySortSortProperty = { sort: Query_Sort_Sort | keyof typeof Query_Sort_Sort; }; export type dTimeOffset = { resolution: dTimeResolution | keyof typeof dTimeResolution; }; export type eTimeOffset = { resolution: TimeResolution | keyof typeof TimeResolution; }; export function encodeQueryFilterFilterProperty< TOut extends eQueryFilterFilterProperty, TIn extends Partial & { toJSON?: () => Partial } & unknown >( obj: TIn ): Omit & TOut { return encoder([ ['operator', dQueryFilterFilterPropertyOperator, Query_Filter_FilterProperty_Operator], ], obj.toJSON ? obj.toJSON() : obj); } export function decodeQueryFilterFilterProperty< TOut extends dQueryFilterFilterProperty, TIn extends Partial & { toJSON?: () => Partial } & unknown >( obj: TIn ): Omit & TOut { return decoder([ ['operator', Query_Filter_FilterProperty_Operator, dQueryFilterFilterPropertyOperator], ], obj.toJSON ? obj.toJSON() : obj); } export function encodeQuerySortSortProperty< TOut extends eQuerySortSortProperty, TIn extends Partial & { toJSON?: () => Partial } & unknown >( obj: TIn ): Omit & TOut { return encoder([ ['sort', dQuerySortSort, Query_Sort_Sort], ], obj.toJSON ? obj.toJSON() : obj); } export function decodeQuerySortSortProperty< TOut extends dQuerySortSortProperty, TIn extends Partial & { toJSON?: () => Partial } & unknown >( obj: TIn ): Omit & TOut { return decoder([ ['sort', Query_Sort_Sort, dQuerySortSort], ], obj.toJSON ? obj.toJSON() : obj); } export function encodeTimeOffset< TOut extends eTimeOffset, TIn extends Partial & { toJSON?: () => Partial } & unknown >( obj: TIn ): Omit & TOut { return encoder([ ['resolution', dTimeResolution, TimeResolution], ], obj.toJSON ? obj.toJSON() : obj); } export function decodeTimeOffset< TOut extends dTimeOffset, TIn extends Partial & { toJSON?: () => Partial } & unknown >( obj: TIn ): Omit & TOut { return decoder([ ['resolution', TimeResolution, dTimeResolution], ], obj.toJSON ? obj.toJSON() : obj); }