|
@@ -1,4 +1,4 @@
|
|
|
-use std::sync::Arc;
|
|
|
+use std::sync::{Arc, Weak};
|
|
|
|
|
|
use collab_database::database::gen_row_id;
|
|
|
use collab_database::rows::RowId;
|
|
@@ -8,7 +8,7 @@ use lib_dispatch::prelude::{data_result_ok, AFPluginData, AFPluginState, DataRes
|
|
|
use lib_infra::util::timestamp;
|
|
|
|
|
|
use crate::entities::*;
|
|
|
-use crate::manager::DatabaseManager2;
|
|
|
+use crate::manager::DatabaseManager;
|
|
|
use crate::services::cell::CellBuilder;
|
|
|
use crate::services::field::checklist_type_option::ChecklistCellChangeset;
|
|
|
use crate::services::field::{
|
|
@@ -17,11 +17,21 @@ use crate::services::field::{
|
|
|
use crate::services::group::{GroupChangeset, GroupSettingChangeset};
|
|
|
use crate::services::share::csv::CSVFormat;
|
|
|
|
|
|
+fn upgrade_manager(
|
|
|
+ database_manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
+) -> FlowyResult<Arc<DatabaseManager>> {
|
|
|
+ let manager = database_manager
|
|
|
+ .upgrade()
|
|
|
+ .ok_or(FlowyError::internal().context("The database manager is already dropped"))?;
|
|
|
+ Ok(manager)
|
|
|
+}
|
|
|
+
|
|
|
#[tracing::instrument(level = "trace", skip_all, err)]
|
|
|
pub(crate) async fn get_database_data_handler(
|
|
|
data: AFPluginData<DatabaseViewIdPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> DataResult<DatabasePB, FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let view_id: DatabaseViewIdPB = data.into_inner();
|
|
|
let database_editor = manager.get_database_with_view_id(view_id.as_ref()).await?;
|
|
|
let data = database_editor.get_database_data(view_id.as_ref()).await?;
|
|
@@ -31,8 +41,9 @@ pub(crate) async fn get_database_data_handler(
|
|
|
#[tracing::instrument(level = "trace", skip_all, err)]
|
|
|
pub(crate) async fn open_database_handler(
|
|
|
data: AFPluginData<DatabaseViewIdPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> Result<(), FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let view_id: DatabaseViewIdPB = data.into_inner();
|
|
|
let database_id = manager
|
|
|
.get_database_id_with_view_id(view_id.as_ref())
|
|
@@ -44,8 +55,9 @@ pub(crate) async fn open_database_handler(
|
|
|
#[tracing::instrument(level = "trace", skip_all, err)]
|
|
|
pub(crate) async fn get_database_id_handler(
|
|
|
data: AFPluginData<DatabaseViewIdPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> DataResult<DatabaseIdPB, FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let view_id: DatabaseViewIdPB = data.into_inner();
|
|
|
let database_id = manager
|
|
|
.get_database_id_with_view_id(view_id.as_ref())
|
|
@@ -56,8 +68,9 @@ pub(crate) async fn get_database_id_handler(
|
|
|
#[tracing::instrument(level = "trace", skip(data, manager), err)]
|
|
|
pub(crate) async fn get_database_setting_handler(
|
|
|
data: AFPluginData<DatabaseViewIdPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> DataResult<DatabaseViewSettingPB, FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let view_id: DatabaseViewIdPB = data.into_inner();
|
|
|
let database_editor = manager.get_database_with_view_id(view_id.as_ref()).await?;
|
|
|
let data = database_editor
|
|
@@ -69,8 +82,9 @@ pub(crate) async fn get_database_setting_handler(
|
|
|
#[tracing::instrument(level = "trace", skip(data, manager), err)]
|
|
|
pub(crate) async fn update_database_setting_handler(
|
|
|
data: AFPluginData<DatabaseSettingChangesetPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> Result<(), FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: DatabaseSettingChangesetParams = data.into_inner().try_into()?;
|
|
|
let editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
|
|
|
|
@@ -100,8 +114,9 @@ pub(crate) async fn update_database_setting_handler(
|
|
|
#[tracing::instrument(level = "trace", skip(data, manager), err)]
|
|
|
pub(crate) async fn get_all_filters_handler(
|
|
|
data: AFPluginData<DatabaseViewIdPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> DataResult<RepeatedFilterPB, FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let view_id: DatabaseViewIdPB = data.into_inner();
|
|
|
let database_editor = manager.get_database_with_view_id(view_id.as_ref()).await?;
|
|
|
let filters = database_editor.get_all_filters(view_id.as_ref()).await;
|
|
@@ -111,8 +126,9 @@ pub(crate) async fn get_all_filters_handler(
|
|
|
#[tracing::instrument(level = "trace", skip(data, manager), err)]
|
|
|
pub(crate) async fn get_all_sorts_handler(
|
|
|
data: AFPluginData<DatabaseViewIdPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> DataResult<RepeatedSortPB, FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let view_id: DatabaseViewIdPB = data.into_inner();
|
|
|
let database_editor = manager.get_database_with_view_id(view_id.as_ref()).await?;
|
|
|
let sorts = database_editor.get_all_sorts(view_id.as_ref()).await;
|
|
@@ -122,8 +138,9 @@ pub(crate) async fn get_all_sorts_handler(
|
|
|
#[tracing::instrument(level = "trace", skip(data, manager), err)]
|
|
|
pub(crate) async fn delete_all_sorts_handler(
|
|
|
data: AFPluginData<DatabaseViewIdPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> Result<(), FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let view_id: DatabaseViewIdPB = data.into_inner();
|
|
|
let database_editor = manager.get_database_with_view_id(view_id.as_ref()).await?;
|
|
|
database_editor.delete_all_sorts(view_id.as_ref()).await;
|
|
@@ -133,8 +150,9 @@ pub(crate) async fn delete_all_sorts_handler(
|
|
|
#[tracing::instrument(level = "trace", skip(data, manager), err)]
|
|
|
pub(crate) async fn get_fields_handler(
|
|
|
data: AFPluginData<GetFieldPayloadPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> DataResult<RepeatedFieldPB, FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: GetFieldParams = data.into_inner().try_into()?;
|
|
|
let database_editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
|
|
let fields = database_editor
|
|
@@ -149,8 +167,9 @@ pub(crate) async fn get_fields_handler(
|
|
|
#[tracing::instrument(level = "trace", skip(data, manager), err)]
|
|
|
pub(crate) async fn get_primary_field_handler(
|
|
|
data: AFPluginData<DatabaseViewIdPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> DataResult<FieldPB, FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let view_id = data.into_inner().value;
|
|
|
let database_editor = manager.get_database_with_view_id(&view_id).await?;
|
|
|
let mut fields = database_editor
|
|
@@ -177,8 +196,9 @@ pub(crate) async fn get_primary_field_handler(
|
|
|
#[tracing::instrument(level = "trace", skip(data, manager), err)]
|
|
|
pub(crate) async fn update_field_handler(
|
|
|
data: AFPluginData<FieldChangesetPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> Result<(), FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: FieldChangesetParams = data.into_inner().try_into()?;
|
|
|
let database_editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
|
|
database_editor.update_field(params).await?;
|
|
@@ -188,8 +208,9 @@ pub(crate) async fn update_field_handler(
|
|
|
#[tracing::instrument(level = "trace", skip(data, manager), err)]
|
|
|
pub(crate) async fn update_field_type_option_handler(
|
|
|
data: AFPluginData<TypeOptionChangesetPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> Result<(), FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: TypeOptionChangesetParams = data.into_inner().try_into()?;
|
|
|
let database_editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
|
|
if let Some(old_field) = database_editor.get_field(¶ms.field_id) {
|
|
@@ -211,8 +232,9 @@ pub(crate) async fn update_field_type_option_handler(
|
|
|
#[tracing::instrument(level = "trace", skip(data, manager), err)]
|
|
|
pub(crate) async fn delete_field_handler(
|
|
|
data: AFPluginData<DeleteFieldPayloadPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> Result<(), FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: FieldIdParams = data.into_inner().try_into()?;
|
|
|
let database_editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
|
|
database_editor.delete_field(¶ms.field_id).await?;
|
|
@@ -222,8 +244,9 @@ pub(crate) async fn delete_field_handler(
|
|
|
#[tracing::instrument(level = "debug", skip(data, manager), err)]
|
|
|
pub(crate) async fn switch_to_field_handler(
|
|
|
data: AFPluginData<UpdateFieldTypePayloadPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> Result<(), FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: EditFieldParams = data.into_inner().try_into()?;
|
|
|
let database_editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
|
|
let old_field = database_editor.get_field(¶ms.field_id);
|
|
@@ -257,8 +280,9 @@ pub(crate) async fn switch_to_field_handler(
|
|
|
#[tracing::instrument(level = "trace", skip(data, manager), err)]
|
|
|
pub(crate) async fn duplicate_field_handler(
|
|
|
data: AFPluginData<DuplicateFieldPayloadPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> Result<(), FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: FieldIdParams = data.into_inner().try_into()?;
|
|
|
let database_editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
|
|
database_editor
|
|
@@ -271,8 +295,9 @@ pub(crate) async fn duplicate_field_handler(
|
|
|
#[tracing::instrument(level = "trace", skip(data, manager), err)]
|
|
|
pub(crate) async fn get_field_type_option_data_handler(
|
|
|
data: AFPluginData<TypeOptionPathPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> DataResult<TypeOptionPB, FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: TypeOptionPathParams = data.into_inner().try_into()?;
|
|
|
let database_editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
|
|
if let Some((field, data)) = database_editor
|
|
@@ -294,8 +319,9 @@ pub(crate) async fn get_field_type_option_data_handler(
|
|
|
#[tracing::instrument(level = "trace", skip(data, manager), err)]
|
|
|
pub(crate) async fn create_field_type_option_data_handler(
|
|
|
data: AFPluginData<CreateFieldPayloadPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> DataResult<TypeOptionPB, FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: CreateFieldParams = data.into_inner().try_into()?;
|
|
|
let database_editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
|
|
let (field, data) = database_editor
|
|
@@ -313,8 +339,9 @@ pub(crate) async fn create_field_type_option_data_handler(
|
|
|
#[tracing::instrument(level = "trace", skip(data, manager), err)]
|
|
|
pub(crate) async fn move_field_handler(
|
|
|
data: AFPluginData<MoveFieldPayloadPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> Result<(), FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: MoveFieldParams = data.into_inner().try_into()?;
|
|
|
let database_editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
|
|
database_editor
|
|
@@ -331,8 +358,9 @@ pub(crate) async fn move_field_handler(
|
|
|
// #[tracing::instrument(level = "debug", skip(data, manager), err)]
|
|
|
pub(crate) async fn get_row_handler(
|
|
|
data: AFPluginData<RowIdPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> DataResult<OptionalRowPB, FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: RowIdParams = data.into_inner().try_into()?;
|
|
|
let database_editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
|
|
let row = database_editor
|
|
@@ -343,8 +371,9 @@ pub(crate) async fn get_row_handler(
|
|
|
|
|
|
pub(crate) async fn get_row_meta_handler(
|
|
|
data: AFPluginData<RowIdPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> DataResult<RowMetaPB, FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: RowIdParams = data.into_inner().try_into()?;
|
|
|
let database_editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
|
|
match database_editor.get_row_meta(¶ms.view_id, ¶ms.row_id) {
|
|
@@ -355,8 +384,9 @@ pub(crate) async fn get_row_meta_handler(
|
|
|
|
|
|
pub(crate) async fn update_row_meta_handler(
|
|
|
data: AFPluginData<UpdateRowMetaChangesetPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> FlowyResult<()> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: UpdateRowMetaParams = data.into_inner().try_into()?;
|
|
|
let database_editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
|
|
let row_id = RowId::from(params.id.clone());
|
|
@@ -367,8 +397,9 @@ pub(crate) async fn update_row_meta_handler(
|
|
|
#[tracing::instrument(level = "debug", skip(data, manager), err)]
|
|
|
pub(crate) async fn delete_row_handler(
|
|
|
data: AFPluginData<RowIdPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> Result<(), FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: RowIdParams = data.into_inner().try_into()?;
|
|
|
let database_editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
|
|
database_editor.delete_row(¶ms.row_id).await;
|
|
@@ -378,8 +409,9 @@ pub(crate) async fn delete_row_handler(
|
|
|
#[tracing::instrument(level = "debug", skip(data, manager), err)]
|
|
|
pub(crate) async fn duplicate_row_handler(
|
|
|
data: AFPluginData<RowIdPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> Result<(), FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: RowIdParams = data.into_inner().try_into()?;
|
|
|
let database_editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
|
|
database_editor
|
|
@@ -391,8 +423,9 @@ pub(crate) async fn duplicate_row_handler(
|
|
|
#[tracing::instrument(level = "debug", skip(data, manager), err)]
|
|
|
pub(crate) async fn move_row_handler(
|
|
|
data: AFPluginData<MoveRowPayloadPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> Result<(), FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: MoveRowParams = data.into_inner().try_into()?;
|
|
|
let database_editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
|
|
database_editor
|
|
@@ -404,8 +437,9 @@ pub(crate) async fn move_row_handler(
|
|
|
#[tracing::instrument(level = "debug", skip(data, manager), err)]
|
|
|
pub(crate) async fn create_row_handler(
|
|
|
data: AFPluginData<CreateRowPayloadPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> DataResult<RowMetaPB, FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: CreateRowParams = data.into_inner().try_into()?;
|
|
|
let database_editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
|
|
let fields = database_editor.get_fields(¶ms.view_id, None);
|
|
@@ -433,8 +467,9 @@ pub(crate) async fn create_row_handler(
|
|
|
// #[tracing::instrument(level = "trace", skip_all, err)]
|
|
|
pub(crate) async fn get_cell_handler(
|
|
|
data: AFPluginData<CellIdPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> DataResult<CellPB, FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: CellIdParams = data.into_inner().try_into()?;
|
|
|
let database_editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
|
|
let cell = database_editor
|
|
@@ -447,8 +482,9 @@ pub(crate) async fn get_cell_handler(
|
|
|
#[tracing::instrument(level = "debug", skip_all, err)]
|
|
|
pub(crate) async fn update_cell_handler(
|
|
|
data: AFPluginData<CellChangesetPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> Result<(), FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: CellChangesetPB = data.into_inner();
|
|
|
let database_editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
|
|
database_editor
|
|
@@ -465,8 +501,9 @@ pub(crate) async fn update_cell_handler(
|
|
|
#[tracing::instrument(level = "trace", skip_all, err)]
|
|
|
pub(crate) async fn new_select_option_handler(
|
|
|
data: AFPluginData<CreateSelectOptionPayloadPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> DataResult<SelectOptionPB, FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: CreateSelectOptionParams = data.into_inner().try_into()?;
|
|
|
let database_editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
|
|
let result = database_editor
|
|
@@ -483,8 +520,9 @@ pub(crate) async fn new_select_option_handler(
|
|
|
#[tracing::instrument(level = "trace", skip_all, err)]
|
|
|
pub(crate) async fn insert_or_update_select_option_handler(
|
|
|
data: AFPluginData<RepeatedSelectOptionPayload>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> Result<(), FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params = data.into_inner();
|
|
|
let database_editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
|
|
database_editor
|
|
@@ -501,8 +539,9 @@ pub(crate) async fn insert_or_update_select_option_handler(
|
|
|
#[tracing::instrument(level = "trace", skip_all, err)]
|
|
|
pub(crate) async fn delete_select_option_handler(
|
|
|
data: AFPluginData<RepeatedSelectOptionPayload>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> Result<(), FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params = data.into_inner();
|
|
|
let database_editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
|
|
database_editor
|
|
@@ -519,8 +558,9 @@ pub(crate) async fn delete_select_option_handler(
|
|
|
#[tracing::instrument(level = "trace", skip(data, manager), err)]
|
|
|
pub(crate) async fn get_select_option_handler(
|
|
|
data: AFPluginData<CellIdPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> DataResult<SelectOptionCellDataPB, FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: CellIdParams = data.into_inner().try_into()?;
|
|
|
let database_editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
|
|
let options = database_editor
|
|
@@ -532,8 +572,9 @@ pub(crate) async fn get_select_option_handler(
|
|
|
#[tracing::instrument(level = "trace", skip_all, err)]
|
|
|
pub(crate) async fn update_select_option_cell_handler(
|
|
|
data: AFPluginData<SelectOptionCellChangesetPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> Result<(), FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: SelectOptionCellChangesetParams = data.into_inner().try_into()?;
|
|
|
let database_editor = manager
|
|
|
.get_database_with_view_id(¶ms.cell_identifier.view_id)
|
|
@@ -556,8 +597,9 @@ pub(crate) async fn update_select_option_cell_handler(
|
|
|
#[tracing::instrument(level = "trace", skip_all, err)]
|
|
|
pub(crate) async fn get_checklist_cell_data_handler(
|
|
|
data: AFPluginData<CellIdPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> DataResult<ChecklistCellDataPB, FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: CellIdParams = data.into_inner().try_into()?;
|
|
|
let database_editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
|
|
let data = database_editor
|
|
@@ -569,8 +611,9 @@ pub(crate) async fn get_checklist_cell_data_handler(
|
|
|
#[tracing::instrument(level = "trace", skip_all, err)]
|
|
|
pub(crate) async fn update_checklist_cell_handler(
|
|
|
data: AFPluginData<ChecklistCellDataChangesetPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> Result<(), FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: ChecklistCellDataChangesetParams = data.into_inner().try_into()?;
|
|
|
let database_editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
|
|
let changeset = ChecklistCellChangeset {
|
|
@@ -588,8 +631,9 @@ pub(crate) async fn update_checklist_cell_handler(
|
|
|
#[tracing::instrument(level = "trace", skip_all, err)]
|
|
|
pub(crate) async fn update_date_cell_handler(
|
|
|
data: AFPluginData<DateChangesetPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> Result<(), FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let data = data.into_inner();
|
|
|
let cell_id: CellIdParams = data.cell_id.try_into()?;
|
|
|
let cell_changeset = DateCellChangeset {
|
|
@@ -612,8 +656,9 @@ pub(crate) async fn update_date_cell_handler(
|
|
|
#[tracing::instrument(level = "trace", skip_all, err)]
|
|
|
pub(crate) async fn get_groups_handler(
|
|
|
data: AFPluginData<DatabaseViewIdPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> DataResult<RepeatedGroupPB, FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: DatabaseViewIdPB = data.into_inner();
|
|
|
let database_editor = manager.get_database_with_view_id(params.as_ref()).await?;
|
|
|
let groups = database_editor.load_groups(params.as_ref()).await?;
|
|
@@ -623,8 +668,9 @@ pub(crate) async fn get_groups_handler(
|
|
|
#[tracing::instrument(level = "trace", skip_all, err)]
|
|
|
pub(crate) async fn get_group_handler(
|
|
|
data: AFPluginData<DatabaseGroupIdPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> DataResult<GroupPB, FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: DatabaseGroupIdParams = data.into_inner().try_into()?;
|
|
|
let database_editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
|
|
let group = database_editor
|
|
@@ -636,8 +682,9 @@ pub(crate) async fn get_group_handler(
|
|
|
#[tracing::instrument(level = "trace", skip_all, err)]
|
|
|
pub(crate) async fn set_group_by_field_handler(
|
|
|
data: AFPluginData<GroupByFieldPayloadPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> FlowyResult<()> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: GroupByFieldParams = data.into_inner().try_into()?;
|
|
|
let database_editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
|
|
database_editor
|
|
@@ -649,8 +696,9 @@ pub(crate) async fn set_group_by_field_handler(
|
|
|
#[tracing::instrument(level = "trace", skip_all, err)]
|
|
|
pub(crate) async fn update_group_handler(
|
|
|
data: AFPluginData<UpdateGroupPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> FlowyResult<()> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: UpdateGroupParams = data.into_inner().try_into()?;
|
|
|
let view_id = params.view_id.clone();
|
|
|
let database_editor = manager.get_database_with_view_id(&view_id).await?;
|
|
@@ -666,8 +714,9 @@ pub(crate) async fn update_group_handler(
|
|
|
#[tracing::instrument(level = "debug", skip(data, manager), err)]
|
|
|
pub(crate) async fn move_group_handler(
|
|
|
data: AFPluginData<MoveGroupPayloadPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> FlowyResult<()> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: MoveGroupParams = data.into_inner().try_into()?;
|
|
|
let database_editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
|
|
database_editor
|
|
@@ -679,8 +728,9 @@ pub(crate) async fn move_group_handler(
|
|
|
#[tracing::instrument(level = "debug", skip(data, manager), err)]
|
|
|
pub(crate) async fn move_group_row_handler(
|
|
|
data: AFPluginData<MoveGroupRowPayloadPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> FlowyResult<()> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: MoveGroupRowParams = data.into_inner().try_into()?;
|
|
|
let database_editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
|
|
database_editor
|
|
@@ -696,8 +746,9 @@ pub(crate) async fn move_group_row_handler(
|
|
|
|
|
|
#[tracing::instrument(level = "debug", skip(manager), err)]
|
|
|
pub(crate) async fn get_databases_handler(
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> DataResult<RepeatedDatabaseDescriptionPB, FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let data = manager.get_all_databases_description().await;
|
|
|
data_result_ok(data)
|
|
|
}
|
|
@@ -705,8 +756,9 @@ pub(crate) async fn get_databases_handler(
|
|
|
#[tracing::instrument(level = "debug", skip(data, manager), err)]
|
|
|
pub(crate) async fn set_layout_setting_handler(
|
|
|
data: AFPluginData<LayoutSettingChangesetPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> FlowyResult<()> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: LayoutSettingChangeset = data.into_inner().try_into()?;
|
|
|
let database_editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
|
|
let layout_params = LayoutSettingParams {
|
|
@@ -721,8 +773,9 @@ pub(crate) async fn set_layout_setting_handler(
|
|
|
|
|
|
pub(crate) async fn get_layout_setting_handler(
|
|
|
data: AFPluginData<DatabaseLayoutMetaPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> DataResult<DatabaseLayoutSettingPB, FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: DatabaseLayoutMeta = data.into_inner().try_into()?;
|
|
|
let database_editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
|
|
let layout_setting_pb = database_editor
|
|
@@ -736,8 +789,9 @@ pub(crate) async fn get_layout_setting_handler(
|
|
|
#[tracing::instrument(level = "debug", skip(data, manager), err)]
|
|
|
pub(crate) async fn get_calendar_events_handler(
|
|
|
data: AFPluginData<CalendarEventRequestPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> DataResult<RepeatedCalendarEventPB, FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: CalendarEventRequestParams = data.into_inner().try_into()?;
|
|
|
let database_editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
|
|
let events = database_editor
|
|
@@ -749,8 +803,9 @@ pub(crate) async fn get_calendar_events_handler(
|
|
|
#[tracing::instrument(level = "debug", skip(data, manager), err)]
|
|
|
pub(crate) async fn get_no_date_calendar_events_handler(
|
|
|
data: AFPluginData<CalendarEventRequestPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> DataResult<RepeatedNoDateCalendarEventPB, FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: CalendarEventRequestParams = data.into_inner().try_into()?;
|
|
|
let database_editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
|
|
let _events = database_editor
|
|
@@ -762,8 +817,9 @@ pub(crate) async fn get_no_date_calendar_events_handler(
|
|
|
#[tracing::instrument(level = "debug", skip(data, manager), err)]
|
|
|
pub(crate) async fn get_calendar_event_handler(
|
|
|
data: AFPluginData<RowIdPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> DataResult<CalendarEventPB, FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let params: RowIdParams = data.into_inner().try_into()?;
|
|
|
let database_editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
|
|
let event = database_editor
|
|
@@ -778,8 +834,9 @@ pub(crate) async fn get_calendar_event_handler(
|
|
|
#[tracing::instrument(level = "debug", skip(data, manager), err)]
|
|
|
pub(crate) async fn move_calendar_event_handler(
|
|
|
data: AFPluginData<MoveCalendarEventPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> FlowyResult<()> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let data = data.into_inner();
|
|
|
let cell_id: CellIdParams = data.cell_path.try_into()?;
|
|
|
let cell_changeset = DateCellChangeset {
|
|
@@ -801,7 +858,7 @@ pub(crate) async fn move_calendar_event_handler(
|
|
|
#[tracing::instrument(level = "debug", skip_all, err)]
|
|
|
pub(crate) async fn create_database_view(
|
|
|
_data: AFPluginData<CreateDatabaseViewPayloadPB>,
|
|
|
- _manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ _manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> FlowyResult<()> {
|
|
|
// let data: CreateDatabaseViewParams = data.into_inner().try_into()?;
|
|
|
Ok(())
|
|
@@ -810,8 +867,9 @@ pub(crate) async fn create_database_view(
|
|
|
#[tracing::instrument(level = "debug", skip_all, err)]
|
|
|
pub(crate) async fn export_csv_handler(
|
|
|
data: AFPluginData<DatabaseViewIdPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> DataResult<DatabaseExportDataPB, FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let view_id = data.into_inner().value;
|
|
|
let database = manager.get_database_with_view_id(&view_id).await?;
|
|
|
let data = database.export_csv(CSVFormat::Original).await?;
|
|
@@ -824,8 +882,9 @@ pub(crate) async fn export_csv_handler(
|
|
|
#[tracing::instrument(level = "debug", skip_all, err)]
|
|
|
pub(crate) async fn get_snapshots_handler(
|
|
|
data: AFPluginData<DatabaseViewIdPB>,
|
|
|
- manager: AFPluginState<Arc<DatabaseManager2>>,
|
|
|
+ manager: AFPluginState<Weak<DatabaseManager>>,
|
|
|
) -> DataResult<RepeatedDatabaseSnapshotPB, FlowyError> {
|
|
|
+ let manager = upgrade_manager(manager)?;
|
|
|
let view_id = data.into_inner().value;
|
|
|
let snapshots = manager.get_database_snapshots(&view_id).await?;
|
|
|
data_result_ok(RepeatedDatabaseSnapshotPB { items: snapshots })
|