summaryrefslogtreecommitdiff
path: root/src/app.rs
diff options
context:
space:
mode:
authorOwen Jacobson <owen@grimoire.ca>2025-10-27 17:29:36 -0400
committerOwen Jacobson <owen@grimoire.ca>2025-10-28 01:27:13 -0400
commit398bc79a3f1f4316e6cc33b6e6bce133c1db3e4c (patch)
treef34f9ec001d2064b080b302fba175d66b08865ce /src/app.rs
parent2d05e6fb933d8c33078232b3bdfbc2aa05106d80 (diff)
Convert the `Conversations` component into a freestanding struct.
Unlike the previous example, this involves cloning an event broadcaster, as well. This is, per the documentation, how the type may be used. From <https://docs.rs/tokio/latest/tokio/sync/broadcast/fn.channel.html>: > The Sender can be cloned to send to the same channel from multiple points in the process or it can be used concurrently from an `Arc`. The language is less firm than the language sqlx uses for its pool, but the intent is clear enough, and it works in practice.
Diffstat (limited to 'src/app.rs')
-rw-r--r--src/app.rs10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/app.rs b/src/app.rs
index e33ee39..3f3885a 100644
--- a/src/app.rs
+++ b/src/app.rs
@@ -38,8 +38,8 @@ impl App {
Boot::new(self.db.clone())
}
- pub const fn conversations(&self) -> Conversations<'_> {
- Conversations::new(&self.db, &self.events)
+ pub fn conversations(&self) -> Conversations {
+ Conversations::new(self.db.clone(), self.events.clone())
}
pub const fn events(&self) -> Events<'_> {
@@ -77,3 +77,9 @@ impl FromRef<App> for Boot {
app.boot()
}
}
+
+impl FromRef<App> for Conversations {
+ fn from_ref(app: &App) -> Self {
+ app.conversations()
+ }
+}