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}