pub enum AnalyzeError {
Config(String),
Pool {
url: String,
message: String,
},
Db(String),
Io(Error),
Json(Error),
}Expand description
Errors surfaced by run / fetch_table_health.
Each variant carries operator-actionable context — the goal is that
an eprintln!("djogi analyze: {e}") line is enough to diagnose
without grepping source. Mirrors verify::VerifyError’s shape.
Variants§
Config(String)
Loading Djogi.toml (and its env overlays) failed.
Pool
Could not connect to the application database. URL is included
for diagnostics; the underlying DjogiError is rendered into
message so AnalyzeError stays Send + Sync regardless of
the variant we received.
Fields
Db(String)
pg_stat_user_tables query (or the optional pg_partman join)
surfaced a Postgres error that is NOT one of the “extension
absent” SQLSTATEs we tolerate. Rendered eagerly for the same
reasons as Pool::message.
Io(Error)
Writing the rendered output to stdout failed (broken pipe,
disk full on a redirected > file.json, etc.).
Json(Error)
serde_json encoding failed. Should be unreachable because the
Row projection only contains primitive / OffsetDateTime /
known-Serialize types, but we surface it as a structured
variant rather than unwrap() so a future schema extension
that introduces a non-serialisable field fails loudly.
Trait Implementations§
Source§impl Debug for AnalyzeError
impl Debug for AnalyzeError
Source§impl Display for AnalyzeError
impl Display for AnalyzeError
Source§fn fmt(&self, f: &mut Formatter<'_>) -> Result
fn fmt(&self, f: &mut Formatter<'_>) -> Result
Every variant ships an operator-actionable remediation hint after
the cause — eprintln!("djogi analyze: {e}") should be enough to
either fix the problem or know what to file. The shape is
“analyze_error_display_is_operator_actionable test pins each
variant’s remediation keyword (Verify / Check / file an issue) so a future drift trips the test rather than silently
losing the hint.
Source§impl Error for AnalyzeError
impl Error for AnalyzeError
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Source§impl From<Error> for AnalyzeError
impl From<Error> for AnalyzeError
Auto Trait Implementations§
impl !RefUnwindSafe for AnalyzeError
impl !UnwindSafe for AnalyzeError
impl Freeze for AnalyzeError
impl Send for AnalyzeError
impl Sync for AnalyzeError
impl Unpin for AnalyzeError
impl UnsafeUnpin for AnalyzeError
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);