pub enum TopCommand {
Shell,
Db {
command: DbCommand,
},
Migrations {
command: MigrationsCommand,
},
Migrate {
command: MigrateCommand,
},
Live {
command: LiveCmd,
},
Docs {
output: Option<PathBuf>,
workspace: Option<PathBuf>,
},
Verify {
workspace: Option<PathBuf>,
},
Schema {
format: SchemaFormat,
output: Option<PathBuf>,
},
Analyze {
format: AnalyzeFormat,
threshold_vacuum: f64,
threshold_partition_rows: i64,
workspace: Option<PathBuf>,
},
}Variants§
Shell
Launch interactive Rhai shell.
Db
Database management.
Migrations
Schema migration tooling (Phase 7).
Fields
command: MigrationsCommandMigrate
Compatibility alias for djogi migrations. See
djogi migrations --help for the full command tree.
Currently only apply is supported as an alias:
djogi migrate apply delegates to djogi migrations apply.
Fields
command: MigrateCommandLive
Phase 7.5 live-migration operator surface — drives expand →
backfill → flip → contract sequences for ExpandContract-
classified deltas.
Requires PostgreSQL 18 or later.
Docs
Render Markdown documentation from the descriptor inventory.
One file per registered model under <output>/<app>/, plus a
top-level README.md index. Output is byte-deterministic
against the same descriptor set.
Fields
Verify
Cluster 8ε T9.6 — read-only HMAC cross-check of every
migrations/<target>/<app>/schema_snapshot.json against the
audit DB’s djogi_ddl_audit ledger.
Requires PostgreSQL 18 or later — exits with code 2 if the server is below the minimum.
Exit codes: 0 when every snapshot reports OK or Skipped
(audit table absent or no audit row yet), 1 on any mismatch
or runtime error (config / connect / I/O / key decode).
Read-only. Verify never issues INSERT, UPDATE,
DELETE, or DDL — the only SQL leaving the CLI is a
positional-bind SELECT against djogi_ddl_audit.
Fields
Schema
Cluster 8ζ T12.2 — JSON descriptor dump.
Emits a deterministic JSON document covering every model
registered via inventory::submit!. Use for agent
integration, CI assertions on schema drift, and
machine-readable handoffs to downstream codegen.
Read-only. Schema never opens a Postgres connection; the inventory walk is fully in-process.
Fields
format: SchemaFormatOutput format. json is the only value in v0.1.0;
openapi and markdown are reserved for Phase 9.
Analyze
Cluster 8ε T10 — partition / vacuum analysis for adopter
Postgres tables. Queries pg_stat_user_tables (and, when
installed, pg_partman) and recommends vacuum / partition
actions per the precedence laid out in analyze::Recommendation.
Requires PostgreSQL 18 or later — exits with code 2 if the server is below the minimum.
Read-only. Analyze issues only SELECT against system
catalogues; it never writes.
Fields
format: AnalyzeFormatOutput format. human (default) prints one line per table;
json emits a deterministic, sorted array of
{table, recommendation} objects suitable for CI
dashboards.
threshold_vacuum: f64Dead-tuple ratio strictly above which VacuumNeeded fires.
Default 0.2 (20% bloat) — typical OLTP workloads tighten
this; warehouse workloads tend to leave it as-is. Validated
at parse time via [parse_threshold_vacuum]: rejects NaN /
infinity / values outside [0.0, 1.0] so silent
“never-fires” misconfigurations are impossible.
Trait Implementations§
Source§impl FromArgMatches for TopCommand
impl FromArgMatches for TopCommand
Source§fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>
fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>
Source§fn from_arg_matches_mut(
__clap_arg_matches: &mut ArgMatches,
) -> Result<Self, Error>
fn from_arg_matches_mut( __clap_arg_matches: &mut ArgMatches, ) -> Result<Self, Error>
Source§fn update_from_arg_matches(
&mut self,
__clap_arg_matches: &ArgMatches,
) -> Result<(), Error>
fn update_from_arg_matches( &mut self, __clap_arg_matches: &ArgMatches, ) -> Result<(), Error>
ArgMatches to self.Source§fn update_from_arg_matches_mut<'b>(
&mut self,
__clap_arg_matches: &mut ArgMatches,
) -> Result<(), Error>
fn update_from_arg_matches_mut<'b>( &mut self, __clap_arg_matches: &mut ArgMatches, ) -> Result<(), Error>
ArgMatches to self.Source§impl Subcommand for TopCommand
impl Subcommand for TopCommand
Source§fn augment_subcommands<'b>(__clap_app: Command) -> Command
fn augment_subcommands<'b>(__clap_app: Command) -> Command
Source§fn augment_subcommands_for_update<'b>(__clap_app: Command) -> Command
fn augment_subcommands_for_update<'b>(__clap_app: Command) -> Command
Command so it can instantiate self via
FromArgMatches::update_from_arg_matches_mut Read moreSource§fn has_subcommand(__clap_name: &str) -> bool
fn has_subcommand(__clap_name: &str) -> bool
Self can parse a specific subcommandAuto Trait Implementations§
impl Freeze for TopCommand
impl RefUnwindSafe for TopCommand
impl Send for TopCommand
impl Sync for TopCommand
impl Unpin for TopCommand
impl UnsafeUnpin for TopCommand
impl UnwindSafe for TopCommand
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<V> IntoPortableFieldValue<Option<V>> for V
impl<V> IntoPortableFieldValue<Option<V>> for V
Source§fn into_portable_field_value(self) -> Option<V>
fn into_portable_field_value(self) -> Option<V>
self into the field’s declared portable value type. Read moreSource§impl<V> IntoPortableFieldValue<Tracked<V>> for V
impl<V> IntoPortableFieldValue<Tracked<V>> for V
Source§fn into_portable_field_value(self) -> Tracked<V>
fn into_portable_field_value(self) -> Tracked<V>
self into the field’s declared portable value type. Read moreSource§impl<V> IntoPortableFieldValue<V> for V
impl<V> IntoPortableFieldValue<V> for V
Source§fn into_portable_field_value(self) -> V
fn into_portable_field_value(self) -> V
self into the field’s declared portable value type. Read moreSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);