Skip to main content

modo/db/
database.rs

1use std::sync::Arc;
2
3/// Clone-able, single-connection database handle.
4///
5/// Wraps a `libsql::Database` and `libsql::Connection` behind an `Arc`.
6/// Cloning is cheap (reference count increment). Use [`conn()`](Self::conn)
7/// to access the underlying `libsql::Connection` for queries.
8///
9/// Created by [`connect`](super::connect).
10#[derive(Clone)]
11pub struct Database {
12    inner: Arc<Inner>,
13}
14
15struct Inner {
16    #[allow(dead_code)]
17    db: libsql::Database,
18    conn: libsql::Connection,
19}
20
21impl Database {
22    pub(crate) fn new(db: libsql::Database, conn: libsql::Connection) -> Self {
23        Self {
24            inner: Arc::new(Inner { db, conn }),
25        }
26    }
27
28    /// Returns a reference to the underlying libsql connection.
29    pub fn conn(&self) -> &libsql::Connection {
30        &self.inner.conn
31    }
32}