Compare commits
3 commits
22ab9479b0
...
d4e3f4b88c
| Author | SHA1 | Date | |
|---|---|---|---|
| d4e3f4b88c | |||
| 76cdeb209d | |||
| a4e896ef05 |
3 changed files with 28 additions and 8 deletions
13
TODO.md
13
TODO.md
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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.",
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue