use user config

pull/1/head
Takayuki Maeda 3 years ago
parent 3ba9e04cf1
commit 2df25ec7e0

@ -1,7 +1,5 @@
[conn.sample] [conn.sample]
name = "sample" name = "sample"
user = "root" user = "root"
host = "localhost"
[conn.hoge] port = 3306
name = "hoge"
user = "root"

@ -30,12 +30,6 @@ use std::{
use tui::{backend::CrosstermBackend, widgets::TableState, Terminal}; use tui::{backend::CrosstermBackend, widgets::TableState, Terminal};
use user_config::UserConfig; use user_config::UserConfig;
pub struct StatefulTable {
state: TableState,
headers: Vec<String>,
items: Vec<Vec<String>>,
}
#[tokio::main] #[tokio::main]
async fn main() -> anyhow::Result<()> { async fn main() -> anyhow::Result<()> {
enable_raw_mode()?; enable_raw_mode()?;
@ -50,39 +44,28 @@ async fn main() -> anyhow::Result<()> {
let events = event::Events::new(250); let events = event::Events::new(250);
let mut app = &mut app::App::default(); let mut app = &mut app::App::default();
let pool = MySqlPool::connect("mysql://root:@localhost:3306").await?; let hoge = &config.conn.unwrap()["sample"];
let pool = MySqlPool::connect(
format!(
"mysql://{user}:@{host}:{port}",
user = hoge.user,
host = hoge.host,
port = hoge.port
)
.as_str(),
)
.await?;
app.databases = utils::get_databases(&pool).await?; app.databases = utils::get_databases(&pool).await?;
&pool.execute("use dev_payer").await?; let (headers, records) = utils::get_records(
let mut rows = sqlx::query("SELECT * FROM incoming_invoices").fetch(&pool); app.databases.first().unwrap(),
let headers = sqlx::query("desc incoming_invoices") app.databases.first().unwrap().tables.first().unwrap(),
.fetch_all(&pool) &pool,
.await? )
.iter() .await?;
.map(|table| table.get(0))
.collect::<Vec<String>>();
let mut records = vec![];
while let Some(row) = rows.try_next().await? {
let mut row_vec = vec![];
for col in row.columns() {
let col_name = col.name();
match col.type_info().clone().name() {
"INT" => {
let value: i32 = row.try_get(col_name).unwrap_or(0);
row_vec.push(value.to_string());
}
"VARCHAR" => {
let value: String = row.try_get(col_name).unwrap_or("".to_string());
row_vec.push(value);
}
_ => (),
}
}
records.push(row_vec)
}
app.record_table.rows = records; app.record_table.rows = records;
app.record_table.headers = headers; app.record_table.headers = headers;
app.selected_database.select(Some(0));
terminal.clear()?; terminal.clear()?;

@ -1,6 +1,5 @@
use crate::app::InputMode; use crate::app::InputMode;
use crate::app::{App, FocusType}; use crate::app::{App, FocusType};
use crate::StatefulTable;
use tui::{ use tui::{
backend::Backend, backend::Backend,
layout::{Constraint, Direction, Layout, Rect}, layout::{Constraint, Direction, Layout, Rect},

@ -12,6 +12,8 @@ pub struct UserConfig {
pub struct Connection { pub struct Connection {
pub name: Option<String>, pub name: Option<String>,
pub user: String, pub user: String,
pub host: String,
pub port: u64,
} }
impl UserConfig { impl UserConfig {

Loading…
Cancel
Save