Skip to content

different type for params between query_typed and query_typed_raw #1192

Open
@docteurklein

Description

@docteurklein

Pardon the possible dumb question, but is there a good reason for the difference between:

query_typed_raw:

params: I
where
    P: BorrowToSql,
    I: IntoIterator<Item = (P, Type)>,

and query_typed:

params: &[(&(dyn ToSql + Sync), Type)],

I'm forced to have 2 different implems for passing the same values:

query_typed:

    let p1 = serde_json::to_value(&query.params);
    let p2 = serde_json::to_value(&query);
    let sql_params: Vec<(&(dyn ToSql + Sync), Type)> = vec![
        (p1.as_ref().map_err(internal_error)?, Type::JSONB),
        (p2.as_ref().map_err(internal_error)?, Type::JSONB),
    ];

    let rows: Vec<String> = tx.query_typed(&query.sql, sql_params.as_slice()).await.map_err(internal_error)?;

query_typed_raw:

    let sql_params = vec![
        (serde_json::to_value(&query.params).map_err(internal_error)?, Type::JSONB),
        (serde_json::to_value(&query).map_err(internal_error)?, Type::JSONB),
    ];

    let rows = tx.query_typed_raw(&query.sql, sql_params).await.map_err(internal_error)?;

Am I doing something wrong?
Thanks :)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions