Compare commits

..

3 commits

3 changed files with 28 additions and 8 deletions

13
TODO.md
View file

@ -14,7 +14,9 @@
- insert - insert
- update - update
- delete_by_id - delete_by_id
- [ ] delete_many - [x] delete_many by ids
- [ ] Better CLI documentation
- [ ] Config file for project - [ ] Config file for project
- configure models path - configure models path
@ -26,5 +28,12 @@
- [ ] Support basic one to many, many to one, belongs to relationships - [ ] Support basic one to many, many to one, belongs to relationships
- [ ] Support generating inner join SQL query - [ ] Support generating inner join SQL query
- [ ] Better, cleaner migration support - [ ] Better, cleaner migration support UP and DOWN
- [ ] Add a version side
- [ ] man page
- [ ] Quick start guide
- [ ] Static website
- [ ] release
- [ ] add comment in the start of the generated repositories files

View file

@ -19,8 +19,17 @@ pub struct SqlGeneratorModelAttr {
#[derive(FromAttr, PartialEq, Debug, Default)] #[derive(FromAttr, PartialEq, Debug, Default)]
#[attribute(ident = sql_generator_field)] #[attribute(ident = sql_generator_field)]
pub struct SqlGeneratorFieldAttr { pub struct SqlGeneratorFieldAttr {
/// indicate a primary key
/// primary usually means unique + indexed
is_primary: Option<bool>, is_primary: Option<bool>,
/// indicate a column consists of unique values
is_unique: Option<bool>, is_unique: Option<bool>,
/// name of the method to retreive a list of current type items from the point of view of the
/// remote foreign table
/// generally it's the same name as the current table
/// it can change depending on the context
reverse_relation_name: Option<String>, reverse_relation_name: Option<String>,
/// to indicate that this field will be used to obtains entities /// to indicate that this field will be used to obtains entities
@ -29,7 +38,7 @@ pub struct SqlGeneratorFieldAttr {
} }
#[derive(FromArgs, PartialEq, Debug)] #[derive(FromArgs, PartialEq, Debug)]
/// Generate SQL CREATE TABLE migrations /// Generate .sql files with CREATE TABLE migrations
#[argh(subcommand, name = "gen-migrations")] #[argh(subcommand, name = "gen-migrations")]
struct GenerateMigration { struct GenerateMigration {
/// path of file where to write all in one generated SQL migration /// path of file where to write all in one generated SQL migration
@ -54,13 +63,15 @@ enum GeneratorArgsSubCommands {
} }
#[derive(FromArgs)] #[derive(FromArgs)]
/// SQLX Generator args /// The Sqlxgentools CLI.
/// Sqlxgentools is a set of library and code generators program,
/// to help you to use a Sqlite3 database in your Rust app with Sqlx.
struct GeneratorArgs { struct GeneratorArgs {
/// path where to find Cargo.toml /// path of your main cargo project directory (with the projcet root Cargo.toml file)
#[argh(option)] #[argh(option)]
project_root: Option<String>, project_root: Option<String>,
/// path of the directory containing models /// path of the project sub-directory containing models definitions
#[argh(option, short = 'm')] #[argh(option, short = 'm')]
models_path: Option<String>, models_path: Option<String>,
@ -123,7 +134,7 @@ pub fn main() -> Result<()> {
{ {
models_mod_path.pop(); models_mod_path.pop();
} }
eprintln!("Found models in project, parsing models"); eprintln!("Found models in project, parsing models");
let models = parse_models::parse_models_from_module(&models_mod_path)?; let models = parse_models::parse_models_from_module(&models_mod_path)?;
eprintln!( eprintln!(
"Found and parsed a grand total of {} sqlxgentools compatible models.", "Found and parsed a grand total of {} sqlxgentools compatible models.",

View file

@ -270,7 +270,7 @@ fn parse_models_from_module_inner(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() {
println!("Looking for models to parse from path {:?}.", module_path); eprintln!("Looking for models to parse from path {:?}.", module_path);
models.extend(parse_models(module_path)?); models.extend(parse_models(module_path)?);
return Ok(models); return Ok(models);
} }