use crate::DatabaseIdentifier;
use sqlx::{Pool, Sqlite};
#[derive(Clone, Debug)]
pub struct DbRead<I: DatabaseIdentifier> {
pub(crate) pool: Pool<Sqlite>,
pub(crate) identifier: I,
}
impl<I: DatabaseIdentifier> DbRead<I> {
pub(crate) fn new(pool: Pool<Sqlite>, identifier: I) -> Self {
Self { pool, identifier }
}
pub fn identifier(&self) -> &I {
&self.identifier
}
pub fn pool(&self) -> &Pool<Sqlite> {
&self.pool
}
}
#[derive(Clone, Debug)]
pub struct DbWrite<I: DatabaseIdentifier>(DbRead<I>);
impl<I: DatabaseIdentifier> DbWrite<I> {
pub(crate) fn new(pool: Pool<Sqlite>, identifier: I) -> Self {
Self(DbRead::new(pool, identifier))
}
pub fn identifier(&self) -> &I {
self.0.identifier()
}
pub fn pool(&self) -> &Pool<Sqlite> {
self.0.pool()
}
}
impl<I: DatabaseIdentifier> From<DbWrite<I>> for DbRead<I> {
fn from(write: DbWrite<I>) -> Self {
write.0
}
}
impl<I: DatabaseIdentifier> AsRef<DbRead<I>> for DbWrite<I> {
fn as_ref(&self) -> &DbRead<I> {
&self.0
}
}