parsql_cli/
lib.rs

1//! Parsql CLI library
2//! 
3//! This crate provides the command-line interface for the parsql database toolkit.
4
5use clap::Subcommand;
6
7pub mod config;
8pub mod utils;
9pub mod commands;
10pub mod ui;
11
12#[derive(Subcommand)]
13pub enum MigrateCommands {
14    /// Create a new migration
15    #[command(alias = "c")]
16    Create {
17        /// Migration name (e.g., "create_users_table")
18        name: String,
19        
20        /// Migration type
21        #[arg(short = 't', long, default_value = "sql", value_parser = ["sql", "rust"])]
22        migration_type: String,
23    },
24    
25    /// Run pending migrations
26    #[command(alias = "r")]
27    Run {
28        /// Target database URL (overrides global --database-url)
29        #[arg(long)]
30        database_url: Option<String>,
31        
32        /// Dry run - show what would be executed without applying
33        #[arg(long)]
34        dry_run: bool,
35        
36        /// Target version (run up to this version)
37        #[arg(long)]
38        target: Option<i64>,
39    },
40    
41    /// Rollback migrations
42    #[command(alias = "b")]
43    Rollback {
44        /// Target version to rollback to
45        #[arg(long, short = 't')]
46        to: i64,
47        
48        /// Target database URL (overrides global --database-url)
49        #[arg(long)]
50        database_url: Option<String>,
51        
52        /// Dry run - show what would be rolled back without executing
53        #[arg(long)]
54        dry_run: bool,
55    },
56    
57    /// Show migration status
58    #[command(alias = "s")]
59    Status {
60        /// Target database URL (overrides global --database-url)
61        #[arg(long)]
62        database_url: Option<String>,
63        
64        /// Show detailed information including checksums
65        #[arg(long)]
66        detailed: bool,
67    },
68    
69    /// Validate migration files
70    #[command(alias = "v")]
71    Validate {
72        /// Check for version gaps
73        #[arg(long)]
74        check_gaps: bool,
75        
76        /// Verify migration checksums
77        #[arg(long)]
78        verify_checksums: bool,
79    },
80    
81    /// List migration files
82    #[command(alias = "l")]
83    List {
84        /// Show only pending migrations
85        #[arg(long)]
86        pending: bool,
87        
88        /// Show only applied migrations
89        #[arg(long)]
90        applied: bool,
91    },
92}