work on annotate
This commit is contained in:
101
src/generator/modules/annotate/comment.rs
Normal file
101
src/generator/modules/annotate/comment.rs
Normal file
@@ -0,0 +1,101 @@
|
||||
use color_eyre::Result;
|
||||
use minijinja::Environment;
|
||||
|
||||
use crate::generator::modules::{
|
||||
discovery::{db::DbType, table::Table},
|
||||
sea_orm::config::DateTimeCrate,
|
||||
};
|
||||
use comfy_table::{Cell, ContentArrangement, Table as CTable};
|
||||
|
||||
use super::{AnnotateCommentConfig, COMMENTBODY, COMMENTHEAD, COMMENTTAIL};
|
||||
pub fn generate_comment(
|
||||
table: &Table,
|
||||
config: &AnnotateCommentConfig,
|
||||
environment: &Environment<'static>,
|
||||
db_type: &DbType,
|
||||
date_time_crate: &DateTimeCrate,
|
||||
) -> Result<String> {
|
||||
let mut column_info_table = CTable::new();
|
||||
let mut header = Vec::new();
|
||||
if config.column_name.unwrap() {
|
||||
header.push("Name");
|
||||
}
|
||||
if config.column_db_type.unwrap() {
|
||||
header.push("DbType");
|
||||
}
|
||||
if config.column_rust_type.unwrap() {
|
||||
header.push("RsType");
|
||||
}
|
||||
if config.column_attributes.unwrap() {
|
||||
header.push("Attrs");
|
||||
}
|
||||
column_info_table
|
||||
.load_preset(" -+=++ + ++")
|
||||
.set_content_arrangement(ContentArrangement::Dynamic)
|
||||
.set_header(header);
|
||||
if let Some(width) = config.max_wdith {
|
||||
column_info_table.set_width(width);
|
||||
}
|
||||
for column in &table.columns {
|
||||
let mut row = Vec::new();
|
||||
if config.column_name.unwrap() {
|
||||
row.push(Cell::new(column.name.clone()))
|
||||
}
|
||||
if config.column_db_type.unwrap() {
|
||||
let column_type = column.get_db_type(db_type);
|
||||
row.push(Cell::new(column_type));
|
||||
}
|
||||
if config.column_rust_type.unwrap() {
|
||||
let column_type = column.get_rust_type(date_time_crate);
|
||||
row.push(Cell::new(column_type));
|
||||
}
|
||||
if config.column_attributes.unwrap() {
|
||||
let attrs_string = column.attrs_to_string();
|
||||
row.push(Cell::new(attrs_string));
|
||||
}
|
||||
column_info_table.add_row(row);
|
||||
}
|
||||
// column_info_table.to_string()
|
||||
// let config_part = match parsed_settings {
|
||||
// Some(settings) => {
|
||||
// let settings_str = serde_yaml::to_string(&settings)?;
|
||||
// let settings_str = settings_str
|
||||
// .lines()
|
||||
// .map(|line| format!(" {}", line))
|
||||
// .collect::<Vec<_>>()
|
||||
// .join("\n");
|
||||
// format!(
|
||||
// "{SETTINGSDELIMITER}\n{}\n{SETTINGSDELIMITER}\n\n",
|
||||
// settings_str
|
||||
// )
|
||||
// }
|
||||
// None => String::new(),
|
||||
// };
|
||||
|
||||
// let table_name = &table.name;
|
||||
// let table_name_str = if config.table_name {
|
||||
// format!("Table: {}\n", table_name)
|
||||
// } else {
|
||||
// String::new()
|
||||
// };
|
||||
// let string = format!("{HEADER}\n{config_part}{table_name_str}\n{column_info_table}");
|
||||
|
||||
// let padded_string = Self::pad_comment(&string);
|
||||
Ok(String::new())
|
||||
}
|
||||
|
||||
pub fn pad_comment(s: &str) -> String {
|
||||
let parts = s.split('\n').collect::<Vec<_>>();
|
||||
let mut padded = String::new();
|
||||
for (index, part) in parts.iter().enumerate() {
|
||||
let first = index == 0;
|
||||
let comment = match first {
|
||||
true => COMMENTHEAD.to_string(),
|
||||
false => COMMENTBODY.to_string(),
|
||||
};
|
||||
let padded_part = format!("{} {}\n", comment, part);
|
||||
padded.push_str(&padded_part);
|
||||
}
|
||||
padded.push_str(COMMENTTAIL);
|
||||
padded
|
||||
}
|
||||
Reference in New Issue
Block a user