chore: Bump collab (#5136)

* chore: bump collab

* chore: bump collab

* chore: bump collab

* chore: fix test

* chore: disable supabse test
This commit is contained in:
Nathan.fooo
2024-04-15 14:50:28 +08:00
committed by GitHub
parent e9e483291e
commit d758e62c1a
41 changed files with 633 additions and 232 deletions

View File

@ -2,7 +2,7 @@ use anyhow::Error;
use client_api::entity::QueryCollabResult::{Failed, Success};
use client_api::entity::{QueryCollab, QueryCollabParams};
use client_api::error::ErrorCode::RecordNotFound;
use collab::core::collab::DocStateSource;
use collab::core::collab::DataSource;
use collab::core::collab_plugin::EncodedCollab;
use collab_entity::CollabType;
use tracing::error;
@ -73,10 +73,7 @@ where
.flat_map(|(object_id, result)| match result {
Success { encode_collab_v1 } => {
match EncodedCollab::decode_from_bytes(&encode_collab_v1) {
Ok(encode) => Some((
object_id,
DocStateSource::FromDocState(encode.doc_state.to_vec()),
)),
Ok(encode) => Some((object_id, DataSource::DocStateV1(encode.doc_state.to_vec()))),
Err(err) => {
error!("Failed to decode collab: {}", err);
None

View File

@ -1,6 +1,6 @@
use anyhow::Error;
use client_api::entity::{QueryCollab, QueryCollabParams};
use collab::core::collab::DocStateSource;
use collab::core::collab::DataSource;
use collab::core::origin::CollabOrigin;
use collab_document::document::Document;
use collab_entity::CollabType;
@ -76,7 +76,7 @@ where
.to_vec();
let document = Document::from_doc_state(
CollabOrigin::Empty,
DocStateSource::FromDocState(doc_state),
DataSource::DocStateV1(doc_state),
&document_id,
vec![],
)?;

View File

@ -2,7 +2,7 @@ use anyhow::Error;
use client_api::entity::{
workspace_dto::CreateWorkspaceParam, CollabParams, QueryCollab, QueryCollabParams,
};
use collab::core::collab::DocStateSource;
use collab::core::collab::DataSource;
use collab::core::origin::CollabOrigin;
use collab_entity::CollabType;
use collab_folder::RepeatedViewIdentifier;
@ -99,7 +99,7 @@ where
let folder = Folder::from_collab_doc_state(
uid,
CollabOrigin::Empty,
DocStateSource::FromDocState(doc_state),
DataSource::DocStateV1(doc_state),
&workspace_id,
vec![],
)?;

View File

@ -4,7 +4,7 @@ use std::sync::{Arc, Weak};
use anyhow::Error;
use chrono::{DateTime, Utc};
use client_api::collab_sync::MsgId;
use collab::core::collab::DocStateSource;
use collab::core::collab::DataSource;
use collab::preclude::merge_updates_v1;
use collab_entity::CollabObject;
use collab_plugins::cloud_storage::{
@ -62,7 +62,7 @@ where
true
}
async fn get_doc_state(&self, object: &CollabObject) -> Result<DocStateSource, Error> {
async fn get_doc_state(&self, object: &CollabObject) -> Result<DataSource, Error> {
let postgrest = self.server.try_get_weak_postgrest()?;
let action = FetchObjectUpdateAction::new(
object.object_id.clone(),
@ -70,7 +70,7 @@ where
postgrest,
);
let doc_state = action.run().await?;
Ok(DocStateSource::FromDocState(doc_state))
Ok(DataSource::DocStateV1(doc_state))
}
async fn get_snapshots(&self, object_id: &str, limit: usize) -> Vec<RemoteCollabSnapshot> {

View File

@ -1,5 +1,5 @@
use anyhow::Error;
use collab::core::collab::DocStateSource;
use collab::core::collab::DataSource;
use collab::core::origin::CollabOrigin;
use collab_document::blocks::DocumentData;
use collab_document::document::Document;
@ -96,7 +96,7 @@ where
let doc_state = action.run_with_fix_interval(5, 10).await?;
let document = Document::from_doc_state(
CollabOrigin::Empty,
DocStateSource::FromDocState(doc_state),
DataSource::DocStateV1(doc_state),
&document_id,
vec![],
)?;

View File

@ -2,7 +2,7 @@ use std::str::FromStr;
use anyhow::{anyhow, Error};
use chrono::{DateTime, Utc};
use collab::core::collab::DocStateSource;
use collab::core::collab::DataSource;
use collab::core::origin::CollabOrigin;
use collab_entity::CollabType;
use serde_json::Value;
@ -105,7 +105,7 @@ where
let folder = Folder::from_collab_doc_state(
uid,
CollabOrigin::Empty,
DocStateSource::FromDocState(doc_state),
DataSource::DocStateV1(doc_state),
&workspace_id,
vec![],
)?;

View File

@ -7,7 +7,7 @@ use std::time::Duration;
use anyhow::Error;
use chrono::{DateTime, Utc};
use collab::core::collab::DocStateSource;
use collab::core::collab::DataSource;
use collab_entity::{CollabObject, CollabType};
use collab_plugins::cloud_storage::RemoteCollabSnapshot;
use serde_json::Value;
@ -284,7 +284,7 @@ pub async fn batch_get_updates_from_server(
match parser_updates_form_json(record.clone(), &postgrest.secret()) {
Ok(items) => {
if items.is_empty() {
updates_by_oid.insert(oid.to_string(), DocStateSource::FromDisk);
updates_by_oid.insert(oid.to_string(), DataSource::Disk);
} else {
let updates = items
.iter()
@ -293,7 +293,7 @@ pub async fn batch_get_updates_from_server(
let doc_state = merge_updates_v1(&updates)
.map_err(|err| anyhow::anyhow!("merge updates failed: {:?}", err))?;
updates_by_oid.insert(oid.to_string(), DocStateSource::FromDocState(doc_state));
updates_by_oid.insert(oid.to_string(), DataSource::DocStateV1(doc_state));
}
},
Err(e) => {

View File

@ -8,6 +8,7 @@ use std::time::Duration;
use anyhow::Error;
use collab::core::collab::MutexCollab;
use collab::core::origin::CollabOrigin;
use collab::preclude::Collab;
use collab_entity::{CollabObject, CollabType};
use parking_lot::RwLock;
use serde_json::Value;
@ -686,12 +687,12 @@ impl RealtimeEventHandler for RealtimeCollabUpdateHandler {
fn default_workspace_doc_state(collab_object: &CollabObject) -> Vec<u8> {
let workspace_id = collab_object.object_id.clone();
let collab = Arc::new(MutexCollab::new(
let collab = Arc::new(MutexCollab::new(Collab::new_with_origin(
CollabOrigin::Empty,
&collab_object.object_id,
vec![],
false,
));
)));
let workspace = Workspace::new(workspace_id, "My workspace".to_string(), collab_object.uid);
let folder = Folder::create(collab_object.uid, collab, None, FolderData::new(workspace));
folder.encode_collab_v1().unwrap().doc_state.to_vec()

View File

@ -28,7 +28,7 @@ pub(crate) const CREATED_AT: &str = "created_at";
pub fn table_name(ty: &CollabType) -> String {
match ty {
CollabType::DatabaseRow => format!("{}_database_row", AF_COLLAB_UPDATE_TABLE),
CollabType::Document | CollabType::Empty => format!("{}_document", AF_COLLAB_UPDATE_TABLE),
CollabType::Document | CollabType::Unknown => format!("{}_document", AF_COLLAB_UPDATE_TABLE),
CollabType::Database => format!("{}_database", AF_COLLAB_UPDATE_TABLE),
CollabType::WorkspaceDatabase => format!("{}_w_database", AF_COLLAB_UPDATE_TABLE),
CollabType::Folder => format!("{}_folder", AF_COLLAB_UPDATE_TABLE),
@ -44,6 +44,6 @@ pub fn partition_key(collab_type: &CollabType) -> i32 {
CollabType::Folder => 3,
CollabType::DatabaseRow => 4,
CollabType::UserAwareness => 5,
CollabType::Empty => 0,
CollabType::Unknown => 0,
}
}

View File

@ -1,4 +1,4 @@
use collab::core::collab::DocStateSource;
use collab::core::collab::DataSource;
use collab_entity::{CollabObject, CollabType};
use uuid::Uuid;
@ -53,10 +53,11 @@ async fn supabase_create_database_test() {
assert_eq!(updates_by_oid.len(), 3);
for (_, source) in updates_by_oid {
match source {
DocStateSource::FromDisk => panic!("should not be from disk"),
DocStateSource::FromDocState(doc_state) => {
DataSource::Disk => panic!("should not be from disk"),
DataSource::DocStateV1(doc_state) => {
assert_eq!(doc_state.len(), 2);
},
DataSource::DocStateV2(_) => {},
}
}
}

View File

@ -2,8 +2,9 @@ use flowy_storage::ObjectStorageService;
use std::collections::HashMap;
use std::sync::Arc;
use collab::core::collab::{DocStateSource, MutexCollab};
use collab::core::collab::{DataSource, MutexCollab};
use collab::core::origin::CollabOrigin;
use collab::preclude::Collab;
use collab_plugins::cloud_storage::RemoteCollabStorage;
use uuid::Uuid;
@ -121,16 +122,16 @@ pub async fn print_encryption_folder_snapshot(
.await
.pop()
.unwrap();
let collab = Arc::new(
MutexCollab::new_with_doc_state(
let collab = Arc::new(MutexCollab::new(
Collab::new_with_source(
CollabOrigin::Empty,
folder_id,
DocStateSource::FromDocState(snapshot.blob),
DataSource::DocStateV1(snapshot.blob),
vec![],
false,
)
.unwrap(),
);
));
let folder_data = Folder::open(uid, collab, None)
.unwrap()
.get_folder_data()