glean-core 70.0.0

A modern Telemetry library
Documentation
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at https://mozilla.org/MPL/2.0/.

use rusqlite::Connection;

/// This trait exists so that we can use these helpers on `rusqlite::{Transaction, Connection}`.
/// Note that you must import ConnExt in order to call these methods on anything.
pub trait ConnExt {
    /// The method you need to implement to opt in to all of this.
    fn conn(&self) -> &Connection;

    /// Execute a single statement.
    fn execute_one(&self, stmt: &str) -> Result<(), rusqlite::Error> {
        match self.conn().execute(stmt, []) {
            Ok(_) => Ok(()),
            // Ignore ExecuteReturnedResults error because they're pointless
            // and annoying.
            Err(rusqlite::Error::ExecuteReturnedResults) => Ok(()),
            Err(e) => Err(e),
        }
    }
}

impl ConnExt for Connection {
    #[inline]
    fn conn(&self) -> &Connection {
        self
    }
}