Compare commits
No commits in common. "3d93beb5bde5ff6796275f9cf49c5c9b1250d20b" and "b96bdb3068d964698825aae6ba63bf2073c21682" have entirely different histories.
3d93beb5bd
...
b96bdb3068
7 changed files with 21 additions and 21 deletions
|
|
@ -6,3 +6,4 @@ members = [
|
|||
"lib/sandbox"
|
||||
]
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -8,6 +8,3 @@ proc-macro2 = "1.0.92"
|
|||
|
||||
[lib]
|
||||
proc-macro = true
|
||||
|
||||
[lints.clippy]
|
||||
uninlined_format_args = "allow"
|
||||
|
|
|
|||
|
|
@ -20,6 +20,3 @@ serde = "1.0.216"
|
|||
serde_json = "1.0.134"
|
||||
structmeta = "0.3.0"
|
||||
syn = { version = "2.0.92", features = ["extra-traits", "full", "parsing"] }
|
||||
|
||||
[lints.clippy]
|
||||
uninlined_format_args = "allow"
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ impl Field {
|
|||
}
|
||||
|
||||
/// 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();
|
||||
for model in models.iter() {
|
||||
let mut fields_sql: Vec<String> = vec![];
|
||||
|
|
|
|||
|
|
@ -107,6 +107,7 @@ fn gen_insert_method(model: &Model) -> TokenStream {
|
|||
|
||||
fn gen_insert_many_method(model: &Model) -> TokenStream {
|
||||
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()
|
||||
.map(|f| f.name.clone())
|
||||
.collect::<Vec<String>>()
|
||||
|
|
@ -217,18 +218,18 @@ fn gen_delete_by_id_method(model: &Model) -> TokenStream {
|
|||
fn generate_repository_file(model: &Model) -> Result<SourceNodeContainer> {
|
||||
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 repository_ident = format_ident!("{}Repository", resource_ident);
|
||||
|
||||
let get_all_method_code = gen_get_all_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 insert_method_code = gen_insert_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 delete_by_id_method_code = gen_delete_by_id_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_many_by_id_method_code = gen_get_many_by_id_method(&model);
|
||||
let insert_method_code = gen_insert_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 delete_by_id_method_code = gen_delete_by_id_method(&model);
|
||||
|
||||
// TODO: add import line
|
||||
|
||||
|
|
@ -288,7 +289,7 @@ struct SourceNodeContainer {
|
|||
}
|
||||
|
||||
/// 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![];
|
||||
for model in models.iter() {
|
||||
let snc = generate_repository_file(model)?;
|
||||
|
|
|
|||
|
|
@ -53,6 +53,10 @@ enum GeneratorArgsSubCommands {
|
|||
#[derive(FromArgs)]
|
||||
/// SQLX Generator args
|
||||
struct GeneratorArgs {
|
||||
/// whether or not to debug
|
||||
#[argh(switch, short = 'd')]
|
||||
debug: bool,
|
||||
|
||||
/// path where to find Cargo.toml
|
||||
#[argh(option)]
|
||||
project_root: Option<String>,
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ fn parse_model_attribute(item: &syn::ItemStruct) -> Result<Option<SqlGeneratorMo
|
|||
continue;
|
||||
}
|
||||
};
|
||||
if *attr_ident != "sql_generator_model" {
|
||||
if attr_ident.to_string() != "sql_generator_model" {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
@ -93,7 +93,7 @@ fn parse_field_attribute(field: &syn::Field) -> Result<Option<SqlGeneratorFieldA
|
|||
continue;
|
||||
}
|
||||
};
|
||||
if *attr_ident != "sql_generator_field" {
|
||||
if attr_ident.to_string() != "sql_generator_field" {
|
||||
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
|
||||
fn generate_table_name_from_struct_name(struct_name: &str) -> String {
|
||||
format!(
|
||||
return format!(
|
||||
"{}s",
|
||||
struct_name.to_case(Case::Snake)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/// 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![];
|
||||
|
||||
if module_path.is_file() {
|
||||
models.extend(parse_models(module_path)?);
|
||||
models.extend(parse_models(&module_path)?);
|
||||
return Ok(models);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue