@@ -7,7 +7,7 @@ use crate::services::database_view::{
77 make_database_view_rev_manager, make_database_view_revision_pad, DatabaseViewEditor ,
88} ;
99use crate :: services:: persistence:: block_index:: BlockRowIndexer ;
10- use crate :: services:: persistence:: database_ref:: { DatabaseInfo , DatabaseRef , DatabaseRefIndexer } ;
10+ use crate :: services:: persistence:: database_ref:: { DatabaseInfo , DatabaseRefs , DatabaseViewRef } ;
1111use crate :: services:: persistence:: kv:: DatabaseKVPersistence ;
1212use crate :: services:: persistence:: migration:: DatabaseMigration ;
1313use crate :: services:: persistence:: rev_sqlite:: {
@@ -29,6 +29,7 @@ use flowy_revision::{
2929use flowy_sqlite:: ConnectionPool ;
3030use flowy_task:: TaskDispatcher ;
3131
32+ use lib_infra:: future:: Fut ;
3233use revision_model:: Revision ;
3334use std:: sync:: Arc ;
3435use tokio:: sync:: RwLock ;
@@ -43,7 +44,7 @@ pub struct DatabaseManager {
4344 editors_by_database_id : RwLock < HashMap < String , Arc < DatabaseEditor > > > ,
4445 database_user : Arc < dyn DatabaseUser > ,
4546 block_indexer : Arc < BlockRowIndexer > ,
46- database_ref_indexer : Arc < DatabaseRefIndexer > ,
47+ database_refs : Arc < DatabaseRefs > ,
4748 #[ allow( dead_code) ]
4849 kv_persistence : Arc < DatabaseKVPersistence > ,
4950 task_scheduler : Arc < RwLock < TaskDispatcher > > ,
@@ -61,30 +62,30 @@ impl DatabaseManager {
6162 let editors_by_database_id = RwLock :: new ( HashMap :: new ( ) ) ;
6263 let kv_persistence = Arc :: new ( DatabaseKVPersistence :: new ( database_db. clone ( ) ) ) ;
6364 let block_indexer = Arc :: new ( BlockRowIndexer :: new ( database_db. clone ( ) ) ) ;
64- let database_ref_indexer = Arc :: new ( DatabaseRefIndexer :: new ( database_db. clone ( ) ) ) ;
65- let migration = DatabaseMigration :: new (
66- database_user. clone ( ) ,
67- database_db,
68- database_ref_indexer. clone ( ) ,
69- ) ;
65+ let database_refs = Arc :: new ( DatabaseRefs :: new ( database_db) ) ;
66+ let migration = DatabaseMigration :: new ( database_user. clone ( ) , database_refs. clone ( ) ) ;
7067 Self {
7168 editors_by_database_id,
7269 database_user,
7370 kv_persistence,
7471 block_indexer,
75- database_ref_indexer ,
72+ database_refs ,
7673 task_scheduler,
7774 migration,
7875 }
7976 }
8077
81- pub async fn initialize_with_new_user ( & self , user_id : & str , _token : & str ) -> FlowyResult < ( ) > {
82- self . migration . run ( user_id) . await ?;
78+ pub async fn initialize_with_new_user ( & self , _user_id : & str , _token : & str ) -> FlowyResult < ( ) > {
8379 Ok ( ( ) )
8480 }
8581
86- pub async fn initialize ( & self , user_id : & str , _token : & str ) -> FlowyResult < ( ) > {
87- self . migration . run ( user_id) . await ?;
82+ pub async fn initialize (
83+ & self ,
84+ user_id : & str ,
85+ _token : & str ,
86+ get_views_fn : Fut < Vec < ( String , String , LayoutTypePB ) > > ,
87+ ) -> FlowyResult < ( ) > {
88+ self . migration . run ( user_id, get_views_fn) . await ?;
8889 Ok ( ( ) )
8990 }
9091
@@ -98,7 +99,7 @@ impl DatabaseManager {
9899 ) -> FlowyResult < ( ) > {
99100 let db_pool = self . database_user . db_pool ( ) ?;
100101 let _ = self
101- . database_ref_indexer
102+ . database_refs
102103 . bind ( database_id, view_id. as_ref ( ) , true , name) ;
103104 let rev_manager = self . make_database_rev_manager ( database_id, db_pool) ?;
104105 rev_manager. reset_object ( revisions) . await ?;
@@ -113,7 +114,9 @@ impl DatabaseManager {
113114 revisions : Vec < Revision > ,
114115 ) -> FlowyResult < ( ) > {
115116 let view_id = view_id. as_ref ( ) ;
116- let rev_manager = make_database_view_rev_manager ( & self . database_user , view_id) . await ?;
117+ let user_id = self . database_user . user_id ( ) ?;
118+ let pool = self . database_user . db_pool ( ) ?;
119+ let rev_manager = make_database_view_rev_manager ( & user_id, pool, view_id) . await ?;
117120 rev_manager. reset_object ( revisions) . await ?;
118121 Ok ( ( ) )
119122 }
@@ -129,12 +132,13 @@ impl DatabaseManager {
129132 Ok ( ( ) )
130133 }
131134
135+ #[ tracing:: instrument( level = "trace" , skip_all, err) ]
132136 pub async fn open_database_view < T : AsRef < str > > (
133137 & self ,
134138 view_id : T ,
135139 ) -> FlowyResult < Arc < DatabaseEditor > > {
136140 let view_id = view_id. as_ref ( ) ;
137- let database_info = self . database_ref_indexer . get_database_with_view ( view_id) ?;
141+ let database_info = self . database_refs . get_database_with_view ( view_id) ?;
138142 self
139143 . get_or_create_database_editor ( & database_info. database_id , view_id)
140144 . await
@@ -143,7 +147,7 @@ impl DatabaseManager {
143147 #[ tracing:: instrument( level = "debug" , skip_all) ]
144148 pub async fn close_database_view < T : AsRef < str > > ( & self , view_id : T ) -> FlowyResult < ( ) > {
145149 let view_id = view_id. as_ref ( ) ;
146- let database_info = self . database_ref_indexer . get_database_with_view ( view_id) ?;
150+ let database_info = self . database_refs . get_database_with_view ( view_id) ?;
147151 tracing:: Span :: current ( ) . record ( "database_id" , & database_info. database_id ) ;
148152
149153 // Create a temporary reference database_editor in case of holding the write lock
@@ -172,7 +176,7 @@ impl DatabaseManager {
172176
173177 // #[tracing::instrument(level = "debug", skip(self), err)]
174178 pub async fn get_database_editor ( & self , view_id : & str ) -> FlowyResult < Arc < DatabaseEditor > > {
175- let database_info = self . database_ref_indexer . get_database_with_view ( view_id) ?;
179+ let database_info = self . database_refs . get_database_with_view ( view_id) ?;
176180 let database_editor = self
177181 . editors_by_database_id
178182 . read ( )
@@ -189,13 +193,14 @@ impl DatabaseManager {
189193 }
190194
191195 pub async fn get_databases ( & self ) -> FlowyResult < Vec < DatabaseInfo > > {
192- self . database_ref_indexer . get_all_databases ( )
196+ self . database_refs . get_all_databases ( )
193197 }
194198
195- pub async fn get_database_ref_views ( & self , database_id : & str ) -> FlowyResult < Vec < DatabaseRef > > {
196- self
197- . database_ref_indexer
198- . get_ref_views_with_database ( database_id)
199+ pub async fn get_database_ref_views (
200+ & self ,
201+ database_id : & str ,
202+ ) -> FlowyResult < Vec < DatabaseViewRef > > {
203+ self . database_refs . get_ref_views_with_database ( database_id)
199204 }
200205
201206 async fn get_or_create_database_editor (
@@ -277,7 +282,7 @@ impl DatabaseManager {
277282 database_pad,
278283 rev_manager,
279284 self . block_indexer . clone ( ) ,
280- self . database_ref_indexer . clone ( ) ,
285+ self . database_refs . clone ( ) ,
281286 self . task_scheduler . clone ( ) ,
282287 )
283288 . await ?;
@@ -354,7 +359,7 @@ pub async fn link_existing_database(
354359 . await ?;
355360
356361 let _ = database_manager
357- . database_ref_indexer
362+ . database_refs
358363 . bind ( database_id, view_id, false , & name) ;
359364 Ok ( ( ) )
360365}
@@ -424,14 +429,14 @@ pub async fn create_new_database(
424429 Ok ( ( ) )
425430}
426431
427- impl DatabaseRefIndexerQuery for DatabaseRefIndexer {
428- fn get_ref_views ( & self , database_id : & str ) -> FlowyResult < Vec < DatabaseRef > > {
432+ impl DatabaseRefIndexerQuery for DatabaseRefs {
433+ fn get_ref_views ( & self , database_id : & str ) -> FlowyResult < Vec < DatabaseViewRef > > {
429434 self . get_ref_views_with_database ( database_id)
430435 }
431436}
432437
433- impl DatabaseRefIndexerQuery for Arc < DatabaseRefIndexer > {
434- fn get_ref_views ( & self , database_id : & str ) -> FlowyResult < Vec < DatabaseRef > > {
438+ impl DatabaseRefIndexerQuery for Arc < DatabaseRefs > {
439+ fn get_ref_views ( & self , database_id : & str ) -> FlowyResult < Vec < DatabaseViewRef > > {
435440 ( * * self ) . get_ref_views ( database_id)
436441 }
437442}
0 commit comments