chm 0.1.17

Migrations CLI tool for ClickHouse
Documentation
use crate::{commands::GenerateArgs, errors::CLIError};
use chrono::prelude::*;

pub async fn generate_command(args: GenerateArgs) -> Result<(), CLIError> {
    let migrations_dir = std::env::current_dir()?.join("ch_migrations");

    if !migrations_dir.is_dir() {
        return Err(CLIError::BadArgs(
            "Migrations directory does not exist. Please run chm setup first!".to_string(),
        ));
    }

    let migration_dir = migrations_dir.join(format!("{}_{}", Utc::now().timestamp(), args.name));

    tokio::fs::create_dir(migration_dir.clone()).await?;
    let up_file = migration_dir.clone().join("up.sql");
    let down_file = migration_dir.clone().join("down.sql");
    tokio::fs::File::create(up_file.clone()).await?;
    tokio::fs::File::create(down_file.clone()).await?;

    println!("Creating: {}", up_file.display());
    println!("Creating: {}", down_file.display());
    Ok(())
}