Compare commits

..

No commits in common. "3d93beb5bde5ff6796275f9cf49c5c9b1250d20b" and "b96bdb3068d964698825aae6ba63bf2073c21682" have entirely different histories.

7 changed files with 21 additions and 21 deletions

View file

@ -6,3 +6,4 @@ members = [
"lib/sandbox" "lib/sandbox"
] ]

View file

@ -8,6 +8,3 @@ proc-macro2 = "1.0.92"
[lib] [lib]
proc-macro = true proc-macro = true
[lints.clippy]
uninlined_format_args = "allow"

View file

@ -20,6 +20,3 @@ serde = "1.0.216"
serde_json = "1.0.134" serde_json = "1.0.134"
structmeta = "0.3.0" structmeta = "0.3.0"
syn = { version = "2.0.92", features = ["extra-traits", "full", "parsing"] } syn = { version = "2.0.92", features = ["extra-traits", "full", "parsing"] }
[lints.clippy]
uninlined_format_args = "allow"

View file

@ -27,7 +27,7 @@ impl Field {
} }
/// Generate CREATE TABLE statement from parsed model /// Generate CREATE TABLE statement from parsed model
pub fn generate_create_table_sql(models: &[Model]) -> Result<String> { pub fn generate_create_table_sql(models: &Vec<Model>) -> Result<String> {
let mut sql_code: String = "".into(); let mut sql_code: String = "".into();
for model in models.iter() { for model in models.iter() {
let mut fields_sql: Vec<String> = vec![]; let mut fields_sql: Vec<String> = vec![];

View file

@ -107,6 +107,7 @@ fn gen_insert_method(model: &Model) -> TokenStream {
fn gen_insert_many_method(model: &Model) -> TokenStream { fn gen_insert_many_method(model: &Model) -> TokenStream {
let resource_ident = format_ident!("{}", &model.name); let resource_ident = format_ident!("{}", &model.name);
let error_msg = format!("Failed to insert many entities of resource {:?}", model.name.clone());
let sql_columns = model.fields.iter() let sql_columns = model.fields.iter()
.map(|f| f.name.clone()) .map(|f| f.name.clone())
.collect::<Vec<String>>() .collect::<Vec<String>>()
@ -217,18 +218,18 @@ fn gen_delete_by_id_method(model: &Model) -> TokenStream {
fn generate_repository_file(model: &Model) -> Result<SourceNodeContainer> { fn generate_repository_file(model: &Model) -> Result<SourceNodeContainer> {
let resource_name = model.name.clone(); let resource_name = model.name.clone();
let resource_module_ident = format_ident!("{}", &model.module_path.first().unwrap()); let resource_module_ident = format_ident!("{}", &model.module_path.get(0).unwrap());
let resource_ident = format_ident!("{}", &resource_name); let resource_ident = format_ident!("{}", &resource_name);
let repository_ident = format_ident!("{}Repository", resource_ident); let repository_ident = format_ident!("{}Repository", resource_ident);
let get_all_method_code = gen_get_all_method(model); let get_all_method_code = gen_get_all_method(&model);
let get_by_id_method_code = gen_get_by_id_method(model); let get_by_id_method_code = gen_get_by_id_method(&model);
let get_many_by_id_method_code = gen_get_many_by_id_method(model); let get_many_by_id_method_code = gen_get_many_by_id_method(&model);
let insert_method_code = gen_insert_method(model); let insert_method_code = gen_insert_method(&model);
let insert_many_method_code = gen_insert_many_method(model); let insert_many_method_code = gen_insert_many_method(&model);
let update_by_id_method_code = gen_update_by_id_method(model); let update_by_id_method_code = gen_update_by_id_method(&model);
let delete_by_id_method_code = gen_delete_by_id_method(model); let delete_by_id_method_code = gen_delete_by_id_method(&model);
// TODO: add import line // TODO: add import line
@ -288,7 +289,7 @@ struct SourceNodeContainer {
} }
/// Generate base repositories for all models /// Generate base repositories for all models
pub fn generate_repositories_source_files(models: &[Model]) -> Result<SourceNodeContainer> { pub fn generate_repositories_source_files(models: &Vec<Model>) -> Result<SourceNodeContainer> {
let mut nodes: Vec<SourceNodeContainer> = vec![]; let mut nodes: Vec<SourceNodeContainer> = vec![];
for model in models.iter() { for model in models.iter() {
let snc = generate_repository_file(model)?; let snc = generate_repository_file(model)?;

View file

@ -53,6 +53,10 @@ enum GeneratorArgsSubCommands {
#[derive(FromArgs)] #[derive(FromArgs)]
/// SQLX Generator args /// SQLX Generator args
struct GeneratorArgs { struct GeneratorArgs {
/// whether or not to debug
#[argh(switch, short = 'd')]
debug: bool,
/// path where to find Cargo.toml /// path where to find Cargo.toml
#[argh(option)] #[argh(option)]
project_root: Option<String>, project_root: Option<String>,

View file

@ -69,7 +69,7 @@ fn parse_model_attribute(item: &syn::ItemStruct) -> Result<Option<SqlGeneratorMo
continue; continue;
} }
}; };
if *attr_ident != "sql_generator_model" { if attr_ident.to_string() != "sql_generator_model" {
continue; continue;
} }
@ -93,7 +93,7 @@ fn parse_field_attribute(field: &syn::Field) -> Result<Option<SqlGeneratorFieldA
continue; continue;
} }
}; };
if *attr_ident != "sql_generator_field" { if attr_ident.to_string() != "sql_generator_field" {
continue; continue;
} }
@ -111,10 +111,10 @@ fn parse_field_attribute(field: &syn::Field) -> Result<Option<SqlGeneratorFieldA
/// Take struct name as source, apply snake case and pluralize with a s /// Take struct name as source, apply snake case and pluralize with a s
fn generate_table_name_from_struct_name(struct_name: &str) -> String { fn generate_table_name_from_struct_name(struct_name: &str) -> String {
format!( return format!(
"{}s", "{}s",
struct_name.to_case(Case::Snake) struct_name.to_case(Case::Snake)
) );
} }
/// Scan for models struct in a rust file and return a struct representing the model /// Scan for models struct in a rust file and return a struct representing the model
@ -221,7 +221,7 @@ pub fn parse_models_from_module(module_path: &Path) -> Result<Vec<Model>> {
let mut models: Vec<Model> = vec![]; let mut models: Vec<Model> = vec![];
if module_path.is_file() { if module_path.is_file() {
models.extend(parse_models(module_path)?); models.extend(parse_models(&module_path)?);
return Ok(models); return Ok(models);
} }