Daily Shaarli

All links of one day in a single page.

March 21, 2025

Postgresql Batching

async fn create_records(tx: &mut Transaction<Postgres>, records: &[Record]) -> Result<(), Error> {
    if records.is_empty() {
        return Ok(());
    }

    let mut query_builder: QueryBuilder<Postgres> = QueryBuilder::new(
        // Note the trailing space
        "INSERT INTO records
            (id, some_data) ",
    );

    query_builder.push_values(records, |mut query_builder, record| {
        query_builder
            .push_bind(record.id)
            .push_bind(&record.some_data);
    });

    let query = query_builder.build();
    query
        .execute(tx)
        .await
        .map_err(|err| Error::Unspecified(format!("create_records: {err}")))?;

    return Ok(());
}