chore: use has document api from collab
This commit is contained in:
parent
dca438b794
commit
0b5ad2162b
|
|
@ -2092,7 +2092,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "collab"
|
name = "collab"
|
||||||
version = "0.2.0"
|
version = "0.2.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=4025b4f7d013dc0aec137152c7cbf7741e21c0ae#4025b4f7d013dc0aec137152c7cbf7741e21c0ae"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=79d74003db11ca431f170de9226eab4b891e7c0f#79d74003db11ca431f170de9226eab4b891e7c0f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"arc-swap",
|
"arc-swap",
|
||||||
|
|
@ -2117,7 +2117,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-database"
|
name = "collab-database"
|
||||||
version = "0.2.0"
|
version = "0.2.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=4025b4f7d013dc0aec137152c7cbf7741e21c0ae#4025b4f7d013dc0aec137152c7cbf7741e21c0ae"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=79d74003db11ca431f170de9226eab4b891e7c0f#79d74003db11ca431f170de9226eab4b891e7c0f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
|
|
@ -2148,7 +2148,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-document"
|
name = "collab-document"
|
||||||
version = "0.2.0"
|
version = "0.2.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=4025b4f7d013dc0aec137152c7cbf7741e21c0ae#4025b4f7d013dc0aec137152c7cbf7741e21c0ae"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=79d74003db11ca431f170de9226eab4b891e7c0f#79d74003db11ca431f170de9226eab4b891e7c0f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"arc-swap",
|
"arc-swap",
|
||||||
|
|
@ -2168,7 +2168,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-entity"
|
name = "collab-entity"
|
||||||
version = "0.2.0"
|
version = "0.2.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=4025b4f7d013dc0aec137152c7cbf7741e21c0ae#4025b4f7d013dc0aec137152c7cbf7741e21c0ae"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=79d74003db11ca431f170de9226eab4b891e7c0f#79d74003db11ca431f170de9226eab4b891e7c0f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"bytes",
|
"bytes",
|
||||||
|
|
@ -2187,7 +2187,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-folder"
|
name = "collab-folder"
|
||||||
version = "0.2.0"
|
version = "0.2.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=4025b4f7d013dc0aec137152c7cbf7741e21c0ae#4025b4f7d013dc0aec137152c7cbf7741e21c0ae"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=79d74003db11ca431f170de9226eab4b891e7c0f#79d74003db11ca431f170de9226eab4b891e7c0f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"arc-swap",
|
"arc-swap",
|
||||||
|
|
@ -2272,7 +2272,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-user"
|
name = "collab-user"
|
||||||
version = "0.2.0"
|
version = "0.2.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=4025b4f7d013dc0aec137152c7cbf7741e21c0ae#4025b4f7d013dc0aec137152c7cbf7741e21c0ae"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=79d74003db11ca431f170de9226eab4b891e7c0f#79d74003db11ca431f170de9226eab4b891e7c0f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"collab",
|
"collab",
|
||||||
|
|
|
||||||
12
Cargo.toml
12
Cargo.toml
|
|
@ -288,12 +288,12 @@ debug = true
|
||||||
[patch.crates-io]
|
[patch.crates-io]
|
||||||
# It's diffcult to resovle different version with the same crate used in AppFlowy Frontend and the Client-API crate.
|
# It's diffcult to resovle different version with the same crate used in AppFlowy Frontend and the Client-API crate.
|
||||||
# So using patch to workaround this issue.
|
# So using patch to workaround this issue.
|
||||||
collab = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "4025b4f7d013dc0aec137152c7cbf7741e21c0ae" }
|
collab = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "79d74003db11ca431f170de9226eab4b891e7c0f" }
|
||||||
collab-entity = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "4025b4f7d013dc0aec137152c7cbf7741e21c0ae" }
|
collab-entity = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "79d74003db11ca431f170de9226eab4b891e7c0f" }
|
||||||
collab-folder = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "4025b4f7d013dc0aec137152c7cbf7741e21c0ae" }
|
collab-folder = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "79d74003db11ca431f170de9226eab4b891e7c0f" }
|
||||||
collab-document = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "4025b4f7d013dc0aec137152c7cbf7741e21c0ae" }
|
collab-document = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "79d74003db11ca431f170de9226eab4b891e7c0f" }
|
||||||
collab-user = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "4025b4f7d013dc0aec137152c7cbf7741e21c0ae" }
|
collab-user = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "79d74003db11ca431f170de9226eab4b891e7c0f" }
|
||||||
collab-database = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "4025b4f7d013dc0aec137152c7cbf7741e21c0ae" }
|
collab-database = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "79d74003db11ca431f170de9226eab4b891e7c0f" }
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
history = []
|
history = []
|
||||||
|
|
|
||||||
|
|
@ -754,44 +754,41 @@ impl PublishCollabDuplicator {
|
||||||
db_row_body
|
db_row_body
|
||||||
.get_data()
|
.get_data()
|
||||||
.insert(&mut txn, ROW_DATABASE_ID, new_db_id.clone());
|
.insert(&mut txn, ROW_DATABASE_ID, new_db_id.clone());
|
||||||
{
|
|
||||||
// handle document in database row
|
// handle document in database row
|
||||||
let pub_is_doc_empty_key =
|
match db_row_body.has_document(&txn) {
|
||||||
meta_id_from_row_id(&pub_row_id.parse()?, RowMetaKey::IsDocumentEmpty);
|
Ok(has_doc) => {
|
||||||
let pub_is_doc_empty = db_row_body.get_meta().get(&txn, &pub_is_doc_empty_key);
|
if has_doc {
|
||||||
if let Some(Out::Any(Any::Bool(is_doc_empty))) = pub_is_doc_empty {
|
|
||||||
if !is_doc_empty {
|
|
||||||
let pub_row_doc_id =
|
let pub_row_doc_id =
|
||||||
meta_id_from_row_id(&pub_row_id.parse()?, RowMetaKey::DocumentId);
|
meta_id_from_row_id(&pub_row_id.parse()?, RowMetaKey::DocumentId);
|
||||||
let row_doc_doc_state = match published_db
|
match published_db
|
||||||
.database_row_document_collabs
|
.database_row_document_collabs
|
||||||
.get(&pub_row_doc_id)
|
.get(&pub_row_doc_id)
|
||||||
{
|
{
|
||||||
Some(doc_state) => doc_state,
|
Some(row_doc_doc_state) => {
|
||||||
None => {
|
let pub_doc_collab =
|
||||||
tracing::error!("no document found for row: {}", pub_row_doc_id);
|
collab_from_doc_state(row_doc_doc_state.to_vec(), &pub_row_doc_id)?;
|
||||||
continue;
|
let pub_doc = Document::open(pub_doc_collab)
|
||||||
|
.map_err(|e| AppError::Unhandled(e.to_string()))?;
|
||||||
|
let dup_row_doc_id =
|
||||||
|
meta_id_from_row_id(&dup_row_id.parse()?, RowMetaKey::DocumentId);
|
||||||
|
let mut new_doc_view = Box::pin(self.deep_copy_doc(
|
||||||
|
&pub_row_doc_id,
|
||||||
|
dup_row_doc_id.clone(),
|
||||||
|
pub_doc,
|
||||||
|
PublishViewMetaData::default(),
|
||||||
|
))
|
||||||
|
.await?;
|
||||||
|
new_doc_view.parent_view_id.clone_from(&dup_row_doc_id); // orphan folder view
|
||||||
|
self
|
||||||
|
.views_to_add
|
||||||
|
.insert(dup_row_doc_id.clone(), new_doc_view);
|
||||||
},
|
},
|
||||||
|
None => tracing::error!("no document found for row: {}", pub_row_doc_id),
|
||||||
};
|
};
|
||||||
let pub_doc_collab =
|
|
||||||
collab_from_doc_state(row_doc_doc_state.to_vec(), &pub_row_doc_id)?;
|
|
||||||
let pub_doc =
|
|
||||||
Document::open(pub_doc_collab).map_err(|e| AppError::Unhandled(e.to_string()))?;
|
|
||||||
let dup_row_doc_id =
|
|
||||||
meta_id_from_row_id(&dup_row_id.parse()?, RowMetaKey::DocumentId);
|
|
||||||
let mut new_doc_view = Box::pin(self.deep_copy_doc(
|
|
||||||
&pub_row_doc_id,
|
|
||||||
dup_row_doc_id.clone(),
|
|
||||||
pub_doc,
|
|
||||||
PublishViewMetaData::default(),
|
|
||||||
))
|
|
||||||
.await?;
|
|
||||||
new_doc_view.parent_view_id.clone_from(&dup_row_doc_id); // orphan folder view
|
|
||||||
self
|
|
||||||
.views_to_add
|
|
||||||
.insert(dup_row_doc_id.clone(), new_doc_view);
|
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
Err(err) => tracing::error!("failed to check if row has document: {}", err),
|
||||||
}
|
}
|
||||||
|
|
||||||
db_row_body
|
db_row_body
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue