Skip to main content

Config

Struct Config 

Source
pub struct Config { /* private fields */ }
Expand description

A loaded drizzle.config.toml.

Holds one database or several named ones:

Single database:

dialect = "sqlite"
[dbCredentials]
url = "./dev.db"

Multiple databases:

[databases.dev]
dialect = "sqlite"
[databases.dev.dbCredentials]
url = "./dev.db"

[databases.prod]
dialect = "postgresql"
[databases.prod.dbCredentials]
url = { env = "DATABASE_URL" }

Implementations§

Source§

impl Config

Source

pub fn load() -> Result<Self, Error>

Loads CONFIG_FILE from the current directory.

§Errors

Returns Error if the file cannot be read, is not valid TOML for the config, or fails validation.

Source

pub fn load_from(path: &Path) -> Result<Self, Error>

Loads a config file from path.

Relative paths inside the file (schema, out, …) are resolved against the file’s folder.

§Examples
use drizzle_cli::{Config, Dialect};

let dir = std::env::temp_dir().join("drizzle-cli-doc-load-from");
std::fs::create_dir_all(&dir)?;
let path = dir.join("drizzle.config.toml");
std::fs::write(&path, r#"
dialect = "sqlite"
schema = "src/schema.rs"
out = "./drizzle"

[dbCredentials]
url = "./dev.db"
"#)?;

let config = Config::load_from(&path)?;
assert!(config.is_single_database());
assert_eq!(config.dialect(), Dialect::Sqlite);
§Errors

Returns Error::NotFound if path does not exist, Error::Io for other read errors, Error::Parse for invalid TOML, and other Error variants when validation fails (for example a driver that does not match the dialect).

Source

pub const fn is_single_database(&self) -> bool

Returns true for a single-database config (no [databases.*]).

Source

pub fn database_names(&self) -> impl Iterator<Item = &str>

Returns the configured database names ("default" for a single-database config).

Source

pub fn database(&self, name: Option<&str>) -> Result<&DatabaseConfig, Error>

Returns the database named name, or the only one when name is None.

A single-database config ignores name and always returns its database.

§Errors

Returns Error::NoDatabases if the config has no databases, Error::DatabaseNotFound if name does not match any configured database, or Error::DatabaseRequired if multiple databases exist and no name was supplied.

Source

pub fn default_database(&self) -> Result<&DatabaseConfig, Error>

Returns the only database, or an error when there are several.

§Errors

Returns the same errors as Self::database invoked with None.

Source

pub fn dialect(&self) -> Dialect

Returns the default database’s dialect (single-database shortcut).

Source

pub fn credentials(&self) -> Result<Option<Credentials>, Error>

Returns the default database’s credentials (single-database shortcut).

§Errors

Returns Error if resolving the default database or its credentials fails (see Self::default_database and DatabaseConfig::credentials).

Source

pub fn migrations_dir(&self) -> &Path

Returns the default database’s migrations folder (single-database shortcut).

Source

pub fn journal_path(&self) -> PathBuf

Returns the default database’s legacy meta/_journal.json path (single-database shortcut).

Source

pub fn schema_display(&self) -> String

Returns the default database’s schema paths for display (single-database shortcut).

Source

pub fn schema_files(&self) -> Result<Vec<PathBuf>, Error>

Returns the default database’s resolved schema files (single-database shortcut).

§Errors

Returns Error if resolving the default database fails or if resolving its schema files fails (see DatabaseConfig::schema_files).

Source

pub fn base_dialect(&self) -> Dialect

Returns the default database’s base SQL dialect (Turso maps to SQLite).

Trait Implementations§

Source§

impl Clone for Config

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 Debug for Config

Source§

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

Formats the value using the given formatter. Read more

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> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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<Joined, From> JoinKey<From, JoinReverse> for Joined
where From: Joinable<Joined> + ?Sized,

Source§

fn pairs() -> &'static [(&'static str, &'static str)]

(joined_column, from_column) pairs the ON condition matches, in key order, read through Self::pair.
Source§

fn pair(pair: &(&'static str, &'static str)) -> (&'static str, &'static str)

The (joined_column, from_column) names of pair.
Source§

impl<List> ListIncludes<Nil, ()> for List

Source§

impl<Mk> MarkerAggValidFor<()> for Mk

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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> TypeEq<T> for T