⭐
Log in to mark this repository.
fmt
c5d0c05 · gmorell · 2025-01-01 02:03
Files changed
modified
src/db.rs
+3
−4
@@ -1,13 +1,12 @@
| 1 | −use sea_orm::DatabaseConnection; | |
| 2 | −use sea_orm_migration::MigratorTrait; | |
| 3 | 1 | use crate::migrator::Migrator; |
| 4 | 2 | use crate::PplError; |
| 3 | +use sea_orm::DatabaseConnection; | |
| 4 | +use sea_orm_migration::MigratorTrait; | |
| 5 | 5 | |
| 6 | 6 | pub async fn check_migrations(db: &DatabaseConnection) -> Result<(), PplError> { |
| 7 | − | |
| 8 | 7 | // let be = db.get_database_backend(); |
| 9 | 8 | // let schema_manager = SchemaManager::new(db); |
| 10 | 9 | // Migrator::refresh(db).await?; |
| 11 | 10 | Migrator::up(db, None).await?; |
| 12 | 11 | Ok(()) |
| 13 | −} | |
| 12 | +} |
modified
src/do_init.rs
+23
−18
@@ -1,8 +1,6 @@
| 1 | 1 | use crate::entities::prelude::Traits; |
| 2 | 2 | use crate::entities::prelude::{TierDefaults, TraitDefaults}; |
| 3 | −use crate::entities::{ | |
| 4 | − contact, ppl, relation, sig_date, tier_defaults, trait_defaults, traits, | |
| 5 | −}; | |
| 3 | +use crate::entities::{contact, ppl, relation, sig_date, tier_defaults, trait_defaults, traits}; | |
| 6 | 4 | use crate::PplError; |
| 7 | 5 | use chrono::NaiveDate; |
| 8 | 6 | use crossterm::event; |
@@ -15,8 +13,8 @@ use ratatui::{
| 15 | 13 | widgets::*, |
| 16 | 14 | DefaultTerminal, |
| 17 | 15 | }; |
| 18 | −use sea_orm::sqlx::types::chrono::Local; | |
| 19 | 16 | use sea_orm::sqlx::types::chrono; |
| 17 | +use sea_orm::sqlx::types::chrono::Local; | |
| 20 | 18 | use sea_orm::ActiveValue::Set; |
| 21 | 19 | use sea_orm::{ActiveModelTrait, DatabaseConnection, EntityTrait}; |
| 22 | 20 | use std::fmt; |
@@ -578,19 +576,22 @@ pub async fn run_init(
| 578 | 576 | } |
| 579 | 577 | |
| 580 | 578 | if !app.trait_list.is_empty() { |
| 581 | − let trait_am = app.trait_list.iter().map(|dtrait| | |
| 582 | − trait_defaults::ActiveModel { | |
| 583 | − id: Default::default(), | |
| 584 | − key: Set(dtrait.name.clone()), | |
| 585 | − default: Set(true), | |
| 586 | − enabled: Set(true), | |
| 587 | − is_date: Set(dtrait.is_date), | |
| 588 | − is_contact: Set(dtrait.is_contact), | |
| 589 | − color: Set(dtrait.color.clone()), | |
| 590 | − symbol: Set(dtrait.symbol.clone()), | |
| 591 | − date_ins: Set(Local::today().naive_local()), | |
| 592 | − date_up: Set(Local::today().naive_local()), | |
| 593 | − }).collect::<Vec<trait_defaults::ActiveModel>>(); | |
| 579 | + let trait_am = app | |
| 580 | + .trait_list | |
| 581 | + .iter() | |
| 582 | + .map(|dtrait| trait_defaults::ActiveModel { | |
| 583 | + id: Default::default(), | |
| 584 | + key: Set(dtrait.name.clone()), | |
| 585 | + default: Set(true), | |
| 586 | + enabled: Set(true), | |
| 587 | + is_date: Set(dtrait.is_date), | |
| 588 | + is_contact: Set(dtrait.is_contact), | |
| 589 | + color: Set(dtrait.color.clone()), | |
| 590 | + symbol: Set(dtrait.symbol.clone()), | |
| 591 | + date_ins: Set(Local::today().naive_local()), | |
| 592 | + date_up: Set(Local::today().naive_local()), | |
| 593 | + }) | |
| 594 | + .collect::<Vec<trait_defaults::ActiveModel>>(); | |
| 594 | 595 | |
| 595 | 596 | let trtr = TraitDefaults::insert_many(trait_am).exec(&db).await; |
| 596 | 597 | match trtr { |
@@ -687,7 +688,11 @@ pub async fn run_init(
| 687 | 688 | app.input.handle_event(&Event::Key(key_event)); |
| 688 | 689 | } |
| 689 | 690 | }, |
| 690 | − KeyCode::Tab => if app.step == Steps::Tiers { app.toggle_tier_editing() }, | |
| 691 | + KeyCode::Tab => { | |
| 692 | + if app.step == Steps::Tiers { | |
| 693 | + app.toggle_tier_editing() | |
| 694 | + } | |
| 695 | + } | |
| 691 | 696 | // app.input.handle_event(&Event::Key(key)); |
| 692 | 697 | // KeyCode::Left => self.decrement_counter(), |
| 693 | 698 | // KeyCode::Right => self.increment_counter(), |
modified
src/main.rs
+56
−77
@@ -1,24 +1,23 @@
| 1 | 1 | use clap::{Parser, Subcommand}; |
| 2 | −use crossterm::event::{Event}; | |
| 2 | +use color_eyre::eyre::ErrReport; | |
| 3 | +use crossterm::event::Event; | |
| 3 | 4 | use log::info; |
| 4 | 5 | use sea_orm::*; |
| 5 | 6 | use std::io::{self}; |
| 6 | −use color_eyre::eyre::ErrReport; | |
| 7 | 7 | |
| 8 | −mod entities; | |
| 9 | −mod migrator; | |
| 10 | 8 | mod db; |
| 11 | 9 | mod do_init; |
| 10 | +mod entities; | |
| 11 | +mod migrator; | |
| 12 | 12 | |
| 13 | −use entities::prelude::*; | |
| 14 | 13 | use crate::entities::ppl::Column::Me; |
| 14 | +use entities::prelude::*; | |
| 15 | 15 | |
| 16 | 16 | #[derive(Debug)] |
| 17 | 17 | enum PplError { |
| 18 | 18 | DbError(DbErr), |
| 19 | 19 | EyreError(ErrReport), |
| 20 | 20 | Std(io::Error), |
| 21 | − | |
| 22 | 21 | } |
| 23 | 22 | |
| 24 | 23 | impl From<io::Error> for PplError { |
@@ -70,7 +69,6 @@ enum Commands {
| 70 | 69 | Stats, |
| 71 | 70 | } |
| 72 | 71 | |
| 73 | − | |
| 74 | 72 | const DATABASE_URL: &str = "sqlite://database.sqlite?mode=rwc"; |
| 75 | 73 | #[tokio::main] |
| 76 | 74 | async fn main() -> Result<(), PplError> { |
@@ -81,17 +79,9 @@ async fn main() -> Result<(), PplError> {
| 81 | 79 | |
| 82 | 80 | let cli = Cli::parse(); |
| 83 | 81 | |
| 84 | − let is_init = match Ppl::find() | |
| 85 | − .filter(Me.eq(true)) | |
| 86 | − .one(&db) | |
| 87 | − .await? | |
| 88 | − { | |
| 89 | − None => { | |
| 90 | − false | |
| 91 | − } | |
| 92 | − Some(_) => { | |
| 93 | − true | |
| 94 | − } | |
| 82 | + let is_init = match Ppl::find().filter(Me.eq(true)).one(&db).await? { | |
| 83 | + None => false, | |
| 84 | + Some(_) => true, | |
| 95 | 85 | }; |
| 96 | 86 | |
| 97 | 87 | match &cli.command { |
@@ -103,76 +93,65 @@ async fn main() -> Result<(), PplError> {
| 103 | 93 | // show().expect("failed2draw") |
| 104 | 94 | } |
| 105 | 95 | Some(Commands::MOTD { .. }) => {} |
| 106 | − Some(Commands::Init { .. }) => { | |
| 107 | − match is_init | |
| 108 | − { | |
| 109 | − false => { | |
| 110 | − info!("Uninitialized"); | |
| 111 | − color_eyre::install()?; | |
| 112 | − let terminal = ratatui::init(); | |
| 113 | − let result = do_init::run_init(terminal, db).await; | |
| 114 | − ratatui::restore(); | |
| 115 | − drop(result); | |
| 116 | − info!("Init complete"); | |
| 117 | − } | |
| 118 | − true => { | |
| 119 | − info!("ppl has been initialized already"); | |
| 120 | − } | |
| 96 | + Some(Commands::Init { .. }) => match is_init { | |
| 97 | + false => { | |
| 98 | + info!("Uninitialized"); | |
| 99 | + color_eyre::install()?; | |
| 100 | + let terminal = ratatui::init(); | |
| 101 | + let result = do_init::run_init(terminal, db).await; | |
| 102 | + ratatui::restore(); | |
| 103 | + drop(result); | |
| 104 | + info!("Init complete"); | |
| 121 | 105 | } |
| 122 | − } | |
| 106 | + true => { | |
| 107 | + info!("ppl has been initialized already"); | |
| 108 | + } | |
| 109 | + }, | |
| 123 | 110 | Some(Commands::Add { .. }) => {} |
| 124 | 111 | Some(Commands::Tui) => {} |
| 125 | 112 | Some(Commands::Calendar) => {} |
| 126 | − Some(Commands::Show {}) => { | |
| 127 | − match is_init { | |
| 128 | − true => { | |
| 129 | − let ppl = Ppl::find().all(&db).await?; | |
| 130 | − for p in ppl { | |
| 131 | − println!("{:?}", p) | |
| 132 | − } | |
| 133 | − } | |
| 134 | − false => { | |
| 135 | − info!("pls run init"); | |
| 113 | + Some(Commands::Show {}) => match is_init { | |
| 114 | + true => { | |
| 115 | + let ppl = Ppl::find().all(&db).await?; | |
| 116 | + for p in ppl { | |
| 117 | + println!("{:?}", p) | |
| 136 | 118 | } |
| 137 | 119 | } |
| 138 | − } | |
| 139 | − Some(Commands::Tiers) => { | |
| 140 | − match is_init { | |
| 141 | − true => { | |
| 142 | − let tiers = TierDefaults::find().all(&db).await?; | |
| 143 | − for t in tiers { | |
| 144 | − println!("{:?}", t) | |
| 145 | − } | |
| 146 | − } | |
| 147 | − false => { | |
| 148 | − info!("pls run init"); | |
| 149 | − } | |
| 120 | + false => { | |
| 121 | + info!("pls run init"); | |
| 150 | 122 | } |
| 151 | − } | |
| 152 | − Some(Commands::Traits) => { | |
| 153 | − match is_init { | |
| 154 | − true => { | |
| 155 | − let traits = TraitDefaults::find().all(&db).await?; | |
| 156 | − for t in traits { | |
| 157 | − println!("{:?}", t) | |
| 158 | − } | |
| 159 | − } | |
| 160 | − false => { | |
| 161 | − info!("pls run init"); | |
| 123 | + }, | |
| 124 | + Some(Commands::Tiers) => match is_init { | |
| 125 | + true => { | |
| 126 | + let tiers = TierDefaults::find().all(&db).await?; | |
| 127 | + for t in tiers { | |
| 128 | + println!("{:?}", t) | |
| 162 | 129 | } |
| 163 | 130 | } |
| 164 | − } | |
| 165 | − Some(Commands::Stats) => { | |
| 166 | − match is_init { | |
| 167 | − true => { | |
| 168 | − let cnt = Ppl::find().all(&db).await?.len(); | |
| 169 | − println!("{:?} ppl", cnt) | |
| 170 | − } | |
| 171 | − false => { | |
| 172 | − info!("pls run init"); | |
| 131 | + false => { | |
| 132 | + info!("pls run init"); | |
| 133 | + } | |
| 134 | + }, | |
| 135 | + Some(Commands::Traits) => match is_init { | |
| 136 | + true => { | |
| 137 | + let traits = TraitDefaults::find().all(&db).await?; | |
| 138 | + for t in traits { | |
| 139 | + println!("{:?}", t) | |
| 173 | 140 | } |
| 174 | 141 | } |
| 175 | − } | |
| 142 | + false => { | |
| 143 | + info!("pls run init"); | |
| 144 | + } | |
| 145 | + }, | |
| 146 | + Some(Commands::Stats) => match is_init { | |
| 147 | + true => { | |
| 148 | + let cnt = Ppl::find().all(&db).await?.len(); | |
| 149 | + println!("{:?} ppl", cnt) | |
| 150 | + } | |
| 151 | + false => { | |
| 152 | + info!("pls run init"); | |
| 153 | + } | |
| 154 | + }, | |
| 176 | 155 | } |
| 177 | 156 | Ok(()) |
| 178 | 157 | } |
modified
src/migrator/mod.rs
+0
−1
@@ -1,6 +1,5 @@
| 1 | 1 | use sea_orm_migration::prelude::*; |
| 2 | 2 | |
| 3 | − | |
| 4 | 3 | mod m20241219_000001_create_ppl; |
| 5 | 4 | mod m20241220_000002_create_contact; |
| 6 | 5 | mod m20241220_000003_create_entity; |
Parents: 7bb11b4