From 09525eb8aae8801468a75b867361106f6f830e7c Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Sun, 20 Mar 2022 01:46:27 +0100 Subject: select: Exclude primary key column unless given excluded columns If no excluded columns are given, exclude the primary key column by default. Otherwise, exclude only those columns in the `exclude_columns` list. --- src/select.rs | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'src/select.rs') diff --git a/src/select.rs b/src/select.rs index fb1b977..cc82cb5 100644 --- a/src/select.rs +++ b/src/select.rs @@ -2,7 +2,7 @@ pub fn select( dbconn: &rusqlite::Connection, table_name: &str, record_id: &str, - exclude_columns: &[C], + exclude_columns: Option<&[C]>, ) -> Result where C: AsRef + PartialEq { @@ -20,7 +20,7 @@ pub fn select_by_column( table_name: &str, primary_key_column: &str, record_id: &str, - exclude_columns: &[C], + exclude_columns: Option<&[C]>, ) -> Result where C: AsRef + PartialEq { @@ -53,9 +53,17 @@ where C: AsRef + PartialEq let mut data = yaml_rust::yaml::Hash::new(); for (i, column) in column_names.iter().enumerate() { - // Don't include excluded columns in the resulting hash. - if exclude_columns.iter().any(|c| c == column) { - continue + // Don't include excluded columns in the resulting hash. If + // `exclude_columns` is None, exclude the primary key column. + match exclude_columns { + Some(exclude_columns) => + if exclude_columns.iter().any(|c| c == column) { + continue + } + None => + if column == primary_key_column { + continue + } } let column_name = column.to_owned(); -- cgit v1.2.3