diff options
| author | Joe Carstairs <jcarstairs@scottlogic.com> | 2025-08-13 18:44:20 +0100 |
|---|---|---|
| committer | Joe Carstairs <jcarstairs@scottlogic.com> | 2025-08-13 18:44:20 +0100 |
| commit | 8d714f760bd0349560d464583a151a04a19de1c9 (patch) | |
| tree | 7810edb6371251bfc109a30f8ca9e37fba001d73 /schist_core/schist_queries/src/buckets.rs | |
| parent | 6495038aba28c332050768cecf062418a25d5a96 (diff) | |
rename category -> bucket
Diffstat (limited to 'schist_core/schist_queries/src/buckets.rs')
| -rw-r--r-- | schist_core/schist_queries/src/buckets.rs | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/schist_core/schist_queries/src/buckets.rs b/schist_core/schist_queries/src/buckets.rs new file mode 100644 index 0000000..c7cf213 --- /dev/null +++ b/schist_core/schist_queries/src/buckets.rs @@ -0,0 +1,49 @@ +use anyhow::{Context, Result}; +use diesel::{QueryDsl, RunQueryDsl, SelectableHelper, SqliteConnection}; +use schist_models::bucket::Bucket; +use schist_schema::schema::buckets::{self as buckets_schema, dsl::buckets as buckets_table}; + +pub fn delete_all_buckets(connection: &mut SqliteConnection) -> Result<usize> { + let num_rows_deleted = diesel::delete(buckets_table) + .execute(connection) + .with_context(|| "failed to delete all buckets")?; + Ok(num_rows_deleted) +} + +pub fn get_all_buckets(connection: &mut SqliteConnection) -> Result<Vec<Bucket>> { + let all_buckets = buckets_table + .select(Bucket::as_select()) + .load(connection) + .with_context(|| "failed to get all buckets")?; + Ok(all_buckets) +} + +pub fn get_all_bucket_ids(connection: &mut SqliteConnection) -> Result<Vec<i32>> { + let all_bucket_ids = buckets_table + .select(buckets_schema::id) + .load(connection) + .with_context(|| "failed to get all bucket IDs")?; + Ok(all_bucket_ids) +} + +pub fn insert_buckets( + buckets: &[Bucket], + connection: &mut SqliteConnection, +) -> Result<usize> { + let num_buckets_inserted = diesel::insert_into(buckets_table) + .values(buckets) + .execute(connection) + .with_context(|| insert_err_msg(buckets))?; + Ok(num_buckets_inserted) +} + +fn insert_err_msg(buckets: &[Bucket]) -> String { + format!( + "failed to insert buckets: [{}]", + buckets + .iter() + .map(|c| format!("\"{}\": \"{}\"", c.id, c.name)) + .collect::<Vec<String>>() + .join(", ") + ) +} |
