Compare commits
3 commits
b96bdb3068
...
3d93beb5bd
| Author | SHA1 | Date | |
|---|---|---|---|
| 3d93beb5bd | |||
| 9e0f038847 | |||
| 46df9f7aeb |
7 changed files with 21 additions and 21 deletions
|
|
@ -6,4 +6,3 @@ members = [
|
||||||
"lib/sandbox"
|
"lib/sandbox"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,3 +8,6 @@ proc-macro2 = "1.0.92"
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
proc-macro = true
|
proc-macro = true
|
||||||
|
|
||||||
|
[lints.clippy]
|
||||||
|
uninlined_format_args = "allow"
|
||||||
|
|
|
||||||
|
|
@ -20,3 +20,6 @@ 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"
|
||||||
|
|
|
||||||
|
|
@ -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: &Vec<Model>) -> Result<String> {
|
pub fn generate_create_table_sql(models: &[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![];
|
||||||
|
|
|
||||||
|
|
@ -107,7 +107,6 @@ 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>>()
|
||||||
|
|
@ -218,18 +217,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.get(0).unwrap());
|
let resource_module_ident = format_ident!("{}", &model.module_path.first().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
|
||||||
|
|
||||||
|
|
@ -289,7 +288,7 @@ struct SourceNodeContainer {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Generate base repositories for all models
|
/// Generate base repositories for all models
|
||||||
pub fn generate_repositories_source_files(models: &Vec<Model>) -> Result<SourceNodeContainer> {
|
pub fn generate_repositories_source_files(models: &[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)?;
|
||||||
|
|
|
||||||
|
|
@ -53,10 +53,6 @@ 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>,
|
||||||
|
|
|
||||||
|
|
@ -69,7 +69,7 @@ fn parse_model_attribute(item: &syn::ItemStruct) -> Result<Option<SqlGeneratorMo
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
if attr_ident.to_string() != "sql_generator_model" {
|
if *attr_ident != "sql_generator_model" {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -93,7 +93,7 @@ fn parse_field_attribute(field: &syn::Field) -> Result<Option<SqlGeneratorFieldA
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
if attr_ident.to_string() != "sql_generator_field" {
|
if *attr_ident != "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 {
|
||||||
return format!(
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue