Skip to main content

Database

Struct Database 

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

Wrapper around a rusqlite::Connection with project-standard pragmas applied and migrations run.

Implementations§

Source§

impl Database

Source

pub fn open(path: &Path) -> Result<Database>

Open or create a SQLite database at path, apply pragmas, and run any pending migrations.

Tilde-expansion is applied to path.

§Errors
Source

pub fn open_in_memory() -> Result<Database>

Open an in-memory database. Primarily intended for tests.

§Errors

See Database::open.

Source

pub fn connection(&self) -> &Connection

Borrow the underlying connection (read-only).

Source

pub fn connection_mut(&mut self) -> &mut Connection

Borrow the underlying connection mutably.

Source

pub fn journal_mode(&self) -> Result<String>

Return the active journal mode (e.g. "wal" or "memory").

§Errors

Returns TgaError::DbError if the pragma query fails.

Source

pub fn schema_version(&self) -> Result<i64>

Return the highest applied migration version.

§Errors

Returns TgaError::DbError if the query fails.

Source

pub fn wal_checkpoint(&self, mode: CheckpointMode) -> Result<()>

Checkpoint the WAL into the main database file.

Why: SQLite WAL mode defers writes to a separate -wal file; if the process exits (or is killed) before a checkpoint, the main database file can lag behind the WAL. On clean exit callers should call wal_checkpoint(CheckpointMode::Truncate) to flush and zero the WAL, guaranteeing durability. During long-running writes, periodic wal_checkpoint(CheckpointMode::Passive) calls limit the data-loss window on crash. See bug #298.

What: executes PRAGMA wal_checkpoint(<mode>) and logs the result. Returns Ok(()) on success; returns an error if the checkpoint pragma fails (e.g. SQLITE_CORRUPT).

§Checkpoint modes
  • CheckpointMode::Passive — copies frames from the WAL without blocking writers. Safe to call mid-run; used for periodic crash- resilience checkpoints.
  • CheckpointMode::Truncate — flushes all WAL frames to the main database and truncates the WAL file to zero. Call on clean exit to guarantee durability and cap the WAL file size.
§Errors

Returns TgaError::DbError if the pragma query fails.

§Test

See tests::wal_checkpoint_truncate_zeroes_wal_on_file_db.

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> 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

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

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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