Skip to content

Commit

Permalink
hard_tabs = true
Browse files Browse the repository at this point in the history
  • Loading branch information
trevyn committed Dec 3, 2022
1 parent b5036e5 commit 575623d
Show file tree
Hide file tree
Showing 12 changed files with 1,567 additions and 1,569 deletions.
10 changes: 5 additions & 5 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"rust-analyzer.checkOnSave.features": ["test"],
"rust-analyzer.cargo.features": ["test"],
"rust-analyzer.checkOnSave.command": "clippy",
"editor.tabSize": 1,
"editor.detectIndentation": false
"rust-analyzer.checkOnSave.features": ["test"],
"rust-analyzer.cargo.features": ["test"],
"rust-analyzer.checkOnSave.command": "clippy",
"editor.detectIndentation": false,
"editor.insertSpaces": false
}
1 change: 1 addition & 0 deletions rustfmt.toml
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
hard_tabs = true
tab_spaces = 1
use_small_heuristics = "Max"
69 changes: 33 additions & 36 deletions turbosql-impl/src/insert.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,48 +3,45 @@ use quote::quote_spanned;

/// INSERT INTO tablename (name1, name2...) VALUES (?1, ?2...)
pub(super) fn insert(table: &Table) -> proc_macro2::TokenStream {
let sql = makesql_insert(table);
let sql = makesql_insert(table);

super::validate_sql_or_abort(&sql);
super::validate_sql_or_abort(&sql);

let columns = table
.columns
.iter()
.map(|c| {
let ident = &c.ident;
if c.sql_type == "TEXT" && c.rust_type != "Option < String >" {
quote_spanned!(c.span => &::turbosql::serde_json::to_string(&self.#ident)? as &dyn ::turbosql::ToSql)
} else {
quote_spanned!(c.span => &self.#ident as &dyn ::turbosql::ToSql)
}
})
.collect::<Vec<_>>();
let columns = table.columns.iter().map(|c| {
let ident = &c.ident;
if c.sql_type == "TEXT" && c.rust_type != "Option < String >" {
quote_spanned!(c.span => &::turbosql::serde_json::to_string(&self.#ident)? as &dyn ::turbosql::ToSql)
} else {
quote_spanned!(c.span => &self.#ident as &dyn ::turbosql::ToSql)
}
})
.collect::<Vec<_>>();

quote_spanned! { table.span =>
fn insert(&self) -> Result<i64, ::turbosql::Error> {
assert!(self.rowid.is_none());
::turbosql::__TURBOSQL_DB.with(|db| {
let db = db.borrow_mut();
let mut stmt = db.prepare_cached(#sql)?;
Ok(stmt.insert(&[#( #columns ),*] as &[&dyn ::turbosql::ToSql])?)
})
}
quote_spanned! { table.span =>
fn insert(&self) -> Result<i64, ::turbosql::Error> {
assert!(self.rowid.is_none());
::turbosql::__TURBOSQL_DB.with(|db| {
let db = db.borrow_mut();
let mut stmt = db.prepare_cached(#sql)?;
Ok(stmt.insert(&[#( #columns ),*] as &[&dyn ::turbosql::ToSql])?)
})
}

fn insert_batch<T: AsRef<#table>>(rows: &[T]) -> Result<(), ::turbosql::Error> {
for row in rows {
row.as_ref().insert()?;
}
Ok(())
}
}
fn insert_batch<T: AsRef<#table>>(rows: &[T]) -> Result<(), ::turbosql::Error> {
for row in rows {
row.as_ref().insert()?;
}
Ok(())
}
}
}

fn makesql_insert(table: &Table) -> String {
let mut sql = format!("INSERT INTO {} (", table.name);
sql += table.columns.iter().map(|c| c.name.as_str()).collect::<Vec<_>>().join(", ").as_str();
sql += ") VALUES (";
sql += table.columns.iter().map(|_| "?").collect::<Vec<_>>().join(", ").as_str();
sql += ")";
let mut sql = format!("INSERT INTO {} (", table.name);
sql += table.columns.iter().map(|c| c.name.as_str()).collect::<Vec<_>>().join(", ").as_str();
sql += ") VALUES (";
sql += table.columns.iter().map(|_| "?").collect::<Vec<_>>().join(", ").as_str();
sql += ")";

sql
sql
}
Loading

0 comments on commit 575623d

Please sign in to comment.