Skip to main content

insert

Function insert 

Source
pub fn insert<T: Serialize>(
    table: &str,
    columns: &[&str],
    rows: &[T],
) -> Result<Statement>
Expand description

INSERT INTO table (columns) SELECT ... FROM json_each(?1): every row in one statement.

§Errors

Error::Internal when a name is not a plain SQL identifier, columns is empty, or a row does not serialize to a JSON object.

§Examples

use ocre::{bulk, serde_json::json};

let rows = [json!({"title": "A", "plays": 1}), json!({"title": "B", "plays": 2})];
let insert = bulk::insert("tracks", &["title", "plays"], &rows).unwrap();
assert_eq!(
    insert.sql,
    "INSERT INTO tracks (title, plays) SELECT value ->> '$.title', value ->> '$.plays' FROM json_each(?1)"
);
assert_eq!(insert.params.len(), 1);