diff --git a/DESIGN.md b/DESIGN.md index ed5266b7..cfb4681e 100644 --- a/DESIGN.md +++ b/DESIGN.md @@ -31,3 +31,18 @@ Posts's `AsObject` APIs are called every time a Post is added/updated/deleted. It builds on `PlumeRocket` as main `Context`, and so we'd have to touch every API if we split either `DbConn` or `Searcher` out of `PlumeRocket` ## Solution Attempts and their Problems + +in the past couple of weeks, we've made the following attepts to at least partially dissolve `PlumeRocket` + +- [plume-model: refactor Searcher to have its own DbPool](https://git.joinplu.me/Plume/Plume/pulls/809) +- [WIP: Experiment: extract Searcher into an Actor](https://git.joinplu.me/Plume/Plume/pulls/807) +- [extract DbConn from PlumeRocket](https://git.joinplu.me/Plume/Plume/pulls/805) + +As soon as we attempted to delete out one of the members from `PlumeRocket`, compiles would fail all over the place, meaning we'd have to touch almost every single function's *signature* that uses `PlumeRocket`. +This then means we'd have to touch every single function that in turn use those functions! +That is a lot of broken code, before we've even started refactoring. + +## Strategy + +Despite ambitions to use an [Actor System (Riker)](https://riker.rs/), it is not magnitude of the ambitions, but the size of the steps we've taken. +So, given past failures we devise a strategy: