indexdb_es/view_repository.rs
1use std::marker::PhantomData;
2
3// use async_trait::async_trait;
4// use cqrs_es::persist::{PersistenceError, ViewContext, ViewRepository};
5// use cqrs_es::{Aggregate, View};
6
7// use crate::error::IndexDBAggregateError;
8
9// /// A postgres backed query repository for use in backing a `GenericQuery`.
10pub struct IndexDBViewRepository<V, A> {
11 insert_sql: String,
12 update_sql: String,
13 select_sql: String,
14 // pool: Pool<IndexDB>,
15 _phantom: PhantomData<(V, A)>,
16}
17
18// impl<V, A> IndexDBViewRepository<V, A>
19// where
20// V: View<A>,
21// A: Aggregate,
22// {
23// /// Creates a new `IndexDBViewRepository` that will store serialized views in a IndexDB table named
24// /// identically to the `view_name` value provided. This table should be created by the user
25// /// before using this query repository (see `/db/init.sql` sql initialization file).
26// ///
27// /// ```
28// /// # use cqrs_es::doc::MyAggregate;
29// /// # use cqrs_es::persist::doc::MyView;
30// /// use sqlx::{Pool, IndexDB};
31// /// use postgres_es::IndexDBViewRepository;
32// ///
33// /// fn configure_view_repo(pool: Pool<IndexDB>) -> IndexDBViewRepository<MyView,MyAggregate> {
34// /// IndexDBViewRepository::new("my_view_table", pool)
35// /// }
36// /// ```
37// pub fn new(view_name: &str) -> Self {
38// todo!()
39// }
40// }
41
42// #[async_trait]
43// impl<V, A> ViewRepository<V, A> for IndexDBViewRepository<V, A>
44// where
45// V: View<A>,
46// A: Aggregate,
47// {
48// async fn load(&self, view_id: &str) -> Result<Option<V>, PersistenceError> {
49// todo!()
50// }
51
52// async fn load_with_context(
53// &self,
54// view_id: &str,
55// ) -> Result<Option<(V, ViewContext)>, PersistenceError> {
56// todo!()
57// }
58
59// async fn update_view(&self, view: V, context: ViewContext) -> Result<(), PersistenceError> {
60// todo!()
61// }
62// }