added lib terminalsize

main
Mathias Rothenhaeusler 2023-05-01 11:09:49 +02:00
parent 77ecc25132
commit d8d174c5d6
12 changed files with 118 additions and 29 deletions

77
Cargo.lock generated
View File

@ -93,7 +93,7 @@ checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
dependencies = [ dependencies = [
"hermit-abi 0.1.19", "hermit-abi 0.1.19",
"libc", "libc",
"winapi", "winapi 0.3.9",
] ]
[[package]] [[package]]
@ -341,7 +341,7 @@ checksum = "b3616f750b84d8f0de8a58bda93e08e2a81ad3f523089b05f1dffecab48c6cbd"
dependencies = [ dependencies = [
"atty", "atty",
"lazy_static", "lazy_static",
"winapi", "winapi 0.3.9",
] ]
[[package]] [[package]]
@ -525,7 +525,7 @@ checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1"
dependencies = [ dependencies = [
"errno-dragonfly", "errno-dragonfly",
"libc", "libc",
"winapi", "winapi 0.3.9",
] ]
[[package]] [[package]]
@ -787,6 +787,16 @@ version = "1.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
[[package]]
name = "kernel32-sys"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
dependencies = [
"winapi 0.2.8",
"winapi-build",
]
[[package]] [[package]]
name = "lazy_static" name = "lazy_static"
version = "1.4.0" version = "1.4.0"
@ -885,7 +895,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"winapi", "winapi 0.3.9",
] ]
[[package]] [[package]]
@ -1028,7 +1038,7 @@ version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ad9c443cce91fc3e12f017290db75dde490d685cdaaf508d7159d7cf41f0eb2b" checksum = "ad9c443cce91fc3e12f017290db75dde490d685cdaaf508d7159d7cf41f0eb2b"
dependencies = [ dependencies = [
"winapi", "winapi 0.3.9",
] ]
[[package]] [[package]]
@ -1089,6 +1099,12 @@ dependencies = [
"autocfg", "autocfg",
] ]
[[package]]
name = "numtoa"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef"
[[package]] [[package]]
name = "once_cell" name = "once_cell"
version = "1.17.1" version = "1.17.1"
@ -1273,6 +1289,7 @@ dependencies = [
"log", "log",
"mysql", "mysql",
"sprintf", "sprintf",
"termsize",
"time", "time",
] ]
@ -1285,6 +1302,15 @@ dependencies = [
"bitflags", "bitflags",
] ]
[[package]]
name = "redox_termios"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8440d8acb4fd3d277125b4bd01a6f38aee8d814b3b5fc09b3f2b825d37d3fe8f"
dependencies = [
"redox_syscall",
]
[[package]] [[package]]
name = "redox_users" name = "redox_users"
version = "0.4.3" version = "0.4.3"
@ -1519,7 +1545,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662"
dependencies = [ dependencies = [
"libc", "libc",
"winapi", "winapi 0.3.9",
] ]
[[package]] [[package]]
@ -1547,7 +1573,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0c2e86926081dda636c546d8c5e641661049d7562a68f5488be4a1f7f66f6086" checksum = "0c2e86926081dda636c546d8c5e641661049d7562a68f5488be4a1f7f66f6086"
dependencies = [ dependencies = [
"libc", "libc",
"winapi", "winapi 0.3.9",
] ]
[[package]] [[package]]
@ -1591,6 +1617,31 @@ dependencies = [
"windows-sys 0.42.0", "windows-sys 0.42.0",
] ]
[[package]]
name = "termion"
version = "1.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "077185e2eac69c3f8379a4298e1e07cd36beb962290d4a51199acf0fdc10607e"
dependencies = [
"libc",
"numtoa",
"redox_syscall",
"redox_termios",
]
[[package]]
name = "termsize"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5e86d824a8e90f342ad3ef4bd51ef7119a9b681b0cc9f8ee7b2852f02ccd2517"
dependencies = [
"atty",
"kernel32-sys",
"libc",
"termion",
"winapi 0.2.8",
]
[[package]] [[package]]
name = "thiserror" name = "thiserror"
version = "1.0.40" version = "1.0.40"
@ -1740,6 +1791,12 @@ version = "0.11.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
name = "winapi"
version = "0.2.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
[[package]] [[package]]
name = "winapi" name = "winapi"
version = "0.3.9" version = "0.3.9"
@ -1750,6 +1807,12 @@ dependencies = [
"winapi-x86_64-pc-windows-gnu", "winapi-x86_64-pc-windows-gnu",
] ]
[[package]]
name = "winapi-build"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
[[package]] [[package]]
name = "winapi-i686-pc-windows-gnu" name = "winapi-i686-pc-windows-gnu"
version = "0.4.0" version = "0.4.0"

View File

@ -13,4 +13,5 @@ dotenv = "0.15.0"
log = "0.4.17" log = "0.4.17"
mysql = "23.0.1" mysql = "23.0.1"
sprintf = "0.1.3" sprintf = "0.1.3"
termsize = "0.1.6"
time = "0.3.20" time = "0.3.20"

6
src/lib.rs 100644
View File

@ -0,0 +1,6 @@
pub trait TerminalSize {
fn get_width(&self) -> usize {
let terminal = termsize::get().unwrap();
terminal.cols.into()
}
}

View File

@ -22,7 +22,7 @@ fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
match args.mode { match args.mode {
Commands::Merch { search } => { Commands::Merch { search } => {
let merchant_service: MerchantService = container::get_merchant_service(&mut conn); let mut merchant_service: MerchantService = container::get_merchant_service(&mut conn);
merchant_service.get_merchant(&search.unwrap()); merchant_service.get_merchant(&search.unwrap());
} }
Commands::Schema { search } => { Commands::Schema { search } => {
@ -45,7 +45,7 @@ fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
} }
} }
Commands::Page { page_id } => { Commands::Page { page_id } => {
let file_service: FileService = container::get_page_service(&mut conn); let mut file_service: FileService = container::get_page_service(&mut conn);
file_service.get_page(&page_id); file_service.get_page(&page_id);
} }
Commands::Job { job_id, log } => { Commands::Job { job_id, log } => {

View File

@ -12,7 +12,7 @@ impl<'a> FileRepo<'a> {
Self { db_pool } Self { db_pool }
} }
pub fn find_page(self, file_id: &usize) -> Result<Vec<Page>, mysql::Error> { pub fn find_page(&mut self, file_id: &usize) -> Result<Vec<Page>, mysql::Error> {
let stat = self.db_pool let stat = self.db_pool
.prep("SELECT m_id, description, file FROM global_data.effi_file_mapping WHERE file_id = :file_id") .prep("SELECT m_id, description, file FROM global_data.effi_file_mapping WHERE file_id = :file_id")
.unwrap(); .unwrap();

View File

@ -63,7 +63,7 @@ impl<'a> FilterRepo<'a> {
) )
} }
pub(crate) fn find_filter_log( pub fn find_filter_log(
&mut self, &mut self,
filter_id: &usize, filter_id: &usize,
) -> Result<Vec<FilterLog>, mysql::Error> { ) -> Result<Vec<FilterLog>, mysql::Error> {

View File

@ -12,7 +12,7 @@ impl<'a> MerchantRepo<'a> {
} }
pub fn find_by_name_or_id( pub fn find_by_name_or_id(
self, &mut self,
search: &str, search: &str,
) -> Result<Vec<Merchant>, mysql::Error> { ) -> Result<Vec<Merchant>, mysql::Error> {
let stat = self.db_pool let stat = self.db_pool

View File

@ -1,15 +1,19 @@
use rcc::TerminalSize;
use crate::{entity::file::Page, repository::file_repo::FileRepo}; use crate::{entity::file::Page, repository::file_repo::FileRepo};
pub struct FileService<'a> { pub struct FileService<'a> {
repo: FileRepo<'a>, repo: FileRepo<'a>,
} }
impl TerminalSize for FileService<'_> {}
impl<'a> FileService<'a> { impl<'a> FileService<'a> {
pub fn new(repo: FileRepo<'a>) -> Self { pub fn new(repo: FileRepo<'a>) -> Self {
Self { repo } Self { repo }
} }
pub fn get_page(self, page_id: &usize) { pub fn get_page(&mut self, page_id: &usize) {
let result = self.repo.find_page(page_id); let result = self.repo.find_page(page_id);
match result { match result {
@ -18,12 +22,12 @@ impl<'a> FileService<'a> {
println!("No page found."); println!("No page found.");
} else { } else {
page.into_iter().for_each(|page: Page| { page.into_iter().for_each(|page: Page| {
println!("{}", "-".repeat(150)); println!("{}", "-".repeat(self.get_width()));
println!("M-ID: {}", page.m_id); println!("M-ID: {}", page.m_id);
println!("FileName: {}", page.file); println!("FileName: {}", page.file);
println!("Title: {}", page.title); println!("Title: {}", page.title);
}); });
println!("{}", "-".repeat(150)); println!("{}", "-".repeat(self.get_width()));
} }
} }
Err(err) => panic!("{}", err), Err(err) => panic!("{}", err),

View File

@ -1,4 +1,5 @@
use colored::Colorize; use colored::Colorize;
use rcc::TerminalSize;
use crate::{ use crate::{
entity::{filter::Filter, filter_config::FilterConfig, filter_log::FilterLog}, entity::{filter::Filter, filter_config::FilterConfig, filter_log::FilterLog},
@ -9,6 +10,8 @@ pub struct FilterService<'a> {
repo: FilterRepo<'a>, repo: FilterRepo<'a>,
} }
impl TerminalSize for FilterService<'_> {}
impl<'a> FilterService<'a> { impl<'a> FilterService<'a> {
pub fn new(repo: FilterRepo<'a>) -> Self { pub fn new(repo: FilterRepo<'a>) -> Self {
Self { repo } Self { repo }
@ -23,7 +26,7 @@ impl<'a> FilterService<'a> {
println!("Filter not found!"); println!("Filter not found!");
} else { } else {
filters.into_iter().for_each(|filter: Filter| { filters.into_iter().for_each(|filter: Filter| {
println!("{}", "-".repeat(150)); println!("{}", "-".repeat(self.get_width()));
println!("Module ID: {}", filter.filter_module_id); println!("Module ID: {}", filter.filter_module_id);
println!("FileName: {}", filter.file_name); println!("FileName: {}", filter.file_name);
println!("Description: {}", filter.description); println!("Description: {}", filter.description);
@ -34,7 +37,7 @@ impl<'a> FilterService<'a> {
if all { if all {
self.get_filter_configs(filter_id) self.get_filter_configs(filter_id)
} else { } else {
println!("{}", "-".repeat(150)); println!("{}", "-".repeat(self.get_width()));
} }
} }
} }
@ -50,7 +53,7 @@ impl<'a> FilterService<'a> {
if filter_configs.is_empty() { if filter_configs.is_empty() {
println!("No filter configs found!"); println!("No filter configs found!");
} else { } else {
println!("{}", "-".repeat(150)); println!("{}", "-".repeat(self.get_width()));
filter_configs filter_configs
.into_iter() .into_iter()
.for_each(|filter_config: FilterConfig| { .for_each(|filter_config: FilterConfig| {
@ -63,7 +66,7 @@ impl<'a> FilterService<'a> {
filter_config.name filter_config.name
); );
}); });
println!("{}", "-".repeat(150)); println!("{}", "-".repeat(self.get_width()));
} }
} }
Err(err) => panic!("{}", err), Err(err) => panic!("{}", err),
@ -77,7 +80,7 @@ impl<'a> FilterService<'a> {
if filter_log.is_empty() { if filter_log.is_empty() {
println!("No filter log found!"); println!("No filter log found!");
} else { } else {
println!("{}", "-".repeat(150)); println!("{}", "-".repeat(self.get_width()));
filter_log.into_iter().for_each(|filter_log: FilterLog| { filter_log.into_iter().for_each(|filter_log: FilterLog| {
println!( println!(
"TS: {} Error Code: {}", "TS: {} Error Code: {}",
@ -98,7 +101,7 @@ impl<'a> FilterService<'a> {
} }
} }
println!("{}", "-".repeat(150)); println!("{}", "-".repeat(self.get_width()));
}) })
} }
} }

View File

@ -1,3 +1,5 @@
use rcc::TerminalSize;
use crate::{ use crate::{
entity::job::{Job, JobLog}, entity::job::{Job, JobLog},
repository::job_repo::JobRepo, repository::job_repo::JobRepo,
@ -7,6 +9,8 @@ pub struct JobService<'a> {
pub repo: JobRepo<'a>, pub repo: JobRepo<'a>,
} }
impl TerminalSize for JobService<'_> {}
impl<'a> JobService<'a> { impl<'a> JobService<'a> {
pub fn new(repo: JobRepo<'a>) -> Self { pub fn new(repo: JobRepo<'a>) -> Self {
Self { repo } Self { repo }
@ -21,12 +25,12 @@ impl<'a> JobService<'a> {
println!("Job not found!"); println!("Job not found!");
} else { } else {
job.into_iter().for_each(|job: Job| { job.into_iter().for_each(|job: Job| {
println!("{}", "-".repeat(150)); println!("{}", "-".repeat(self.get_width()));
println!("FileName: {}", job.file_name); println!("FileName: {}", job.file_name);
println!("Description: {}", job.description); println!("Description: {}", job.description);
}); });
println!("{}", "-".repeat(150)); println!("{}", "-".repeat(self.get_width()));
} }
} }
Err(err) => panic!("{}", err), Err(err) => panic!("{}", err),
@ -45,7 +49,7 @@ impl<'a> JobService<'a> {
println!("{0: <25} | {1: <20} ", joblog.upd_ts, joblog.content,); println!("{0: <25} | {1: <20} ", joblog.upd_ts, joblog.content,);
}); });
println!("{}", "-".repeat(150)); println!("{}", "-".repeat(self.get_width()));
} }
} }
Err(err) => panic!("{}", err), Err(err) => panic!("{}", err),

View File

@ -1,15 +1,19 @@
use rcc::TerminalSize;
use crate::repository::merchant_repo::MerchantRepo; use crate::repository::merchant_repo::MerchantRepo;
pub struct MerchantService<'a> { pub struct MerchantService<'a> {
repo: MerchantRepo<'a>, repo: MerchantRepo<'a>,
} }
impl TerminalSize for MerchantService<'_> {}
impl<'a> MerchantService<'a> { impl<'a> MerchantService<'a> {
pub fn new(repo: MerchantRepo<'a>) -> Self { pub fn new(repo: MerchantRepo<'a>) -> Self {
Self { repo } Self { repo }
} }
pub fn get_merchant(self, search: &str) { pub fn get_merchant(&mut self, search: &str) {
let merchants = self.repo.find_by_name_or_id(search); let merchants = self.repo.find_by_name_or_id(search);
match merchants { match merchants {
@ -18,12 +22,12 @@ impl<'a> MerchantService<'a> {
println!("Merchant not found!"); println!("Merchant not found!");
} }
merchants.into_iter().for_each(|merchant| { merchants.into_iter().for_each(|merchant| {
println!("{}", "-".repeat(150)); println!("{}", "-".repeat(self.get_width()));
println!("Merchant: {}", merchant.m_name); println!("Merchant: {}", merchant.m_name);
println!("M-ID: {}", merchant.m_id); println!("M-ID: {}", merchant.m_id);
}); });
println!("{}", "-".repeat(150)); println!("{}", "-".repeat(self.get_width()));
} }
Err(err) => panic!("{}", err), Err(err) => panic!("{}", err),
}; };

View File

@ -1,9 +1,13 @@
use rcc::TerminalSize;
use crate::repository::schema_repo::SchemaRepo; use crate::repository::schema_repo::SchemaRepo;
pub struct SchemaService<'a> { pub struct SchemaService<'a> {
repo: SchemaRepo<'a>, repo: SchemaRepo<'a>,
} }
impl TerminalSize for SchemaService<'_> {}
impl<'a> SchemaService<'a> { impl<'a> SchemaService<'a> {
pub fn new(repo: SchemaRepo<'a>) -> Self { pub fn new(repo: SchemaRepo<'a>) -> Self {
Self { repo } Self { repo }
@ -17,12 +21,12 @@ impl<'a> SchemaService<'a> {
println!("No column found!"); println!("No column found!");
} else { } else {
columns.into_iter().for_each(|column| { columns.into_iter().for_each(|column| {
println!("{}", "-".repeat(100)); println!("{}", "-".repeat(self.get_width()));
println!("Table name: {}", column.table_name); println!("Table name: {}", column.table_name);
println!("Column name: {}", column.column_name); println!("Column name: {}", column.column_name);
println!("Type: {}", column.column_type); println!("Type: {}", column.column_type);
}); });
println!("{}", "-".repeat(100)); println!("{}", "-".repeat(self.get_width()));
} }
} }
Err(err) => panic!("{err}"), Err(err) => panic!("{err}"),