Browse Source

end refcatoring

db-refactoring
Coin de Gamma 3 months ago
parent
commit
9d79a58414
  1. 28
      src/db.rs
  2. 11
      src/main.rs

28
src/db.rs

@ -12,9 +12,9 @@ use std::fmt;
use std::cmp::{PartialEq, Ordering};
static STORAGE_FOLDER: String = "storage";
static STORAGE_FOLDER: Lazy<String> = Lazy::new(|| "storage".to_string() );
static STORAGE_PATH: Lazy<String> = Lazy::new(|| {
format!("{}/db.mps", STORAGE_FOLDER)
format!("{}/db.mps", &*STORAGE_FOLDER)
});
@ -93,16 +93,15 @@ impl Encoder {
pub struct DB {
pub items: HashSet::<Item>,
path: String,
encoder: Encoder
}
impl DB {
// TODO: make path as String too
pub fn new(path: &str, password: String) -> io::Result<DB> {
pub fn new(password: String) -> io::Result<DB> {
let encoder = Encoder::from(password);
// TODO: throw error is password is incorrect
let file = fs::File::open(path)?;
let file = fs::File::open(&*STORAGE_PATH)?;
let reader = io::BufReader::new(file);
let mut items = HashSet::<Item>::new();
let mut id: Option<String> = None;
@ -124,14 +123,14 @@ impl DB {
}
let result = DB {
items: items,
path: String::from(path),
encoder: encoder
};
Ok(result)
}
pub fn init(passphrase: String) -> io::Result<()> {
fs::create_dir(STORAGE_FOLDER)?;
pub fn init(_passphrase: String) -> io::Result<()> {
// TODO: use pasphrase
fs::create_dir(&*STORAGE_FOLDER)?;
println!("Storage folder created");
//let mut db = DB::init(&*STORAGE_PATH, pass)?;
@ -139,13 +138,20 @@ impl DB {
println!("Storage db created.");
println!("Initialization complete.");
println!("");
println!("Now it's required to add folder `{}` under git manually.", STORAGE_FOLDER);
println!("Now it's required to add folder `{}` under git manually.", &*STORAGE_FOLDER);
println!("Don't worry it's going to be encrypted.");
Ok(())
}
pub fn print_init_hint() {
println!("mps can work only when storage inited.");
println!("Hint: you can restore your storage if you have it already:");
println!(" git clone <your_storage_git_url> {}", &*STORAGE_FOLDER);
println!("to init manually your storage and config")
}
pub fn is_inited() -> bool {
let path = Path::new(STORAGE_FOLDER);
let path = Path::new(&*STORAGE_FOLDER);
return path.exists();
}
@ -158,7 +164,7 @@ impl DB {
let mut file = fs::OpenOptions::new()
.write(true)
.append(false)
.open(&self.path)?;
.open(&*STORAGE_PATH)?;
for item in self.items.iter() {
writeln!(file, "{}", item.id)?;

11
src/main.rs

@ -7,7 +7,6 @@ use db::{DB, Item};
use clap::{Parser, Subcommand};
use rpassword;
use std::fs;
use std::io::{self, Write};
use std::process;
@ -90,7 +89,7 @@ fn init() -> io::Result<()> {
return Err(io::Error::new(io::ErrorKind::InvalidInput, "Passwords must be equal"));
}
db:::DB::init(password)?;
db::DB::init(password)?;
Ok(())
}
@ -139,15 +138,11 @@ fn run_command() -> io::Result<()> {
if !db::DB::is_inited() {
match get_prompt("Do you want to init your storage?")? {
PROMPT::YES => init()?,
PROMPT::NO => {
println!("mps can work only when storage inited.");
println!("Hint: you can restore your storage if you have it already:");
println!(" git clone <your_storage_git_url> {}", STORAGE_FOLDER);
println!("to init manually your storage and config")
},
PROMPT::NO => db::DB::print_init_hint(),
}
} else {
login()?;
// TODO: list()
}
}
}

Loading…
Cancel
Save