Skip to main content

MssqlConnection

Struct MssqlConnection 

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

MSSQL connection backed by an actor thread that owns the ODBC connection.

Implementations§

Source§

impl MssqlConnection

Source

pub fn connect_blocking( options: &MssqlConnectOptions, ) -> Result<MssqlConnection, MssqlError>

Opens a blocking MSSQL ODBC connection with the provided options and spawns an actor thread to own it.

Source

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

Executes a minimal connectivity query.

Source

pub fn dbms_name(&self) -> Result<String, Error>

Returns the DBMS name reported by the ODBC driver.

Source

pub fn prepare_blocking(&self, sql: SqlStr) -> Result<MssqlStatement, Error>

Prepares a statement and returns the metadata reported by the ODBC driver.

Trait Implementations§

Source§

impl<'c> Acquire<'c> for &'c mut MssqlConnection

Source§

type Database = Mssql

Source§

type Connection = &'c mut <Mssql as Database>::Connection

Source§

fn acquire( self, ) -> Pin<Box<dyn Future<Output = Result<<&'c mut MssqlConnection as Acquire<'c>>::Connection, Error>> + Send + 'c>>

Source§

fn begin( self, ) -> Pin<Box<dyn Future<Output = Result<Transaction<'c, Mssql>, Error>> + Send + 'c>>

Source§

impl Connection for MssqlConnection

Source§

type Database = Mssql

Source§

type Options = MssqlConnectOptions

Source§

async fn close(self) -> Result<(), Error>

Explicitly close this database connection. Read more
Source§

async fn ping(&mut self) -> Result<(), Error>

Checks if a connection to the database is still valid.
Source§

fn begin( &mut self, ) -> impl Future<Output = Result<Transaction<'_, <MssqlConnection as Connection>::Database>, Error>> + Send

Begin a new transaction or establish a savepoint within the active transaction. Read more
Source§

fn shrink_buffers(&mut self)

Restore any buffers in the connection to their default capacity, if possible. Read more
Source§

fn cached_statements_size(&self) -> usize

The number of statements currently cached in the connection.
Source§

async fn clear_cached_statements(&mut self) -> Result<(), Error>

Removes all statements from the cache, closing them on the server if needed.
Source§

fn begin_with( &mut self, statement: impl SqlSafeStr, ) -> impl Future<Output = Result<Transaction<'_, Self::Database>, Error>> + Send
where Self: Sized,

Begin a new transaction with a custom statement. Read more
Source§

fn is_in_transaction(&self) -> bool

Returns true if the connection is currently in a transaction. Read more
Source§

fn transaction<'a, F, R, E>( &'a mut self, callback: F, ) -> impl Future<Output = Result<R, E>> + Send + 'a
where F: for<'c> FnOnce(&'c mut Transaction<'_, Self::Database>) -> Pin<Box<dyn Future<Output = Result<R, E>> + Send + 'c>> + 'a + for<'c> Send + for<'c> Sync, Self: Sized, R: Send, E: From<Error> + Send,

Execute the function inside a transaction. Read more
Source§

fn connect( url: &str, ) -> impl Future<Output = Result<Self, Error>> + Send + 'static
where Self: Sized,

Establish a new database connection. Read more
Source§

fn connect_with( options: &Self::Options, ) -> impl Future<Output = Result<Self, Error>> + Send
where Self: Sized,

Establish a new database connection with the provided options.
Source§

impl Debug for MssqlConnection

Source§

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

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

impl Drop for MssqlConnection

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more
Source§

impl<'c> Executor<'c> for &'c mut MssqlConnection

Source§

type Database = Mssql

Source§

fn fetch_many<'e, 'q, E>( self, query: E, ) -> Pin<Box<dyn Stream<Item = Result<Either<MssqlQueryResult, MssqlRow>, Error>> + Send + 'e>>
where 'c: 'e, 'q: 'e, E: Execute<'q, <&'c mut MssqlConnection as Executor<'c>>::Database> + 'q,

Execute multiple queries and return the generated results as a stream from each query, in a stream.
Source§

fn fetch_optional<'e, 'q, E>( self, query: E, ) -> Pin<Box<dyn Future<Output = Result<Option<MssqlRow>, Error>> + Send + 'e>>
where 'c: 'e, 'q: 'e, E: Execute<'q, <&'c mut MssqlConnection as Executor<'c>>::Database> + 'q,

Execute the query and returns at most one row.
Source§

fn prepare_with<'e>( self, sql: SqlStr, _parameters: &[MssqlTypeInfo], ) -> Pin<Box<dyn Future<Output = Result<MssqlStatement, Error>> + Send + 'e>>
where 'c: 'e,

Prepare the SQL query, with parameter type information, to inspect the type information about its parameters and results. Read more
Source§

fn execute<'e, 'q, E>( self, query: E, ) -> Pin<Box<dyn Future<Output = Result<<Self::Database as Database>::QueryResult, Error>> + Send + 'e>>
where 'q: 'e, 'c: 'e, E: 'q + Execute<'q, Self::Database>,

Execute the query and return the total number of rows affected.
Source§

fn execute_many<'e, 'q, E>( self, query: E, ) -> Pin<Box<dyn Stream<Item = Result<<Self::Database as Database>::QueryResult, Error>> + Send + 'e>>
where 'q: 'e, 'c: 'e, E: 'q + Execute<'q, Self::Database>,

Execute multiple queries and return the rows affected from each query, in a stream.
Source§

fn fetch<'e, 'q, E>( self, query: E, ) -> Pin<Box<dyn Stream<Item = Result<<Self::Database as Database>::Row, Error>> + Send + 'e>>
where 'q: 'e, 'c: 'e, E: 'q + Execute<'q, Self::Database>,

Execute the query and return the generated results as a stream.
Source§

fn fetch_all<'e, 'q, E>( self, query: E, ) -> Pin<Box<dyn Future<Output = Result<Vec<<Self::Database as Database>::Row>, Error>> + Send + 'e>>
where 'q: 'e, 'c: 'e, E: 'q + Execute<'q, Self::Database>,

Execute the query and return all the generated results, collected into a Vec.
Source§

fn fetch_one<'e, 'q, E>( self, query: E, ) -> Pin<Box<dyn Future<Output = Result<<Self::Database as Database>::Row, Error>> + Send + 'e>>
where 'q: 'e, 'c: 'e, E: 'q + Execute<'q, Self::Database>,

Execute the query and returns exactly one row.
Source§

fn prepare<'e>( self, query: SqlStr, ) -> Pin<Box<dyn Future<Output = Result<<Self::Database as Database>::Statement, Error>> + Send + 'e>>
where 'c: 'e,

Prepare the SQL query to inspect the type information of its parameters and results. Read more
Source§

impl Migrate for MssqlConnection

Source§

fn create_schema_if_not_exists<'e>( &'e mut self, schema_name: &'e str, ) -> Pin<Box<dyn Future<Output = Result<(), MigrateError>> + Send + 'e>>

MSSQL does not support CREATE SCHEMA IF NOT EXISTS as a single statement, so we use a conditional T-SQL block.

Source§

fn ensure_migrations_table<'e>( &'e mut self, table_name: &'e str, ) -> Pin<Box<dyn Future<Output = Result<(), MigrateError>> + Send + 'e>>

Creates the migrations tracking table if it does not yet exist.

Source§

fn dirty_version<'e>( &'e mut self, _table_name: &'e str, ) -> Pin<Box<dyn Future<Output = Result<Option<i64>, MigrateError>> + Send + 'e>>

MSSQL supports transactional DDL, so a dirty (partially applied) migration cannot occur. Always returns None.

Source§

fn list_applied_migrations<'e>( &'e mut self, table_name: &'e str, ) -> Pin<Box<dyn Future<Output = Result<Vec<AppliedMigration>, MigrateError>> + Send + 'e>>

Lists all previously applied migrations, ordered by version.

Source§

fn lock( &mut self, ) -> Pin<Box<dyn Future<Output = Result<(), MigrateError>> + Send + '_>>

Acquires an exclusive application-level lock using sp_getapplock.

Source§

fn unlock( &mut self, ) -> Pin<Box<dyn Future<Output = Result<(), MigrateError>> + Send + '_>>

Releases the application-level lock using sp_releaseapplock.

Source§

fn apply<'e>( &'e mut self, _table_name: &'e str, migration: &'e Migration, ) -> Pin<Box<dyn Future<Output = Result<Duration, MigrateError>> + Send + 'e>>

Applies a migration: executes the SQL, then records the migration in the tracking table.

Source§

fn revert<'e>( &'e mut self, _table_name: &'e str, migration: &'e Migration, ) -> Pin<Box<dyn Future<Output = Result<Duration, MigrateError>> + Send + 'e>>

Reverts a migration: executes the down SQL, then removes the tracking record.

Source§

fn skip<'e>( &'e mut self, _table_name: &'e str, _migration: &'e Migration, ) -> Pin<Box<dyn Future<Output = Result<(), MigrateError>> + Send + 'e>>

Marks a migration as applied without executing its SQL.

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

Source§

type Output = T

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