pub enum DbCommand {
Reset {
yes: bool,
allow_checksum_drift_reset: bool,
maintenance_database: String,
workspace: Option<PathBuf>,
node_id: Option<u32>,
single_node_dev: bool,
},
Seed {
database: String,
allow_non_localhost: bool,
workspace: Option<PathBuf>,
},
CleanupTestDbs {
dry_run: bool,
yes: bool,
maintenance_database: String,
allow_non_localhost: bool,
workspace: Option<PathBuf>,
},
}Variants§
Reset
Drop, recreate, and replay every committed migration against
the application database. Triple-gated — refuses unless
(a) DATABASE_URL resolves to localhost, (b)
Djogi.toml::profile != "production", and (c) explicit
confirmation is supplied via --yes or the interactive
prompt. Logging databases (crud_log, event_log) are NOT
touched.
Requires PostgreSQL 18 or later — exits with code 2 if the
server is below the minimum.
Exit codes: 0 on success, 1 on error (config / network / SQL
/ replay), 2 on gate refusal (not localhost, production
profile, missing --yes, below PG 18).
Fields
yes: boolSkip the interactive y/N prompt and proceed. Required for
non-interactive invocations (e.g. CI integration suites
that call db reset between tests).
allow_checksum_drift_reset: boolPermit db reset to continue even when the live ledger’s
checksums no longer match the current on-disk migration
files. Without this flag, checksum drift refuses before
the destructive drop / recreate step.
maintenance_database: StringMaintenance database to connect to for the DROP DATABASE
then CREATE DATABASE round-trip. Defaults to postgres,
the conventional administrative DB present on every
cluster. Override only if the cluster has a different
administrative DB (e.g. AWS RDS uses rdsadmin).
Seed
Run operator-authored SQL seed files in seeds/<database>/.
Idempotent — re-runs skip seeds whose V1:<sha256> checksum
matches the djogi_seed_runs ledger; refuses on checksum
drift. Localhost-gated by default.
Requires PostgreSQL 18 or later — exits with code 2 if the
server is below the minimum.
--database <name> selects BOTH the seed directory and the
connection target. The CLI splices <name> into
database.url’s path component so seeds always land on the
matching DB; a malformed application URL refuses with exit
code 1.
Exit codes: 0 on success, 1 on error (config / network / SQL
/ checksum drift / malformed URL), 2 on gate refusal
(non-localhost without --allow-non-localhost, below PG 18).
Fields
database: StringDatabase name whose seeds directory should be run. The
runner walks seeds/<database>/*.sql in alphabetical
order.
CleanupTestDbs
Drop orphaned djogi_test_<uuid> databases left over from
crashed #[djogi_test] runs (SIGKILL / OOM / panic-after-spawn
before teardown could fire). Triple-gated identical to
db reset — localhost (override via --allow-non-localhost),
non-production profile, explicit --yes (waived under
--dry-run).
Requires PostgreSQL 18 or later — exits with code 2 if the
server is below the minimum.
Exit codes: 0 on success, 1 on error (config / connect / SQL),
2 on gate refusal (non-localhost, production profile, missing
--yes without --dry-run, below PG 18).
Fields
dry_run: boolList candidates without dropping. Skips the --yes
confirmation gate because no destructive side effect
occurs.
yes: boolSkip the --yes confirmation gate. Required for
non-interactive invocations unless --dry-run is also set.
maintenance_database: StringMaintenance database to connect to. Defaults to postgres,
the conventional administrative DB on every cluster.
Override only when the cluster uses a different admin DB
(e.g. AWS RDS uses rdsadmin).
Trait Implementations§
Source§impl FromArgMatches for DbCommand
impl FromArgMatches for DbCommand
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 DbCommand
impl Subcommand for DbCommand
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 DbCommand
impl RefUnwindSafe for DbCommand
impl Send for DbCommand
impl Sync for DbCommand
impl Unpin for DbCommand
impl UnsafeUnpin for DbCommand
impl UnwindSafe for DbCommand
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.
The returned value flows into Sassi’s Field<M, FieldValue>::eq /
.gt / .in_ / etc. as the right-hand-side operand. Implementors
must produce a value whose PartialEq / PartialOrd / Hash
behaviour matches the on-disk column ordering — otherwise Punnu and
the database row will disagree at evaluation time.Source§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.
The returned value flows into Sassi’s Field<M, FieldValue>::eq /
.gt / .in_ / etc. as the right-hand-side operand. Implementors
must produce a value whose PartialEq / PartialOrd / Hash
behaviour matches the on-disk column ordering — otherwise Punnu and
the database row will disagree at evaluation time.Source§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.
The returned value flows into Sassi’s Field<M, FieldValue>::eq /
.gt / .in_ / etc. as the right-hand-side operand. Implementors
must produce a value whose PartialEq / PartialOrd / Hash
behaviour matches the on-disk column ordering — otherwise Punnu and
the database row will disagree at evaluation time.Source§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);