summaryrefslogtreecommitdiff
path: root/src/boot
diff options
context:
space:
mode:
Diffstat (limited to 'src/boot')
-rw-r--r--src/boot/app.rs34
1 files changed, 32 insertions, 2 deletions
diff --git a/src/boot/app.rs b/src/boot/app.rs
index ef48b2f..1d88608 100644
--- a/src/boot/app.rs
+++ b/src/boot/app.rs
@@ -2,8 +2,11 @@ use sqlx::sqlite::SqlitePool;
use super::Snapshot;
use crate::{
- channel::repo::Provider as _, event::repo::Provider as _, login::repo::Provider as _,
+ channel::{self, repo::Provider as _},
+ event::repo::Provider as _,
+ login::{self, repo::Provider as _},
message::repo::Provider as _,
+ name,
};
pub struct Boot<'a> {
@@ -15,7 +18,7 @@ impl<'a> Boot<'a> {
Self { db }
}
- pub async fn snapshot(&self) -> Result<Snapshot, sqlx::Error> {
+ pub async fn snapshot(&self) -> Result<Snapshot, Error> {
let mut tx = self.db.begin().await?;
let resume_point = tx.sequence().current().await?;
@@ -48,3 +51,30 @@ impl<'a> Boot<'a> {
})
}
}
+
+#[derive(Debug, thiserror::Error)]
+#[error(transparent)]
+pub enum Error {
+ Name(#[from] name::Error),
+ Database(#[from] sqlx::Error),
+}
+
+impl From<login::repo::LoadError> for Error {
+ fn from(error: login::repo::LoadError) -> Self {
+ use login::repo::LoadError;
+ match error {
+ LoadError::Name(error) => error.into(),
+ LoadError::Database(error) => error.into(),
+ }
+ }
+}
+
+impl From<channel::repo::LoadError> for Error {
+ fn from(error: channel::repo::LoadError) -> Self {
+ use channel::repo::LoadError;
+ match error {
+ LoadError::Name(error) => error.into(),
+ LoadError::Database(error) => error.into(),
+ }
+ }
+}