Skip to content

Commit e0de6b3

Browse files
committed
remove code duplication in conversion
1 parent 0eca749 commit e0de6b3

1 file changed

Lines changed: 31 additions & 58 deletions

File tree

lib/collection/src/operations/universal_query/shard_query.rs

Lines changed: 31 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use api::conversions::json::proto_to_json;
22
use api::grpc::conversions::grpc_condition_into_condition;
3-
use api::grpc::qdrant as grpc;
3+
use api::grpc::{DecayParamsExpression, qdrant as grpc};
44
use common::types::ScoreType;
55
use itertools::Itertools;
66
use segment::data_types::order_by::OrderBy;
@@ -457,72 +457,45 @@ impl TryFrom<grpc::Expression> for ExpressionInternal {
457457
ExpressionInternal::Log10(Box::new((*expression).try_into()?))
458458
}
459459
Variant::Ln(expression) => ExpressionInternal::Ln(Box::new((*expression).try_into()?)),
460-
Variant::ExpDecay(exp_decay_expression) => {
461-
let grpc::DecayParamsExpression {
462-
x,
463-
target,
464-
midpoint,
465-
scale,
466-
} = *exp_decay_expression;
467-
468-
let x = *x.ok_or_else(|| tonic::Status::invalid_argument("missing field: x"))?;
469-
470-
let target = target.map(|t| (*t).try_into()).transpose()?.map(Box::new);
471-
472-
ExpressionInternal::Decay {
473-
kind: DecayKind::Exp,
474-
x: Box::new(x.try_into()?),
475-
target,
476-
midpoint,
477-
scale,
478-
}
460+
Variant::LinDecay(decay_params) => {
461+
try_from_decay_params(*decay_params, DecayKind::Lin)?
479462
}
480-
Variant::GaussDecay(gauss_decay_expression) => {
481-
let grpc::DecayParamsExpression {
482-
x,
483-
target,
484-
midpoint,
485-
scale,
486-
} = *gauss_decay_expression;
487-
488-
let x = *x.ok_or_else(|| tonic::Status::invalid_argument("missing field: x"))?;
489-
490-
let target = target.map(|t| (*t).try_into()).transpose()?.map(Box::new);
491-
492-
ExpressionInternal::Decay {
493-
kind: DecayKind::Gauss,
494-
x: Box::new(x.try_into()?),
495-
target,
496-
midpoint,
497-
scale,
498-
}
463+
Variant::ExpDecay(decay_params) => {
464+
try_from_decay_params(*decay_params, DecayKind::Exp)?
499465
}
500-
Variant::LinDecay(lin_decay_expression) => {
501-
let grpc::DecayParamsExpression {
502-
x,
503-
target,
504-
midpoint,
505-
scale,
506-
} = *lin_decay_expression;
507-
508-
let x = *x.ok_or_else(|| tonic::Status::invalid_argument("missing field: x"))?;
509-
510-
let target = target.map(|t| (*t).try_into()).transpose()?.map(Box::new);
511-
512-
ExpressionInternal::Decay {
513-
kind: DecayKind::Lin,
514-
x: Box::new(x.try_into()?),
515-
target,
516-
midpoint,
517-
scale,
518-
}
466+
Variant::GaussDecay(decay_params) => {
467+
try_from_decay_params(*decay_params, DecayKind::Gauss)?
519468
}
520469
};
521470

522471
Ok(expression)
523472
}
524473
}
525474

475+
fn try_from_decay_params(
476+
params: DecayParamsExpression,
477+
kind: DecayKind,
478+
) -> Result<ExpressionInternal, Status> {
479+
let grpc::DecayParamsExpression {
480+
x,
481+
target,
482+
midpoint,
483+
scale,
484+
} = params;
485+
486+
let x = *x.ok_or_else(|| tonic::Status::invalid_argument("missing field: x"))?;
487+
488+
let target = target.map(|t| (*t).try_into()).transpose()?.map(Box::new);
489+
490+
Ok(ExpressionInternal::Decay {
491+
kind,
492+
x: Box::new(x.try_into()?),
493+
target,
494+
midpoint,
495+
scale,
496+
})
497+
}
498+
526499
impl From<api::grpc::qdrant::Fusion> for FusionInternal {
527500
fn from(fusion: api::grpc::qdrant::Fusion) -> Self {
528501
match fusion {

0 commit comments

Comments
 (0)