Skip to main content

DeployClient

Struct DeployClient 

Source
pub struct DeployClient {
    pub command: &'static str,
    pub run_file: &'static [&'static str],
    pub read_rows: Option<&'static [&'static str]>,
}
Expand description

A client described by the dialect, so razeri can write a deploy script around it.

Razeri writes one deploy.sh for every such client. It runs the bundle’s files in order through the client — the prerequisites, the schema, the staging fill, the loads — stops at the first file the engine refuses, and then reads the reconciliation back and grades it. All it asks of the dialect is how the client is called. Razeri has never run that script against your engine, and the bundle says so: proving it is a run of your own.

In each argument, {file} stands for the file being run and {target} for the database the operator names, as the script’s first argument or in RAZERI_TARGET. The operator can point the script at another copy of the client with RAZERI_CLIENT.

SQLite’s own client, described this way:

use razeri_plugin_api::{DeployClient, DeployScript};

const SQLITE3: DeployScript = DeployScript::Client(DeployClient {
    command: "sqlite3",
    run_file: &["-bail", "{target}", ".read {file}"],
    read_rows: Some(&["-csv", "-noheader", "{target}", ".read {file}"]),
});

Fields§

§command: &'static str

The client’s command, as an operator has it on PATH.

§run_file: &'static [&'static str]

The arguments that run one file of SQL and stop at the first statement the engine refuses, exiting non-zero.

The script reads nothing but the client’s exit code, so a client that carries on past a refusal, or exits zero after one, deploys part of a warehouse and reports it done. Name the option that makes yours stop; sqlite3 calls it -bail.

§read_rows: Option<&'static [&'static str]>

The arguments that run one query file and print its rows as comma-separated values, one row per line, with no header: how the script reads the reconciliation back to grade it.

None where the client cannot. The script then stops after the loads, exits with the code for nothing was compared, and says the reconciliation is the operator’s to run.

Trait Implementations§

Source§

impl Clone for DeployClient

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for DeployClient

Source§

impl Debug for DeployClient

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for DeployClient

Source§

impl PartialEq for DeployClient

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Serialize for DeployClient

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for DeployClient

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more