diff --git a/frontend/app_flowy/lib/core/grid_notification.dart b/frontend/app_flowy/lib/core/grid_notification.dart index db474e5818..1efcbd7172 100644 --- a/frontend/app_flowy/lib/core/grid_notification.dart +++ b/frontend/app_flowy/lib/core/grid_notification.dart @@ -3,37 +3,37 @@ import 'dart:typed_data'; import 'package:appflowy_backend/protobuf/flowy-notification/protobuf.dart'; import 'package:dartz/dartz.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/notification.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/notification.pb.dart'; import 'package:appflowy_backend/rust_stream.dart'; import 'notification_helper.dart'; -// GridPB -typedef GridNotificationCallback = void Function( - GridNotification, Either); +// DatabasePB +typedef DatabaseNotificationCallback = void Function( + DatabaseNotification, Either); -class GridNotificationParser - extends NotificationParser { - GridNotificationParser( - {String? id, required GridNotificationCallback callback}) +class DatabaseNotificationParser + extends NotificationParser { + DatabaseNotificationParser( + {String? id, required DatabaseNotificationCallback callback}) : super( id: id, callback: callback, - tyParser: (ty) => GridNotification.valueOf(ty), + tyParser: (ty) => DatabaseNotification.valueOf(ty), errorParser: (bytes) => FlowyError.fromBuffer(bytes), ); } -typedef GridNotificationHandler = Function( - GridNotification ty, Either result); +typedef DatabaseNotificationHandler = Function( + DatabaseNotification ty, Either result); -class GridNotificationListener { +class DatabaseNotificationListener { StreamSubscription? _subscription; - GridNotificationParser? _parser; + DatabaseNotificationParser? _parser; - GridNotificationListener( - {required String objectId, required GridNotificationHandler handler}) - : _parser = GridNotificationParser(id: objectId, callback: handler) { + DatabaseNotificationListener( + {required String objectId, required DatabaseNotificationHandler handler}) + : _parser = DatabaseNotificationParser(id: objectId, callback: handler) { _subscription = RustStreamReceiver.listen((observable) => _parser?.parse(observable)); } diff --git a/frontend/app_flowy/lib/plugins/board/application/board_bloc.dart b/frontend/app_flowy/lib/plugins/board/application/board_bloc.dart index fc44b199df..f62363c153 100644 --- a/frontend/app_flowy/lib/plugins/board/application/board_bloc.dart +++ b/frontend/app_flowy/lib/plugins/board/application/board_bloc.dart @@ -10,7 +10,7 @@ import 'package:equatable/equatable.dart'; import 'package:appflowy_backend/log.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; import 'package:appflowy_backend/protobuf/flowy-folder/view.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/protobuf.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/protobuf.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; @@ -28,10 +28,10 @@ class BoardBloc extends Bloc { GridFieldController get fieldController => _gridDataController.fieldController; - String get gridId => _gridDataController.gridId; + String get databaseId => _gridDataController.viewId; BoardBloc({required ViewPB view}) - : _rowService = MoveRowFFIService(gridId: view.id), + : _rowService = MoveRowFFIService(viewId: view.id), _gridDataController = BoardDataController(view: view), super(BoardState.initial(view.id)) { boardController = AppFlowyBoardController( @@ -116,7 +116,7 @@ class BoardBloc extends Bloc { emit(state.copyWith(editingRow: none())); }); }, - didReceiveGridUpdate: (GridPB grid) { + didReceiveGridUpdate: (DatabasePB grid) { emit(state.copyWith(grid: Some(grid))); }, didReceiveError: (FlowyError error) { @@ -218,7 +218,7 @@ class BoardBloc extends Bloc { }, ); final controller = GroupController( - gridId: state.gridId, + databaseId: state.databaseId, group: group, delegate: delegate, ); @@ -313,7 +313,7 @@ class BoardEvent with _$BoardEvent { const factory BoardEvent.endEditingRow(String rowId) = _EndEditRow; const factory BoardEvent.didReceiveError(FlowyError error) = _DidReceiveError; const factory BoardEvent.didReceiveGridUpdate( - GridPB grid, + DatabasePB grid, ) = _DidReceiveGridUpdate; const factory BoardEvent.didReceiveGroups(List groups) = _DidReceiveGroups; @@ -322,17 +322,17 @@ class BoardEvent with _$BoardEvent { @freezed class BoardState with _$BoardState { const factory BoardState({ - required String gridId, - required Option grid, + required String databaseId, + required Option grid, required List groupIds, required Option editingRow, required GridLoadingState loadingState, required Option noneOrError, }) = _BoardState; - factory BoardState.initial(String gridId) => BoardState( + factory BoardState.initial(String databaseId) => BoardState( grid: none(), - gridId: gridId, + databaseId: databaseId, groupIds: [], editingRow: none(), noneOrError: none(), diff --git a/frontend/app_flowy/lib/plugins/board/application/board_data_controller.dart b/frontend/app_flowy/lib/plugins/board/application/board_data_controller.dart index 57e5480183..522e7bc723 100644 --- a/frontend/app_flowy/lib/plugins/board/application/board_data_controller.dart +++ b/frontend/app_flowy/lib/plugins/board/application/board_data_controller.dart @@ -8,12 +8,12 @@ import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; import 'package:appflowy_backend/protobuf/flowy-folder/view.pb.dart'; import 'dart:async'; import 'package:dartz/dartz.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/protobuf.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/protobuf.dart'; import 'board_listener.dart'; typedef OnFieldsChanged = void Function(UnmodifiableListView); -typedef OnGridChanged = void Function(GridPB); +typedef OnGridChanged = void Function(DatabasePB); typedef DidLoadGroups = void Function(List); typedef OnUpdatedGroup = void Function(List); typedef OnDeletedGroup = void Function(List); @@ -27,11 +27,11 @@ typedef OnRowsChanged = void Function( typedef OnError = void Function(FlowyError); class BoardDataController { - final String gridId; - final GridFFIService _gridFFIService; + final String viewId; + final DatabaseFFIService _databaseFFIService; final GridFieldController fieldController; final BoardListener _listener; - late GridViewCache _viewCache; + late DatabaseViewCache _viewCache; OnFieldsChanged? _onFieldsChanged; OnGridChanged? _onGridChanged; @@ -43,13 +43,13 @@ class BoardDataController { GridRowCache get rowCache => _viewCache.rowCache; BoardDataController({required ViewPB view}) - : gridId = view.id, + : viewId = view.id, _listener = BoardListener(view.id), - _gridFFIService = GridFFIService(gridId: view.id), - fieldController = GridFieldController(gridId: view.id) { + _databaseFFIService = DatabaseFFIService(databaseId: view.id), + fieldController = GridFieldController(databaseId: view.id) { // - _viewCache = GridViewCache( - gridId: view.id, + _viewCache = DatabaseViewCache( + databaseId: view.id, fieldController: fieldController, ); _viewCache.addListener(onRowsChanged: (reason) { @@ -107,7 +107,7 @@ class BoardDataController { } Future> openGrid() async { - final result = await _gridFFIService.openGrid(); + final result = await _databaseFFIService.openGrid(); return result.fold( (grid) async { _onGridChanged?.call(grid); @@ -128,17 +128,17 @@ class BoardDataController { Future> createBoardCard(String groupId, {String? startRowId}) { - return _gridFFIService.createBoardCard(groupId, startRowId); + return _databaseFFIService.createBoardCard(groupId, startRowId); } Future dispose() async { await _viewCache.dispose(); - await _gridFFIService.closeGrid(); + await _databaseFFIService.closeGrid(); await fieldController.dispose(); } Future _loadGroups() async { - final result = await _gridFFIService.loadGroups(); + final result = await _databaseFFIService.loadGroups(); return Future( () => result.fold( (groups) { diff --git a/frontend/app_flowy/lib/plugins/board/application/board_listener.dart b/frontend/app_flowy/lib/plugins/board/application/board_listener.dart index ddc93ac93c..4adeb8b4b1 100644 --- a/frontend/app_flowy/lib/plugins/board/application/board_listener.dart +++ b/frontend/app_flowy/lib/plugins/board/application/board_listener.dart @@ -3,10 +3,10 @@ import 'dart:typed_data'; import 'package:app_flowy/core/grid_notification.dart'; import 'package:flowy_infra/notifier.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/notification.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/notification.pb.dart'; import 'package:dartz/dartz.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/group.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/group_changeset.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/group.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/group_changeset.pb.dart'; typedef GroupUpdateValue = Either; typedef GroupByNewFieldValue = Either, FlowyError>; @@ -16,7 +16,7 @@ class BoardListener { PublishNotifier? _groupUpdateNotifier = PublishNotifier(); PublishNotifier? _groupByNewFieldNotifier = PublishNotifier(); - GridNotificationListener? _listener; + DatabaseNotificationListener? _listener; BoardListener(this.viewId); void start({ @@ -25,25 +25,25 @@ class BoardListener { }) { _groupUpdateNotifier?.addPublishListener(onBoardChanged); _groupByNewFieldNotifier?.addPublishListener(onGroupByNewField); - _listener = GridNotificationListener( + _listener = DatabaseNotificationListener( objectId: viewId, handler: _handler, ); } void _handler( - GridNotification ty, + DatabaseNotification ty, Either result, ) { switch (ty) { - case GridNotification.DidUpdateGroupView: + case DatabaseNotification.DidUpdateGroupView: result.fold( (payload) => _groupUpdateNotifier?.value = left(GroupViewChangesetPB.fromBuffer(payload)), (error) => _groupUpdateNotifier?.value = right(error), ); break; - case GridNotification.DidGroupByNewField: + case DatabaseNotification.DidGroupByNewField: result.fold( (payload) => _groupByNewFieldNotifier?.value = left(GroupViewChangesetPB.fromBuffer(payload).newGroups), diff --git a/frontend/app_flowy/lib/plugins/board/application/card/board_date_cell_bloc.dart b/frontend/app_flowy/lib/plugins/board/application/card/board_date_cell_bloc.dart index 571c2f29da..75067f305b 100644 --- a/frontend/app_flowy/lib/plugins/board/application/card/board_date_cell_bloc.dart +++ b/frontend/app_flowy/lib/plugins/board/application/card/board_date_cell_bloc.dart @@ -1,6 +1,6 @@ import 'package:app_flowy/plugins/grid/application/cell/cell_service/cell_service.dart'; import 'package:app_flowy/plugins/grid/application/field/field_controller.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/date_type_option_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/date_type_option_entities.pb.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'dart:async'; diff --git a/frontend/app_flowy/lib/plugins/board/application/card/board_select_option_cell_bloc.dart b/frontend/app_flowy/lib/plugins/board/application/card/board_select_option_cell_bloc.dart index 43c6fe935f..54b6197a54 100644 --- a/frontend/app_flowy/lib/plugins/board/application/card/board_select_option_cell_bloc.dart +++ b/frontend/app_flowy/lib/plugins/board/application/card/board_select_option_cell_bloc.dart @@ -1,5 +1,5 @@ import 'dart:async'; -import 'package:appflowy_backend/protobuf/flowy-grid/select_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:app_flowy/plugins/grid/application/cell/cell_service/cell_service.dart'; diff --git a/frontend/app_flowy/lib/plugins/board/application/card/board_url_cell_bloc.dart b/frontend/app_flowy/lib/plugins/board/application/card/board_url_cell_bloc.dart index 75d5895264..0b13df6545 100644 --- a/frontend/app_flowy/lib/plugins/board/application/card/board_url_cell_bloc.dart +++ b/frontend/app_flowy/lib/plugins/board/application/card/board_url_cell_bloc.dart @@ -1,5 +1,5 @@ import 'package:app_flowy/plugins/grid/application/cell/cell_service/cell_service.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/url_type_option_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/url_type_option_entities.pb.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'dart:async'; diff --git a/frontend/app_flowy/lib/plugins/board/application/card/card_bloc.dart b/frontend/app_flowy/lib/plugins/board/application/card/card_bloc.dart index e0a74055f7..76c78a7bb8 100644 --- a/frontend/app_flowy/lib/plugins/board/application/card/card_bloc.dart +++ b/frontend/app_flowy/lib/plugins/board/application/card/card_bloc.dart @@ -3,7 +3,7 @@ import 'package:app_flowy/plugins/grid/application/cell/cell_service/cell_servic import 'package:app_flowy/plugins/grid/application/row/row_cache.dart'; import 'package:app_flowy/plugins/grid/application/row/row_service.dart'; import 'package:equatable/equatable.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/row_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/row_entities.pb.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'dart:async'; @@ -18,11 +18,11 @@ class BoardCardBloc extends Bloc { BoardCardBloc({ required this.groupFieldId, - required String gridId, + required String viewId, required CardDataController dataController, required bool isEditing, }) : _rowService = RowFFIService( - gridId: gridId, + databaseId: viewId, ), _dataController = dataController, super( @@ -60,7 +60,7 @@ class BoardCardBloc extends Bloc { RowInfo rowInfo() { return RowInfo( - gridId: _rowService.gridId, + databaseId: _rowService.databaseId, fields: UnmodifiableListView( state.cells.map((cell) => cell.identifier.fieldInfo).toList(), ), diff --git a/frontend/app_flowy/lib/plugins/board/application/card/card_data_controller.dart b/frontend/app_flowy/lib/plugins/board/application/card/card_data_controller.dart index 59912b99f6..2bc5b31716 100644 --- a/frontend/app_flowy/lib/plugins/board/application/card/card_data_controller.dart +++ b/frontend/app_flowy/lib/plugins/board/application/card/card_data_controller.dart @@ -3,7 +3,7 @@ import 'package:app_flowy/plugins/grid/application/cell/cell_service/cell_servic import 'package:app_flowy/plugins/grid/application/cell/cell_service/cell_field_notifier.dart'; import 'package:app_flowy/plugins/grid/application/field/field_controller.dart'; import 'package:app_flowy/plugins/grid/application/row/row_cache.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/row_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/row_entities.pb.dart'; import 'package:flutter/foundation.dart'; typedef OnCardChanged = void Function(GridCellMap, RowsChangedReason); diff --git a/frontend/app_flowy/lib/plugins/board/application/group.dart b/frontend/app_flowy/lib/plugins/board/application/group.dart index eacf039c59..0e6e30eb67 100644 --- a/frontend/app_flowy/lib/plugins/board/application/group.dart +++ b/frontend/app_flowy/lib/plugins/board/application/group.dart @@ -1,10 +1,10 @@ -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; class BoardGroupService { - final String gridId; + final String viewId; FieldPB? groupField; - BoardGroupService(this.gridId); + BoardGroupService(this.viewId); void setGroupField(FieldPB field) { groupField = field; diff --git a/frontend/app_flowy/lib/plugins/board/application/group_controller.dart b/frontend/app_flowy/lib/plugins/board/application/group_controller.dart index c5dc2a40fd..d7a7c1bbec 100644 --- a/frontend/app_flowy/lib/plugins/board/application/group_controller.dart +++ b/frontend/app_flowy/lib/plugins/board/application/group_controller.dart @@ -1,6 +1,6 @@ import 'package:appflowy_backend/log.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/protobuf.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/protobuf.dart'; import 'group_listener.dart'; typedef OnGroupError = void Function(FlowyError); @@ -18,7 +18,7 @@ class GroupController { final GroupControllerDelegate delegate; GroupController({ - required String gridId, + required String databaseId, required this.group, required this.delegate, }) : _listener = GroupListener(group); diff --git a/frontend/app_flowy/lib/plugins/board/application/group_listener.dart b/frontend/app_flowy/lib/plugins/board/application/group_listener.dart index ce23630d97..93d761ec80 100644 --- a/frontend/app_flowy/lib/plugins/board/application/group_listener.dart +++ b/frontend/app_flowy/lib/plugins/board/application/group_listener.dart @@ -3,35 +3,35 @@ import 'dart:typed_data'; import 'package:app_flowy/core/grid_notification.dart'; import 'package:flowy_infra/notifier.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/notification.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/group.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/notification.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/group.pb.dart'; import 'package:dartz/dartz.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/group_changeset.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/group_changeset.pb.dart'; typedef UpdateGroupNotifiedValue = Either; class GroupListener { final GroupPB group; PublishNotifier? _groupNotifier = PublishNotifier(); - GridNotificationListener? _listener; + DatabaseNotificationListener? _listener; GroupListener(this.group); void start({ required void Function(UpdateGroupNotifiedValue) onGroupChanged, }) { _groupNotifier?.addPublishListener(onGroupChanged); - _listener = GridNotificationListener( + _listener = DatabaseNotificationListener( objectId: group.groupId, handler: _handler, ); } void _handler( - GridNotification ty, + DatabaseNotification ty, Either result, ) { switch (ty) { - case GridNotification.DidUpdateGroup: + case DatabaseNotification.DidUpdateGroup: result.fold( (payload) => _groupNotifier?.value = left(GroupRowsNotificationPB.fromBuffer(payload)), diff --git a/frontend/app_flowy/lib/plugins/board/application/toolbar/board_setting_bloc.dart b/frontend/app_flowy/lib/plugins/board/application/toolbar/board_setting_bloc.dart index 97185c5efe..a7d390e2a9 100644 --- a/frontend/app_flowy/lib/plugins/board/application/toolbar/board_setting_bloc.dart +++ b/frontend/app_flowy/lib/plugins/board/application/toolbar/board_setting_bloc.dart @@ -6,8 +6,8 @@ import 'package:dartz/dartz.dart'; part 'board_setting_bloc.freezed.dart'; class BoardSettingBloc extends Bloc { - final String gridId; - BoardSettingBloc({required this.gridId}) + final String databaseId; + BoardSettingBloc({required this.databaseId}) : super(BoardSettingState.initial()) { on( (event, emit) async { diff --git a/frontend/app_flowy/lib/plugins/board/presentation/board_page.dart b/frontend/app_flowy/lib/plugins/board/presentation/board_page.dart index bb61850263..fe04465e8a 100644 --- a/frontend/app_flowy/lib/plugins/board/presentation/board_page.dart +++ b/frontend/app_flowy/lib/plugins/board/presentation/board_page.dart @@ -10,8 +10,8 @@ import 'package:app_flowy/plugins/grid/application/row/row_data_controller.dart' import 'package:app_flowy/plugins/grid/presentation/widgets/cell/cell_builder.dart'; import 'package:app_flowy/plugins/grid/presentation/widgets/row/row_detail.dart'; import 'package:appflowy_backend/protobuf/flowy-folder/view.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/row_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/row_entities.pb.dart'; import 'package:appflowy_board/appflowy_board.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flowy_infra/image.dart'; @@ -227,7 +227,7 @@ class _BoardContentState extends State { if (rowCache == null) return SizedBox(key: ObjectKey(groupItem)); final fieldController = context.read().fieldController; - final gridId = context.read().gridId; + final databaseId = context.read().databaseId; final cardController = CardDataController( fieldController: fieldController, rowCache: rowCache, @@ -249,14 +249,14 @@ class _BoardContentState extends State { margin: config.cardPadding, decoration: _makeBoxDecoration(context), child: BoardCard( - gridId: gridId, + viewId: databaseId, groupId: groupData.group.groupId, fieldId: groupItem.fieldInfo.id, isEditing: isEditing, cellBuilder: cellBuilder, dataController: cardController, openCard: (context) => _openCard( - gridId, + databaseId, fieldController, rowPB, rowCache, @@ -292,14 +292,14 @@ class _BoardContentState extends State { } void _openCard( - String gridId, + String databaseId, GridFieldController fieldController, RowPB rowPB, GridRowCache rowCache, BuildContext context, ) { final rowInfo = RowInfo( - gridId: gridId, + databaseId: databaseId, fields: UnmodifiableListView(fieldController.fieldInfos), rowPB: rowPB, ); @@ -331,7 +331,7 @@ class _ToolbarBlocAdaptor extends StatelessWidget { builder: (context, state) { final bloc = context.read(); final toolbarContext = BoardToolbarContext( - viewId: bloc.gridId, + viewId: bloc.databaseId, fieldController: bloc.fieldController, ); diff --git a/frontend/app_flowy/lib/plugins/board/presentation/card/card.dart b/frontend/app_flowy/lib/plugins/board/presentation/card/card.dart index 6dab2af136..32a85a2d82 100644 --- a/frontend/app_flowy/lib/plugins/board/presentation/card/card.dart +++ b/frontend/app_flowy/lib/plugins/board/presentation/card/card.dart @@ -13,7 +13,7 @@ import 'container/accessory.dart'; import 'container/card_container.dart'; class BoardCard extends StatefulWidget { - final String gridId; + final String viewId; final String groupId; final String fieldId; final bool isEditing; @@ -24,7 +24,7 @@ class BoardCard extends StatefulWidget { final VoidCallback onEndEditing; const BoardCard({ - required this.gridId, + required this.viewId, required this.groupId, required this.fieldId, required this.isEditing, @@ -50,7 +50,7 @@ class _BoardCardState extends State { void initState() { rowNotifier = EditableRowNotifier(isEditing: widget.isEditing); _cardBloc = BoardCardBloc( - gridId: widget.gridId, + viewId: widget.viewId, groupFieldId: widget.fieldId, dataController: widget.dataController, isEditing: widget.isEditing, diff --git a/frontend/app_flowy/lib/plugins/board/presentation/card/card_cell_builder.dart b/frontend/app_flowy/lib/plugins/board/presentation/card/card_cell_builder.dart index c308d3743e..e54891a133 100644 --- a/frontend/app_flowy/lib/plugins/board/presentation/card/card_cell_builder.dart +++ b/frontend/app_flowy/lib/plugins/board/presentation/card/card_cell_builder.dart @@ -1,5 +1,5 @@ import 'package:app_flowy/plugins/grid/application/cell/cell_service/cell_service.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; import 'package:flutter/material.dart'; import 'board_cell.dart'; diff --git a/frontend/app_flowy/lib/plugins/board/presentation/toolbar/board_setting.dart b/frontend/app_flowy/lib/plugins/board/presentation/toolbar/board_setting.dart index 20d95b4ef1..cc1d562592 100644 --- a/frontend/app_flowy/lib/plugins/board/presentation/toolbar/board_setting.dart +++ b/frontend/app_flowy/lib/plugins/board/presentation/toolbar/board_setting.dart @@ -44,7 +44,7 @@ class BoardSettingList extends StatelessWidget { @override Widget build(BuildContext context) { return BlocProvider( - create: (context) => BoardSettingBloc(gridId: settingContext.viewId), + create: (context) => BoardSettingBloc(databaseId: settingContext.viewId), child: BlocListener( listenWhen: (previous, current) => previous.selectedAction != current.selectedAction, @@ -171,7 +171,7 @@ class _BoardSettingListPopoverState extends State { ); case BoardSettingAction.properties: return GridPropertyList( - gridId: widget.settingContext.viewId, + databaseId: widget.settingContext.viewId, fieldController: widget.settingContext.fieldController, ); } diff --git a/frontend/app_flowy/lib/plugins/grid/application/cell/cell_listener.dart b/frontend/app_flowy/lib/plugins/grid/application/cell/cell_listener.dart index 54e02e2d0b..59dbea1952 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/cell/cell_listener.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/cell/cell_listener.dart @@ -1,7 +1,7 @@ import 'package:app_flowy/core/grid_notification.dart'; import 'package:dartz/dartz.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/notification.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/notification.pb.dart'; import 'package:flowy_infra/notifier.dart'; import 'dart:async'; import 'dart:typed_data'; @@ -13,18 +13,18 @@ class CellListener { final String fieldId; PublishNotifier? _updateCellNotifier = PublishNotifier(); - GridNotificationListener? _listener; + DatabaseNotificationListener? _listener; CellListener({required this.rowId, required this.fieldId}); void start({required void Function(UpdateFieldNotifiedValue) onCellChanged}) { _updateCellNotifier?.addPublishListener(onCellChanged); - _listener = GridNotificationListener( + _listener = DatabaseNotificationListener( objectId: "$rowId:$fieldId", handler: _handler); } - void _handler(GridNotification ty, Either result) { + void _handler(DatabaseNotification ty, Either result) { switch (ty) { - case GridNotification.DidUpdateCell: + case DatabaseNotification.DidUpdateCell: result.fold( (payload) => _updateCellNotifier?.value = left(unit), (error) => _updateCellNotifier?.value = right(error), diff --git a/frontend/app_flowy/lib/plugins/grid/application/cell/cell_service/cell_cache.dart b/frontend/app_flowy/lib/plugins/grid/application/cell/cell_service/cell_cache.dart index 3d816b21d1..cd29ab3b9e 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/cell/cell_service/cell_cache.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/cell/cell_service/cell_cache.dart @@ -25,12 +25,12 @@ class GridCellCacheKey { /// Read https://appflowy.gitbook.io/docs/essential-documentation/contribute-to-appflowy/architecture/frontend/grid /// for more information class GridCellCache { - final String gridId; + final String databaseId; /// fieldId: {cacheKey: GridCell} final Map> _cellDataByFieldId = {}; GridCellCache({ - required this.gridId, + required this.databaseId, }); void removeCellWithFieldId(String fieldId) { diff --git a/frontend/app_flowy/lib/plugins/grid/application/cell/cell_service/cell_controller.dart b/frontend/app_flowy/lib/plugins/grid/application/cell/cell_service/cell_controller.dart index 22e01dd08e..817456df03 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/cell/cell_service/cell_controller.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/cell/cell_service/cell_controller.dart @@ -152,7 +152,7 @@ class GridCellController extends Equatable { _cellDataPersistence = cellDataPersistence, _fieldNotifier = fieldNotifier, _fieldService = FieldService( - gridId: cellId.gridId, + databaseId: cellId.databaseId, fieldId: cellId.fieldInfo.id, ), _cacheKey = GridCellCacheKey( @@ -160,7 +160,7 @@ class GridCellController extends Equatable { fieldId: cellId.fieldInfo.id, ); - String get gridId => cellId.gridId; + String get databaseId => cellId.databaseId; String get rowId => cellId.rowId; diff --git a/frontend/app_flowy/lib/plugins/grid/application/cell/cell_service/cell_data_persistence.dart b/frontend/app_flowy/lib/plugins/grid/application/cell/cell_service/cell_data_persistence.dart index f8dbd67dd0..a5414e7de4 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/cell/cell_service/cell_data_persistence.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/cell/cell_service/cell_data_persistence.dart @@ -51,7 +51,7 @@ class DateCellDataPersistence implements GridCellDataPersistence { payload.time = data.time!; } - return GridEventUpdateDateCell(payload).send().then((result) { + return DatabaseEventUpdateDateCell(payload).send().then((result) { return result.fold( (l) => none(), (err) => Some(err), @@ -62,7 +62,7 @@ class DateCellDataPersistence implements GridCellDataPersistence { CellPathPB _makeCellPath(GridCellIdentifier cellId) { return CellPathPB.create() - ..viewId = cellId.gridId + ..databaseId = cellId.databaseId ..fieldId = cellId.fieldId ..rowId = cellId.rowId; } diff --git a/frontend/app_flowy/lib/plugins/grid/application/cell/cell_service/cell_field_notifier.dart b/frontend/app_flowy/lib/plugins/grid/application/cell/cell_service/cell_field_notifier.dart index 5e2a2b3838..f643500c55 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/cell/cell_service/cell_field_notifier.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/cell/cell_service/cell_field_notifier.dart @@ -8,7 +8,7 @@ abstract class IGridCellFieldNotifier { void onCellDispose(); } -/// GridPB's cell helper wrapper that enables each cell will get notified when the corresponding field was changed. +/// DatabasePB's cell helper wrapper that enables each cell will get notified when the corresponding field was changed. /// You Register an onFieldChanged callback to listen to the cell changes, and unregister if you don't want to listen. class GridCellFieldNotifier { final IGridCellFieldNotifier notifier; diff --git a/frontend/app_flowy/lib/plugins/grid/application/cell/cell_service/cell_service.dart b/frontend/app_flowy/lib/plugins/grid/application/cell/cell_service/cell_service.dart index 1f3058a93e..7e7995d5ef 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/cell/cell_service/cell_service.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/cell/cell_service/cell_service.dart @@ -5,11 +5,11 @@ import 'package:equatable/equatable.dart'; import 'package:appflowy_backend/dispatch/dispatch.dart'; import 'package:appflowy_backend/log.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/cell_entities.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/date_type_option_entities.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/select_type_option.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/url_type_option_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/cell_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/date_type_option_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/url_type_option_entities.pb.dart'; import 'package:flutter/foundation.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:app_flowy/plugins/grid/application/cell/cell_listener.dart'; @@ -35,30 +35,30 @@ class CellService { required String data, }) { final payload = CellChangesetPB.create() - ..gridId = cellId.gridId + ..databaseId = cellId.databaseId ..fieldId = cellId.fieldId ..rowId = cellId.rowId ..typeCellData = data; - return GridEventUpdateCell(payload).send(); + return DatabaseEventUpdateCell(payload).send(); } Future> getCell({ required GridCellIdentifier cellId, }) { final payload = CellPathPB.create() - ..viewId = cellId.gridId + ..databaseId = cellId.databaseId ..fieldId = cellId.fieldId ..rowId = cellId.rowId; - return GridEventGetCell(payload).send(); + return DatabaseEventGetCell(payload).send(); } } /// Id of the cell -/// We can locate the cell by using gridId + rowId + field.id. +/// We can locate the cell by using database + rowId + field.id. @freezed class GridCellIdentifier with _$GridCellIdentifier { const factory GridCellIdentifier({ - required String gridId, + required String databaseId, required String rowId, required FieldInfo fieldInfo, }) = _GridCellIdentifier; diff --git a/frontend/app_flowy/lib/plugins/grid/application/cell/checklist_cell_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/cell/checklist_cell_bloc.dart index 781fc41e63..d0489792de 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/cell/checklist_cell_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/cell/checklist_cell_bloc.dart @@ -1,5 +1,5 @@ import 'package:appflowy_backend/log.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/select_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'dart:async'; diff --git a/frontend/app_flowy/lib/plugins/grid/application/cell/checklist_cell_editor_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/cell/checklist_cell_editor_bloc.dart index 52e6178506..fa88e0c605 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/cell/checklist_cell_editor_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/cell/checklist_cell_editor_bloc.dart @@ -3,7 +3,7 @@ import 'dart:async'; import 'package:app_flowy/plugins/grid/application/cell/cell_service/cell_service.dart'; import 'package:dartz/dartz.dart'; import 'package:appflowy_backend/log.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/select_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; diff --git a/frontend/app_flowy/lib/plugins/grid/application/cell/date_cal_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/cell/date_cal_bloc.dart index ca3ccbe083..60e017d90d 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/cell/date_cal_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/cell/date_cal_bloc.dart @@ -5,8 +5,8 @@ import 'package:easy_localization/easy_localization.dart' import 'package:appflowy_backend/log.dart'; import 'package:appflowy_backend/protobuf/flowy-error/code.pb.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/date_type_option.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/date_type_option_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/date_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/date_type_option_entities.pb.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:table_calendar/table_calendar.dart'; @@ -175,7 +175,7 @@ class DateCalBloc extends Bloc { }); final result = await FieldService.updateFieldTypeOption( - gridId: cellController.gridId, + databaseId: cellController.databaseId, fieldId: cellController.fieldInfo.id, typeOptionData: newDateTypeOption.writeToBuffer(), ); diff --git a/frontend/app_flowy/lib/plugins/grid/application/cell/date_cell_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/cell/date_cell_bloc.dart index c6f98398f9..c9b897923a 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/cell/date_cell_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/cell/date_cell_bloc.dart @@ -1,5 +1,5 @@ import 'package:app_flowy/plugins/grid/application/field/field_controller.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/date_type_option_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/date_type_option_entities.pb.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'dart:async'; diff --git a/frontend/app_flowy/lib/plugins/grid/application/cell/select_option_cell_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/cell/select_option_cell_bloc.dart index 462de8c059..da2e723e6b 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/cell/select_option_cell_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/cell/select_option_cell_bloc.dart @@ -1,5 +1,5 @@ import 'dart:async'; -import 'package:appflowy_backend/protobuf/flowy-grid/select_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:app_flowy/plugins/grid/application/cell/cell_service/cell_service.dart'; diff --git a/frontend/app_flowy/lib/plugins/grid/application/cell/select_option_editor_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/cell/select_option_editor_bloc.dart index de00ab3387..f0a41aebcd 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/cell/select_option_editor_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/cell/select_option_editor_bloc.dart @@ -2,7 +2,7 @@ import 'dart:async'; import 'package:app_flowy/plugins/grid/application/cell/cell_service/cell_service.dart'; import 'package:dartz/dartz.dart'; import 'package:appflowy_backend/log.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/select_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'select_option_service.dart'; diff --git a/frontend/app_flowy/lib/plugins/grid/application/cell/select_option_service.dart b/frontend/app_flowy/lib/plugins/grid/application/cell/select_option_service.dart index 5ea07e7c5a..c776856d5c 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/cell/select_option_service.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/cell/select_option_service.dart @@ -1,29 +1,29 @@ import 'package:dartz/dartz.dart'; import 'package:appflowy_backend/dispatch/dispatch.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/cell_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/cell_entities.pb.dart'; import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_service.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/select_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart'; import 'cell_service/cell_service.dart'; class SelectOptionFFIService { final GridCellIdentifier cellId; SelectOptionFFIService({required this.cellId}); - String get gridId => cellId.gridId; + String get databaseId => cellId.databaseId; String get fieldId => cellId.fieldInfo.id; String get rowId => cellId.rowId; Future> create( {required String name, bool isSelected = true}) { - return TypeOptionFFIService(gridId: gridId, fieldId: fieldId) + return TypeOptionFFIService(databaseId: databaseId, fieldId: fieldId) .newOption(name: name) .then( (result) { return result.fold( (option) { final cellIdentifier = CellPathPB.create() - ..viewId = gridId + ..databaseId = databaseId ..fieldId = fieldId ..rowId = rowId; final payload = SelectOptionChangesetPB.create() @@ -34,7 +34,7 @@ class SelectOptionFFIService { } else { payload.updateOptions.add(option); } - return GridEventUpdateSelectOption(payload).send(); + return DatabaseEventUpdateSelectOption(payload).send(); }, (r) => right(r), ); @@ -48,7 +48,7 @@ class SelectOptionFFIService { final payload = SelectOptionChangesetPB.create() ..updateOptions.add(option) ..cellIdentifier = _cellIdentifier(); - return GridEventUpdateSelectOption(payload).send(); + return DatabaseEventUpdateSelectOption(payload).send(); } Future> delete( @@ -57,16 +57,16 @@ class SelectOptionFFIService { ..deleteOptions.addAll(options) ..cellIdentifier = _cellIdentifier(); - return GridEventUpdateSelectOption(payload).send(); + return DatabaseEventUpdateSelectOption(payload).send(); } Future> getOptionContext() { final payload = CellPathPB.create() - ..viewId = gridId + ..databaseId = databaseId ..fieldId = fieldId ..rowId = rowId; - return GridEventGetSelectOptionCellData(payload).send(); + return DatabaseEventGetSelectOptionCellData(payload).send(); } Future> select( @@ -74,7 +74,7 @@ class SelectOptionFFIService { final payload = SelectOptionCellChangesetPB.create() ..cellIdentifier = _cellIdentifier() ..insertOptionIds.addAll(optionIds); - return GridEventUpdateSelectOptionCell(payload).send(); + return DatabaseEventUpdateSelectOptionCell(payload).send(); } Future> unSelect( @@ -82,12 +82,12 @@ class SelectOptionFFIService { final payload = SelectOptionCellChangesetPB.create() ..cellIdentifier = _cellIdentifier() ..deleteOptionIds.addAll(optionIds); - return GridEventUpdateSelectOptionCell(payload).send(); + return DatabaseEventUpdateSelectOptionCell(payload).send(); } CellPathPB _cellIdentifier() { return CellPathPB.create() - ..viewId = gridId + ..databaseId = databaseId ..fieldId = fieldId ..rowId = rowId; } diff --git a/frontend/app_flowy/lib/plugins/grid/application/cell/url_cell_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/cell/url_cell_bloc.dart index cbef5c5532..724ec3f2eb 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/cell/url_cell_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/cell/url_cell_bloc.dart @@ -1,4 +1,4 @@ -import 'package:appflowy_backend/protobuf/flowy-grid/url_type_option_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/url_type_option_entities.pb.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'dart:async'; diff --git a/frontend/app_flowy/lib/plugins/grid/application/cell/url_cell_editor_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/cell/url_cell_editor_bloc.dart index 43f82de66e..7218eb37ad 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/cell/url_cell_editor_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/cell/url_cell_editor_bloc.dart @@ -1,4 +1,4 @@ -import 'package:appflowy_backend/protobuf/flowy-grid/url_type_option_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/url_type_option_entities.pb.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'dart:async'; diff --git a/frontend/app_flowy/lib/plugins/grid/application/field/field_action_sheet_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/field/field_action_sheet_bloc.dart index e34a60dc0f..87126801be 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/field/field_action_sheet_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/field/field_action_sheet_bloc.dart @@ -1,5 +1,5 @@ import 'package:appflowy_backend/log.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'dart:async'; @@ -13,7 +13,7 @@ class FieldActionSheetBloc FieldActionSheetBloc({required GridFieldCellContext fieldCellContext}) : fieldService = FieldService( - gridId: fieldCellContext.gridId, + databaseId: fieldCellContext.databaseId, fieldId: fieldCellContext.field.id, ), super( diff --git a/frontend/app_flowy/lib/plugins/grid/application/field/field_cell_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/field/field_cell_bloc.dart index c30069b017..6e5717b86b 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/field/field_cell_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/field/field_cell_bloc.dart @@ -1,7 +1,7 @@ import 'package:app_flowy/plugins/grid/application/field/field_listener.dart'; import 'package:app_flowy/plugins/grid/application/field/field_service.dart'; import 'package:appflowy_backend/log.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'dart:async'; @@ -16,7 +16,7 @@ class FieldCellBloc extends Bloc { required GridFieldCellContext cellContext, }) : _fieldListener = SingleFieldListener(fieldId: cellContext.field.id), _fieldService = FieldService( - gridId: cellContext.gridId, fieldId: cellContext.field.id), + databaseId: cellContext.databaseId, fieldId: cellContext.field.id), super(FieldCellState.initial(cellContext)) { on( (event, emit) async { @@ -73,14 +73,14 @@ class FieldCellEvent with _$FieldCellEvent { @freezed class FieldCellState with _$FieldCellState { const factory FieldCellState({ - required String gridId, + required String databaseId, required FieldPB field, required double width, }) = _FieldCellState; factory FieldCellState.initial(GridFieldCellContext cellContext) => FieldCellState( - gridId: cellContext.gridId, + databaseId: cellContext.databaseId, field: cellContext.field, width: cellContext.field.width.toDouble(), ); diff --git a/frontend/app_flowy/lib/plugins/grid/application/field/field_controller.dart b/frontend/app_flowy/lib/plugins/grid/application/field/field_controller.dart index 4b384bc1c1..7c76c1d45c 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/field/field_controller.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/field/field_controller.dart @@ -9,15 +9,15 @@ import 'package:app_flowy/plugins/grid/application/sort/sort_listener.dart'; import 'package:app_flowy/plugins/grid/application/sort/sort_service.dart'; import 'package:app_flowy/plugins/grid/presentation/widgets/filter/filter_info.dart'; import 'package:app_flowy/plugins/grid/presentation/widgets/sort/sort_info.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/filter_changeset.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/sort_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/filter_changeset.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/sort_entities.pb.dart'; import 'package:dartz/dartz.dart'; import 'package:appflowy_backend/log.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/group.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/setting_entities.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/util.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/group.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/setting_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/util.pb.dart'; import 'package:flutter/foundation.dart'; import '../row/row_cache.dart'; @@ -72,15 +72,15 @@ typedef OnReceiveFilters = void Function(List); typedef OnReceiveSorts = void Function(List); class GridFieldController { - final String gridId; + final String databaseId; // Listeners - final GridFieldsListener _fieldListener; - final SettingListener _settingListener; + final DatabaseFieldsListener _fieldListener; + final DatabaseSettingListener _settingListener; final FiltersListener _filtersListener; final SortsListener _sortsListener; // FFI services - final GridFFIService _gridFFIService; + final DatabaseFFIService _gridFFIService; final SettingFFIService _settingFFIService; final FilterFFIService _filterFFIService; final SortFFIService _sortFFIService; @@ -147,15 +147,15 @@ class GridFieldController { return sorts.first; } - GridFieldController({required this.gridId}) - : _fieldListener = GridFieldsListener(gridId: gridId), - _settingListener = SettingListener(gridId: gridId), - _filterFFIService = FilterFFIService(viewId: gridId), - _filtersListener = FiltersListener(viewId: gridId), - _gridFFIService = GridFFIService(gridId: gridId), - _sortFFIService = SortFFIService(viewId: gridId), - _sortsListener = SortsListener(viewId: gridId), - _settingFFIService = SettingFFIService(viewId: gridId) { + GridFieldController({required this.databaseId}) + : _fieldListener = DatabaseFieldsListener(databaseId: databaseId), + _settingListener = DatabaseSettingListener(databaseId: databaseId), + _filterFFIService = FilterFFIService(databaseId: databaseId), + _filtersListener = FiltersListener(viewId: databaseId), + _gridFFIService = DatabaseFFIService(databaseId: databaseId), + _sortFFIService = SortFFIService(viewId: databaseId), + _sortsListener = SortsListener(viewId: databaseId), + _settingFFIService = SettingFFIService(viewId: databaseId) { //Listen on field's changes _listenOnFieldChanges(); @@ -209,7 +209,7 @@ class GridFieldController { ); if (fieldInfo != null) { _filterPBByFieldId[fieldInfo.id] = newFilter; - filters.add(FilterInfo(gridId, newFilter, fieldInfo)); + filters.add(FilterInfo(databaseId, newFilter, fieldInfo)); } } } @@ -243,7 +243,7 @@ class GridFieldController { // Insert the filter with the position: filterIndex, otherwise, // append it to the end of the list. final filterInfo = - FilterInfo(gridId, updatedFilter.filter, fieldInfo); + FilterInfo(databaseId, updatedFilter.filter, fieldInfo); if (filterIndex != -1) { filters.insert(filterIndex, filterInfo); } else { @@ -391,7 +391,7 @@ class GridFieldController { }); } - void _updateSetting(GridSettingPB setting) { + void _updateSetting(DatabaseViewSettingPB setting) { _groupConfigurationByFieldId.clear(); for (final configuration in setting.groupConfigurations.items) { _groupConfigurationByFieldId[configuration.fieldId] = configuration; @@ -476,7 +476,7 @@ class GridFieldController { fieldType: filterPB.fieldType, ); if (fieldInfo != null) { - final filterInfo = FilterInfo(gridId, filterPB, fieldInfo); + final filterInfo = FilterInfo(databaseId, filterPB, fieldInfo); filters.add(filterInfo); } } diff --git a/frontend/app_flowy/lib/plugins/grid/application/field/field_editor_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/field/field_editor_bloc.dart index fdddfc3e4e..7461906765 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/field/field_editor_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/field/field_editor_bloc.dart @@ -1,11 +1,10 @@ -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'dart:async'; import 'package:dartz/dartz.dart'; import 'field_service.dart'; import 'type_option/type_option_context.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; - import 'type_option/type_option_data_controller.dart'; part 'field_editor_bloc.freezed.dart'; @@ -14,13 +13,13 @@ class FieldEditorBloc extends Bloc { final TypeOptionDataController dataController; FieldEditorBloc({ - required String gridId, + required String databaseId, required String fieldName, required bool isGroupField, required IFieldTypeOptionLoader loader, }) : dataController = - TypeOptionDataController(gridId: gridId, loader: loader), - super(FieldEditorState.initial(gridId, fieldName, isGroupField)) { + TypeOptionDataController(databaseId: databaseId, loader: loader), + super(FieldEditorState.initial(databaseId, fieldName, isGroupField)) { on( (event, emit) async { await event.when( @@ -50,7 +49,7 @@ class FieldEditorBloc extends Bloc { () => null, (field) { final fieldService = FieldService( - gridId: gridId, + databaseId: databaseId, fieldId: field.id, ); fieldService.deleteField(); @@ -85,7 +84,7 @@ class FieldEditorEvent with _$FieldEditorEvent { @freezed class FieldEditorState with _$FieldEditorState { const factory FieldEditorState({ - required String gridId, + required String databaseId, required String errorText, required String name, required Option field, @@ -94,12 +93,12 @@ class FieldEditorState with _$FieldEditorState { }) = _FieldEditorState; factory FieldEditorState.initial( - String gridId, + String databaseId, String fieldName, bool isGroupField, ) => FieldEditorState( - gridId: gridId, + databaseId: databaseId, errorText: '', field: none(), canDelete: false, diff --git a/frontend/app_flowy/lib/plugins/grid/application/field/field_listener.dart b/frontend/app_flowy/lib/plugins/grid/application/field/field_listener.dart index 363cf13723..ace470a8f3 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/field/field_listener.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/field/field_listener.dart @@ -1,11 +1,11 @@ import 'package:app_flowy/core/grid_notification.dart'; import 'package:dartz/dartz.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/notification.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/notification.pb.dart'; import 'package:flowy_infra/notifier.dart'; import 'dart:async'; import 'dart:typed_data'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; typedef UpdateFieldNotifiedValue = Either; @@ -13,25 +13,25 @@ class SingleFieldListener { final String fieldId; PublishNotifier? _updateFieldNotifier = PublishNotifier(); - GridNotificationListener? _listener; + DatabaseNotificationListener? _listener; SingleFieldListener({required this.fieldId}); void start( {required void Function(UpdateFieldNotifiedValue) onFieldChanged}) { _updateFieldNotifier?.addPublishListener(onFieldChanged); - _listener = GridNotificationListener( + _listener = DatabaseNotificationListener( objectId: fieldId, handler: _handler, ); } void _handler( - GridNotification ty, + DatabaseNotification ty, Either result, ) { switch (ty) { - case GridNotification.DidUpdateField: + case DatabaseNotification.DidUpdateField: result.fold( (payload) => _updateFieldNotifier?.value = left(FieldPB.fromBuffer(payload)), diff --git a/frontend/app_flowy/lib/plugins/grid/application/field/field_service.dart b/frontend/app_flowy/lib/plugins/grid/application/field/field_service.dart index bb08d8eb7a..f4a576f142 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/field/field_service.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/field/field_service.dart @@ -1,8 +1,8 @@ import 'package:dartz/dartz.dart'; import 'package:appflowy_backend/dispatch/dispatch.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/grid_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/grid_entities.pb.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; part 'field_service.freezed.dart'; @@ -10,21 +10,21 @@ part 'field_service.freezed.dart'; /// FieldService consists of lots of event functions. We define the events in the backend(Rust), /// you can find the corresponding event implementation in event_map.rs of the corresponding crate. /// -/// You could check out the rust-lib/flowy-grid/event_map.rs for more information. +/// You could check out the rust-lib/flowy-database/event_map.rs for more information. class FieldService { - final String gridId; + final String databaseId; final String fieldId; - FieldService({required this.gridId, required this.fieldId}); + FieldService({required this.databaseId, required this.fieldId}); Future> moveField(int fromIndex, int toIndex) { final payload = MoveFieldPayloadPB.create() - ..gridId = gridId + ..viewId = databaseId ..fieldId = fieldId ..fromIndex = fromIndex ..toIndex = toIndex; - return GridEventMoveField(payload).send(); + return DatabaseEventMoveField(payload).send(); } Future> updateField({ @@ -35,7 +35,7 @@ class FieldService { double? width, }) { var payload = FieldChangesetPB.create() - ..gridId = gridId + ..databaseId = databaseId ..fieldId = fieldId; if (name != null) { @@ -58,46 +58,46 @@ class FieldService { payload.width = width.toInt(); } - return GridEventUpdateField(payload).send(); + return DatabaseEventUpdateField(payload).send(); } static Future> updateFieldTypeOption({ - required String gridId, + required String databaseId, required String fieldId, required List typeOptionData, }) { var payload = TypeOptionChangesetPB.create() - ..gridId = gridId + ..databaseId = databaseId ..fieldId = fieldId ..typeOptionData = typeOptionData; - return GridEventUpdateFieldTypeOption(payload).send(); + return DatabaseEventUpdateFieldTypeOption(payload).send(); } Future> deleteField() { final payload = DeleteFieldPayloadPB.create() - ..gridId = gridId + ..databaseId = databaseId ..fieldId = fieldId; - return GridEventDeleteField(payload).send(); + return DatabaseEventDeleteField(payload).send(); } Future> duplicateField() { final payload = DuplicateFieldPayloadPB.create() - ..gridId = gridId + ..databaseId = databaseId ..fieldId = fieldId; - return GridEventDuplicateField(payload).send(); + return DatabaseEventDuplicateField(payload).send(); } Future> getFieldTypeOptionData({ required FieldType fieldType, }) { final payload = TypeOptionPathPB.create() - ..gridId = gridId + ..databaseId = databaseId ..fieldId = fieldId ..fieldType = fieldType; - return GridEventGetFieldTypeOption(payload).send().then((result) { + return DatabaseEventGetFieldTypeOption(payload).send().then((result) { return result.fold( (data) => left(data), (err) => right(err), @@ -109,7 +109,7 @@ class FieldService { @freezed class GridFieldCellContext with _$GridFieldCellContext { const factory GridFieldCellContext({ - required String gridId, + required String databaseId, required FieldPB field, }) = _GridFieldCellContext; } diff --git a/frontend/app_flowy/lib/plugins/grid/application/field/field_type_option_edit_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/field/field_type_option_edit_bloc.dart index 4bc66d26fb..65800cf54e 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/field/field_type_option_edit_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/field/field_type_option_edit_bloc.dart @@ -1,4 +1,4 @@ -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'dart:async'; diff --git a/frontend/app_flowy/lib/plugins/grid/application/field/grid_listener.dart b/frontend/app_flowy/lib/plugins/grid/application/field/grid_listener.dart index 11f4fd7132..3f9f33aad9 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/field/grid_listener.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/field/grid_listener.dart @@ -1,36 +1,36 @@ import 'package:app_flowy/core/grid_notification.dart'; import 'package:dartz/dartz.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/notification.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/notification.pb.dart'; import 'package:flowy_infra/notifier.dart'; import 'dart:async'; import 'dart:typed_data'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; -typedef UpdateFieldNotifiedValue = Either; +typedef UpdateFieldNotifiedValue = Either; -class GridFieldsListener { - final String gridId; +class DatabaseFieldsListener { + final String databaseId; PublishNotifier? updateFieldsNotifier = PublishNotifier(); - GridNotificationListener? _listener; - GridFieldsListener({required this.gridId}); + DatabaseNotificationListener? _listener; + DatabaseFieldsListener({required this.databaseId}); void start( {required void Function(UpdateFieldNotifiedValue) onFieldsChanged}) { updateFieldsNotifier?.addPublishListener(onFieldsChanged); - _listener = GridNotificationListener( - objectId: gridId, + _listener = DatabaseNotificationListener( + objectId: databaseId, handler: _handler, ); } - void _handler(GridNotification ty, Either result) { + void _handler(DatabaseNotification ty, Either result) { switch (ty) { - case GridNotification.DidUpdateGridFields: + case DatabaseNotification.DidUpdateDatabaseFields: result.fold( (payload) => updateFieldsNotifier?.value = - left(GridFieldChangesetPB.fromBuffer(payload)), + left(DatabaseFieldChangesetPB.fromBuffer(payload)), (error) => updateFieldsNotifier?.value = right(error), ); break; diff --git a/frontend/app_flowy/lib/plugins/grid/application/field/type_option/date_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/field/type_option/date_bloc.dart index fd30be2b27..03eef86736 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/field/type_option/date_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/field/type_option/date_bloc.dart @@ -1,5 +1,5 @@ -import 'package:appflowy_backend/protobuf/flowy-grid/date_type_option.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/date_type_option_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/date_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/date_type_option_entities.pb.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'dart:async'; diff --git a/frontend/app_flowy/lib/plugins/grid/application/field/type_option/edit_select_option_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/field/type_option/edit_select_option_bloc.dart index f1118a5d47..063be6be32 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/field/type_option/edit_select_option_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/field/type_option/edit_select_option_bloc.dart @@ -1,4 +1,4 @@ -import 'package:appflowy_backend/protobuf/flowy-grid/select_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'dart:async'; diff --git a/frontend/app_flowy/lib/plugins/grid/application/field/type_option/multi_select_type_option.dart b/frontend/app_flowy/lib/plugins/grid/application/field/type_option/multi_select_type_option.dart index 7764c074b4..0d216f7c51 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/field/type_option/multi_select_type_option.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/field/type_option/multi_select_type_option.dart @@ -1,6 +1,6 @@ import 'package:appflowy_backend/log.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/multi_select_type_option.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/select_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/multi_select_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart'; import 'dart:async'; import 'select_option_type_option_bloc.dart'; import 'type_option_context.dart'; @@ -8,17 +8,17 @@ import 'type_option_service.dart'; import 'package:protobuf/protobuf.dart'; class MultiSelectAction with ISelectOptionAction { - final String gridId; + final String databaseId; final String fieldId; final TypeOptionFFIService service; final MultiSelectTypeOptionContext typeOptionContext; MultiSelectAction({ - required this.gridId, + required this.databaseId, required this.fieldId, required this.typeOptionContext, }) : service = TypeOptionFFIService( - gridId: gridId, + databaseId: databaseId, fieldId: fieldId, ); diff --git a/frontend/app_flowy/lib/plugins/grid/application/field/type_option/number_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/field/type_option/number_bloc.dart index 314cb0a8d8..a66b5a88ca 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/field/type_option/number_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/field/type_option/number_bloc.dart @@ -1,5 +1,5 @@ -import 'package:appflowy_backend/protobuf/flowy-grid/format.pbenum.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/number_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/format.pbenum.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/number_type_option.pb.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'dart:async'; diff --git a/frontend/app_flowy/lib/plugins/grid/application/field/type_option/number_format_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/field/type_option/number_format_bloc.dart index 81736a26b5..4936f69900 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/field/type_option/number_format_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/field/type_option/number_format_bloc.dart @@ -1,4 +1,4 @@ -import 'package:appflowy_backend/protobuf/flowy-grid/format.pbenum.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/format.pbenum.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'dart:async'; diff --git a/frontend/app_flowy/lib/plugins/grid/application/field/type_option/select_option_type_option_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/field/type_option/select_option_type_option_bloc.dart index 30b321c901..5c608b474f 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/field/type_option/select_option_type_option_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/field/type_option/select_option_type_option_bloc.dart @@ -1,4 +1,4 @@ -import 'package:appflowy_backend/protobuf/flowy-grid/select_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'dart:async'; diff --git a/frontend/app_flowy/lib/plugins/grid/application/field/type_option/single_select_type_option.dart b/frontend/app_flowy/lib/plugins/grid/application/field/type_option/single_select_type_option.dart index 46e3353612..2e67120fdb 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/field/type_option/single_select_type_option.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/field/type_option/single_select_type_option.dart @@ -1,6 +1,6 @@ import 'package:appflowy_backend/log.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/select_type_option.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/single_select_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/single_select_type_option.pb.dart'; import 'dart:async'; import 'package:protobuf/protobuf.dart'; import 'select_option_type_option_bloc.dart'; @@ -8,16 +8,16 @@ import 'type_option_context.dart'; import 'type_option_service.dart'; class SingleSelectAction with ISelectOptionAction { - final String gridId; + final String databaseId; final String fieldId; final SingleSelectTypeOptionContext typeOptionContext; final TypeOptionFFIService service; SingleSelectAction({ - required this.gridId, + required this.databaseId, required this.fieldId, required this.typeOptionContext, - }) : service = TypeOptionFFIService(gridId: gridId, fieldId: fieldId); + }) : service = TypeOptionFFIService(databaseId: databaseId, fieldId: fieldId); SingleSelectTypeOptionPB get typeOption => typeOptionContext.typeOption; diff --git a/frontend/app_flowy/lib/plugins/grid/application/field/type_option/type_option_context.dart b/frontend/app_flowy/lib/plugins/grid/application/field/type_option/type_option_context.dart index dbabdb46a3..242b56c803 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/field/type_option/type_option_context.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/field/type_option/type_option_context.dart @@ -1,15 +1,15 @@ import 'package:appflowy_backend/dispatch/dispatch.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/checkbox_type_option.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/checklist_type_option.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/date_type_option.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/checkbox_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/checklist_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/date_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; import 'package:dartz/dartz.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/multi_select_type_option.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/number_type_option.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/single_select_type_option.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/text_type_option.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/url_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/multi_select_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/number_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/single_select_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/text_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/url_type_option.pb.dart'; import 'package:protobuf/protobuf.dart'; import 'type_option_data_controller.dart'; @@ -117,7 +117,7 @@ class TypeOptionContext { required TypeOptionDataController dataController, }) : _dataController = dataController; - String get gridId => _dataController.gridId; + String get databaseId => _dataController.databaseId; String get fieldId => _dataController.field.id; @@ -155,17 +155,17 @@ abstract class TypeOptionFieldDelegate { } abstract class IFieldTypeOptionLoader { - String get gridId; + String get databaseId; Future> load(); Future> switchToField( String fieldId, FieldType fieldType) { final payload = EditFieldChangesetPB.create() - ..gridId = gridId + ..databaseId = databaseId ..fieldId = fieldId ..fieldType = fieldType; - return GridEventSwitchToField(payload).send(); + return DatabaseEventSwitchToField(payload).send(); } } @@ -174,9 +174,9 @@ class NewFieldTypeOptionLoader extends IFieldTypeOptionLoader { TypeOptionPB? fieldTypeOption; @override - final String gridId; + final String databaseId; NewFieldTypeOptionLoader({ - required this.gridId, + required this.databaseId, }); /// Creates the field type option if the fieldTypeOption is null. @@ -185,17 +185,17 @@ class NewFieldTypeOptionLoader extends IFieldTypeOptionLoader { Future> load() { if (fieldTypeOption != null) { final payload = TypeOptionPathPB.create() - ..gridId = gridId + ..databaseId = databaseId ..fieldId = fieldTypeOption!.field_2.id ..fieldType = fieldTypeOption!.field_2.fieldType; - return GridEventGetFieldTypeOption(payload).send(); + return DatabaseEventGetFieldTypeOption(payload).send(); } else { final payload = CreateFieldPayloadPB.create() - ..gridId = gridId + ..databaseId = databaseId ..fieldType = FieldType.RichText; - return GridEventCreateFieldTypeOption(payload).send().then((result) { + return DatabaseEventCreateFieldTypeOption(payload).send().then((result) { return result.fold( (newFieldTypeOption) { fieldTypeOption = newFieldTypeOption; @@ -211,21 +211,21 @@ class NewFieldTypeOptionLoader extends IFieldTypeOptionLoader { /// Uses when editing a existing field class FieldTypeOptionLoader extends IFieldTypeOptionLoader { @override - final String gridId; + final String databaseId; final FieldPB field; FieldTypeOptionLoader({ - required this.gridId, + required this.databaseId, required this.field, }); @override Future> load() { final payload = TypeOptionPathPB.create() - ..gridId = gridId + ..databaseId = databaseId ..fieldId = field.id ..fieldType = field.fieldType; - return GridEventGetFieldTypeOption(payload).send(); + return DatabaseEventGetFieldTypeOption(payload).send(); } } diff --git a/frontend/app_flowy/lib/plugins/grid/application/field/type_option/type_option_data_controller.dart b/frontend/app_flowy/lib/plugins/grid/application/field/type_option/type_option_data_controller.dart index 343a1cd09a..c126cd006e 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/field/type_option/type_option_data_controller.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/field/type_option/type_option_data_controller.dart @@ -1,7 +1,7 @@ import 'package:app_flowy/plugins/grid/application/field/field_controller.dart'; import 'package:flowy_infra/notifier.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; import 'package:app_flowy/plugins/grid/application/field/field_service.dart'; import 'package:dartz/dartz.dart'; import 'package:protobuf/protobuf.dart' hide FieldInfo; @@ -10,7 +10,7 @@ import 'package:appflowy_backend/log.dart'; import 'type_option_context.dart'; class TypeOptionDataController { - final String gridId; + final String databaseId; final IFieldTypeOptionLoader loader; late TypeOptionPB _data; final PublishNotifier _fieldNotifier = PublishNotifier(); @@ -22,13 +22,13 @@ class TypeOptionDataController { /// is null /// TypeOptionDataController({ - required this.gridId, + required this.databaseId, required this.loader, FieldInfo? fieldInfo, }) { if (fieldInfo != null) { _data = TypeOptionPB.create() - ..gridId = gridId + ..databaseId = databaseId ..field_2 = fieldInfo.field; } } @@ -66,7 +66,8 @@ class TypeOptionDataController { _fieldNotifier.value = _data.field_2; - FieldService(gridId: gridId, fieldId: field.id).updateField(name: name); + FieldService(databaseId: databaseId, fieldId: field.id) + .updateField(name: name); } set typeOptionData(List typeOptionData) { @@ -77,7 +78,7 @@ class TypeOptionDataController { }); FieldService.updateFieldTypeOption( - gridId: gridId, + databaseId: databaseId, fieldId: field.id, typeOptionData: typeOptionData, ); diff --git a/frontend/app_flowy/lib/plugins/grid/application/field/type_option/type_option_service.dart b/frontend/app_flowy/lib/plugins/grid/application/field/type_option/type_option_service.dart index 0a7fed296f..f4f938eba4 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/field/type_option/type_option_service.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/field/type_option/type_option_service.dart @@ -1,15 +1,15 @@ import 'package:dartz/dartz.dart'; import 'package:appflowy_backend/dispatch/dispatch.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/cell_entities.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/select_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/cell_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart'; class TypeOptionFFIService { - final String gridId; + final String databaseId; final String fieldId; TypeOptionFFIService({ - required this.gridId, + required this.databaseId, required this.fieldId, }); @@ -18,9 +18,9 @@ class TypeOptionFFIService { }) { final payload = CreateSelectOptionPayloadPB.create() ..optionName = name - ..gridId = gridId + ..databaseId = databaseId ..fieldId = fieldId; - return GridEventNewSelectOption(payload).send(); + return DatabaseEventNewSelectOption(payload).send(); } } diff --git a/frontend/app_flowy/lib/plugins/grid/application/filter/checkbox_filter_editor_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/filter/checkbox_filter_editor_bloc.dart index 3eefc81428..6e59ac4464 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/filter/checkbox_filter_editor_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/filter/checkbox_filter_editor_bloc.dart @@ -1,6 +1,6 @@ import 'package:app_flowy/plugins/grid/presentation/widgets/filter/filter_info.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/checkbox_filter.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/util.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/checkbox_filter.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/util.pb.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'dart:async'; @@ -16,7 +16,7 @@ class CheckboxFilterEditorBloc final FilterListener _listener; CheckboxFilterEditorBloc({required this.filterInfo}) - : _ffiService = FilterFFIService(viewId: filterInfo.viewId), + : _ffiService = FilterFFIService(databaseId: filterInfo.viewId), _listener = FilterListener( viewId: filterInfo.viewId, filterId: filterInfo.filter.id, diff --git a/frontend/app_flowy/lib/plugins/grid/application/filter/checklist_filter_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/filter/checklist_filter_bloc.dart index f3aab94d8a..58f3ff70d6 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/filter/checklist_filter_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/filter/checklist_filter_bloc.dart @@ -1,6 +1,6 @@ import 'package:app_flowy/plugins/grid/presentation/widgets/filter/filter_info.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/checklist_filter.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/util.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/checklist_filter.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/util.pb.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'dart:async'; @@ -18,7 +18,7 @@ class ChecklistFilterEditorBloc ChecklistFilterEditorBloc({ required this.filterInfo, - }) : _ffiService = FilterFFIService(viewId: filterInfo.viewId), + }) : _ffiService = FilterFFIService(databaseId: filterInfo.viewId), // _selectOptionService = // SelectOptionFFIService(cellId: cellController.cellId) _listener = FilterListener( diff --git a/frontend/app_flowy/lib/plugins/grid/application/filter/filter_create_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/filter/filter_create_bloc.dart index 9e2c067575..70b980f1fb 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/filter/filter_create_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/filter/filter_create_bloc.dart @@ -1,13 +1,13 @@ import 'package:app_flowy/plugins/grid/application/field/field_controller.dart'; import 'package:dartz/dartz.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pbserver.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/checkbox_filter.pbenum.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/checklist_filter.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/date_filter.pbenum.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/number_filter.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/select_option_filter.pbenum.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/text_filter.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/checkbox_filter.pbenum.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/checklist_filter.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/date_filter.pbenum.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/number_filter.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/select_option_filter.pbenum.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/text_filter.pb.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'dart:async'; @@ -22,7 +22,7 @@ class GridCreateFilterBloc final GridFieldController fieldController; void Function(List)? _onFieldFn; GridCreateFilterBloc({required this.viewId, required this.fieldController}) - : _ffiService = FilterFFIService(viewId: viewId), + : _ffiService = FilterFFIService(databaseId: viewId), super(GridCreateFilterState.initial(fieldController.fieldInfos)) { on( (event, emit) async { diff --git a/frontend/app_flowy/lib/plugins/grid/application/filter/filter_listener.dart b/frontend/app_flowy/lib/plugins/grid/application/filter/filter_listener.dart index 644bf8dc04..f580d79b2a 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/filter/filter_listener.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/filter/filter_listener.dart @@ -3,10 +3,10 @@ import 'dart:typed_data'; import 'package:app_flowy/core/grid_notification.dart'; import 'package:flowy_infra/notifier.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/notification.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/filter_changeset.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/notification.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/filter_changeset.pb.dart'; import 'package:dartz/dartz.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/util.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/util.pb.dart'; typedef UpdateFilterNotifiedValue = Either; @@ -16,25 +16,25 @@ class FiltersListener { PublishNotifier? _filterNotifier = PublishNotifier(); - GridNotificationListener? _listener; + DatabaseNotificationListener? _listener; FiltersListener({required this.viewId}); void start({ required void Function(UpdateFilterNotifiedValue) onFilterChanged, }) { _filterNotifier?.addPublishListener(onFilterChanged); - _listener = GridNotificationListener( + _listener = DatabaseNotificationListener( objectId: viewId, handler: _handler, ); } void _handler( - GridNotification ty, + DatabaseNotification ty, Either result, ) { switch (ty) { - case GridNotification.DidUpdateFilter: + case DatabaseNotification.DidUpdateFilter: result.fold( (payload) => _filterNotifier?.value = left(FilterChangesetNotificationPB.fromBuffer(payload)), @@ -60,7 +60,7 @@ class FilterListener { PublishNotifier? _onDeleteNotifier = PublishNotifier(); PublishNotifier? _onUpdateNotifier = PublishNotifier(); - GridNotificationListener? _listener; + DatabaseNotificationListener? _listener; FilterListener({required this.viewId, required this.filterId}); void start({ @@ -75,7 +75,7 @@ class FilterListener { onUpdated?.call(filter); }); - _listener = GridNotificationListener( + _listener = DatabaseNotificationListener( objectId: viewId, handler: _handler, ); @@ -100,11 +100,11 @@ class FilterListener { } void _handler( - GridNotification ty, + DatabaseNotification ty, Either result, ) { switch (ty) { - case GridNotification.DidUpdateFilter: + case DatabaseNotification.DidUpdateFilter: result.fold( (payload) => handleChangeset( FilterChangesetNotificationPB.fromBuffer(payload)), diff --git a/frontend/app_flowy/lib/plugins/grid/application/filter/filter_service.dart b/frontend/app_flowy/lib/plugins/grid/application/filter/filter_service.dart index 221ae01c41..42f9e433e9 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/filter/filter_service.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/filter/filter_service.dart @@ -2,26 +2,26 @@ import 'package:dartz/dartz.dart'; import 'package:appflowy_backend/dispatch/dispatch.dart'; import 'package:appflowy_backend/log.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/checkbox_filter.pbserver.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/checklist_filter.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/date_filter.pbserver.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/grid_entities.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/number_filter.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/select_option_filter.pbserver.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/setting_entities.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/text_filter.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/util.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/checkbox_filter.pbserver.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/checklist_filter.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/date_filter.pbserver.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/grid_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/number_filter.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/select_option_filter.pbserver.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/setting_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/text_filter.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/util.pb.dart'; import 'package:fixnum/fixnum.dart' as $fixnum; class FilterFFIService { - final String viewId; - const FilterFFIService({required this.viewId}); + final String databaseId; + const FilterFFIService({required this.databaseId}); Future, FlowyError>> getAllFilters() { - final payload = GridIdPB()..value = viewId; + final payload = DatabaseIdPB()..value = databaseId; - return GridEventGetAllFilters(payload).send().then((result) { + return DatabaseEventGetAllFilters(payload).send().then((result) { return result.fold( (repeated) => left(repeated.items), (r) => right(r), @@ -171,17 +171,17 @@ class FilterFFIService { var insertFilterPayload = AlterFilterPayloadPB.create() ..fieldId = fieldId ..fieldType = fieldType - ..viewId = viewId + ..viewId = databaseId ..data = data; if (filterId != null) { insertFilterPayload.filterId = filterId; } - final payload = GridSettingChangesetPB.create() - ..gridId = viewId + final payload = DatabaseSettingChangesetPB.create() + ..databaseId = databaseId ..alterFilter = insertFilterPayload; - return GridEventUpdateGridSetting(payload).send().then((result) { + return DatabaseEventUpdateDatabaseSetting(payload).send().then((result) { return result.fold( (l) => left(l), (err) { @@ -200,14 +200,14 @@ class FilterFFIService { final deleteFilterPayload = DeleteFilterPayloadPB.create() ..fieldId = fieldId ..filterId = filterId - ..viewId = viewId + ..viewId = databaseId ..fieldType = fieldType; - final payload = GridSettingChangesetPB.create() - ..gridId = viewId + final payload = DatabaseSettingChangesetPB.create() + ..databaseId = databaseId ..deleteFilter = deleteFilterPayload; - return GridEventUpdateGridSetting(payload).send().then((result) { + return DatabaseEventUpdateDatabaseSetting(payload).send().then((result) { return result.fold( (l) => left(l), (err) { diff --git a/frontend/app_flowy/lib/plugins/grid/application/filter/select_option_filter_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/filter/select_option_filter_bloc.dart index 7fc92dc705..d882565055 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/filter/select_option_filter_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/filter/select_option_filter_bloc.dart @@ -1,7 +1,7 @@ import 'package:app_flowy/plugins/grid/presentation/widgets/filter/choicechip/select_option/select_option_loader.dart'; import 'package:app_flowy/plugins/grid/presentation/widgets/filter/filter_info.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/select_option_filter.pbserver.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/util.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/select_option_filter.pbserver.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/util.pb.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'dart:async'; @@ -20,7 +20,7 @@ class SelectOptionFilterEditorBloc SelectOptionFilterEditorBloc({ required this.filterInfo, required this.delegate, - }) : _ffiService = FilterFFIService(viewId: filterInfo.viewId), + }) : _ffiService = FilterFFIService(databaseId: filterInfo.viewId), _listener = FilterListener( viewId: filterInfo.viewId, filterId: filterInfo.filter.id, diff --git a/frontend/app_flowy/lib/plugins/grid/application/filter/select_option_filter_list_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/filter/select_option_filter_list_bloc.dart index 846c2ebd82..db4f83da61 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/filter/select_option_filter_list_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/filter/select_option_filter_list_bloc.dart @@ -1,8 +1,8 @@ import 'dart:async'; import 'package:app_flowy/plugins/grid/presentation/widgets/filter/choicechip/select_option/select_option_loader.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/select_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; diff --git a/frontend/app_flowy/lib/plugins/grid/application/filter/text_filter_editor_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/filter/text_filter_editor_bloc.dart index 2d3b1a696e..be0ed2d239 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/filter/text_filter_editor_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/filter/text_filter_editor_bloc.dart @@ -1,6 +1,6 @@ import 'package:app_flowy/plugins/grid/presentation/widgets/filter/filter_info.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/text_filter.pbserver.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/util.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/text_filter.pbserver.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/util.pb.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'dart:async'; @@ -16,7 +16,7 @@ class TextFilterEditorBloc final FilterListener _listener; TextFilterEditorBloc({required this.filterInfo}) - : _ffiService = FilterFFIService(viewId: filterInfo.viewId), + : _ffiService = FilterFFIService(databaseId: filterInfo.viewId), _listener = FilterListener( viewId: filterInfo.viewId, filterId: filterInfo.filter.id, diff --git a/frontend/app_flowy/lib/plugins/grid/application/grid_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/grid_bloc.dart index d1374cdc34..9ab3b29f74 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/grid_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/grid_bloc.dart @@ -3,7 +3,7 @@ import 'package:dartz/dartz.dart'; import 'package:equatable/equatable.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; import 'package:appflowy_backend/protobuf/flowy-folder/view.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/protobuf.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/protobuf.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'field/field_controller.dart'; @@ -37,7 +37,7 @@ class GridBloc extends Bloc { }, deleteRow: (rowInfo) async { final rowService = RowFFIService( - gridId: rowInfo.gridId, + databaseId: rowInfo.databaseId, ); await rowService.deleteRow(rowInfo.rowPB.id); }, @@ -124,15 +124,15 @@ class GridEvent with _$GridEvent { ) = _DidReceiveFieldUpdate; const factory GridEvent.didReceiveGridUpdate( - GridPB grid, + DatabasePB grid, ) = _DidReceiveGridUpdate; } @freezed class GridState with _$GridState { const factory GridState({ - required String gridId, - required Option grid, + required String databaseId, + required Option grid, required GridFieldEquatable fields, required List rowInfos, required int rowCount, @@ -140,12 +140,12 @@ class GridState with _$GridState { required RowsChangedReason reason, }) = _GridState; - factory GridState.initial(String gridId) => GridState( + factory GridState.initial(String databaseId) => GridState( fields: GridFieldEquatable(UnmodifiableListView([])), rowInfos: [], rowCount: 0, grid: none(), - gridId: gridId, + databaseId: databaseId, loadingState: const _Loading(), reason: const InitialListState(), ); diff --git a/frontend/app_flowy/lib/plugins/grid/application/grid_data_controller.dart b/frontend/app_flowy/lib/plugins/grid/application/grid_data_controller.dart index e74779d858..38c2bedd38 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/grid_data_controller.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/grid_data_controller.dart @@ -1,7 +1,7 @@ import 'package:app_flowy/plugins/grid/presentation/widgets/filter/filter_info.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; import 'package:appflowy_backend/protobuf/flowy-folder/view.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/grid_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/grid_entities.pb.dart'; import 'dart:async'; import 'package:dartz/dartz.dart'; import 'view/grid_view_cache.dart'; @@ -11,7 +11,7 @@ import 'row/row_cache.dart'; typedef OnFieldsChanged = void Function(List); typedef OnFiltersChanged = void Function(List); -typedef OnGridChanged = void Function(GridPB); +typedef OnGridChanged = void Function(DatabasePB); typedef OnRowsChanged = void Function( List rowInfos, @@ -20,10 +20,10 @@ typedef OnRowsChanged = void Function( typedef ListenOnRowChangedCondition = bool Function(); class GridController { - final String gridId; - final GridFFIService _gridFFIService; + final String databaseId; + final DatabaseFFIService _gridFFIService; final GridFieldController fieldController; - late GridViewCache _viewCache; + late DatabaseViewCache _viewCache; OnRowsChanged? _onRowChanged; OnGridChanged? _onGridChanged; @@ -31,11 +31,11 @@ class GridController { GridRowCache get rowCache => _viewCache.rowCache; GridController({required ViewPB view}) - : gridId = view.id, - _gridFFIService = GridFFIService(gridId: view.id), - fieldController = GridFieldController(gridId: view.id) { - _viewCache = GridViewCache( - gridId: gridId, + : databaseId = view.id, + _gridFFIService = DatabaseFFIService(databaseId: view.id), + fieldController = GridFieldController(databaseId: view.id) { + _viewCache = DatabaseViewCache( + databaseId: databaseId, fieldController: fieldController, ); _viewCache.addListener(onRowsChanged: (reason) { diff --git a/frontend/app_flowy/lib/plugins/grid/application/grid_header_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/grid_header_bloc.dart index 6d92b87069..90faac4e7d 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/grid_header_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/grid_header_bloc.dart @@ -1,6 +1,6 @@ import 'package:app_flowy/plugins/grid/application/field/field_service.dart'; import 'package:appflowy_backend/log.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'dart:async'; @@ -10,10 +10,10 @@ part 'grid_header_bloc.freezed.dart'; class GridHeaderBloc extends Bloc { final GridFieldController fieldController; - final String gridId; + final String databaseId; GridHeaderBloc({ - required this.gridId, + required this.databaseId, required this.fieldController, }) : super(GridHeaderState.initial(fieldController.fieldInfos)) { on( @@ -45,7 +45,8 @@ class GridHeaderBloc extends Bloc { fields.insert(value.toIndex, fields.removeAt(value.fromIndex)); emit(state.copyWith(fields: fields)); - final fieldService = FieldService(gridId: gridId, fieldId: value.field.id); + final fieldService = + FieldService(databaseId: databaseId, fieldId: value.field.id); final result = await fieldService.moveField( value.fromIndex, value.toIndex, diff --git a/frontend/app_flowy/lib/plugins/grid/application/grid_service.dart b/frontend/app_flowy/lib/plugins/grid/application/grid_service.dart index 786b1a8ccb..0f30767c7b 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/grid_service.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/grid_service.dart @@ -2,28 +2,28 @@ import 'package:dartz/dartz.dart'; import 'package:appflowy_backend/dispatch/dispatch.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; import 'package:appflowy_backend/protobuf/flowy-folder/view.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/grid_entities.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/group.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/row_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/grid_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/group.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/row_entities.pb.dart'; -class GridFFIService { - final String gridId; - GridFFIService({ - required this.gridId, +class DatabaseFFIService { + final String databaseId; + DatabaseFFIService({ + required this.databaseId, }); - Future> openGrid() async { - await FolderEventSetLatestView(ViewIdPB(value: gridId)).send(); + Future> openGrid() async { + await FolderEventSetLatestView(ViewIdPB(value: databaseId)).send(); - final payload = GridIdPB(value: gridId); - return GridEventGetGrid(payload).send(); + final payload = DatabaseIdPB(value: databaseId); + return DatabaseEventGetDatabase(payload).send(); } Future> createRow({Option? startRowId}) { - var payload = CreateTableRowPayloadPB.create()..gridId = gridId; + var payload = CreateTableRowPayloadPB.create()..databaseId = databaseId; startRowId?.fold(() => null, (id) => payload.startRowId = id); - return GridEventCreateTableRow(payload).send(); + return DatabaseEventCreateTableRow(payload).send(); } Future> createBoardCard( @@ -31,35 +31,35 @@ class GridFFIService { String? startRowId, ) { CreateBoardCardPayloadPB payload = CreateBoardCardPayloadPB.create() - ..gridId = gridId + ..databaseId = databaseId ..groupId = groupId; if (startRowId != null) { payload.startRowId = startRowId; } - return GridEventCreateBoardCard(payload).send(); + return DatabaseEventCreateBoardCard(payload).send(); } Future, FlowyError>> getFields( {List? fieldIds}) { - var payload = GetFieldPayloadPB.create()..gridId = gridId; + var payload = GetFieldPayloadPB.create()..databaseId = databaseId; if (fieldIds != null) { payload.fieldIds = RepeatedFieldIdPB(items: fieldIds); } - return GridEventGetFields(payload).send().then((result) { + return DatabaseEventGetFields(payload).send().then((result) { return result.fold((l) => left(l.items), (r) => right(r)); }); } Future> closeGrid() { - final request = ViewIdPB(value: gridId); + final request = ViewIdPB(value: databaseId); return FolderEventCloseView(request).send(); } Future> loadGroups() { - final payload = GridIdPB(value: gridId); - return GridEventGetGroup(payload).send(); + final payload = DatabaseIdPB(value: databaseId); + return DatabaseEventGetGroup(payload).send(); } } diff --git a/frontend/app_flowy/lib/plugins/grid/application/row/row_action_sheet_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/row/row_action_sheet_bloc.dart index 99c3279856..b9317ff851 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/row/row_action_sheet_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/row/row_action_sheet_bloc.dart @@ -15,7 +15,7 @@ class RowActionSheetBloc final RowFFIService _rowService; RowActionSheetBloc({required RowInfo rowInfo}) - : _rowService = RowFFIService(gridId: rowInfo.gridId), + : _rowService = RowFFIService(databaseId: rowInfo.databaseId), super(RowActionSheetState.initial(rowInfo)) { on( (event, emit) async { diff --git a/frontend/app_flowy/lib/plugins/grid/application/row/row_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/row/row_bloc.dart index 2d496dc2a3..436338cb06 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/row/row_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/row/row_bloc.dart @@ -18,7 +18,7 @@ class RowBloc extends Bloc { RowBloc({ required RowInfo rowInfo, required RowDataController dataController, - }) : _rowService = RowFFIService(gridId: rowInfo.gridId), + }) : _rowService = RowFFIService(databaseId: rowInfo.databaseId), _dataController = dataController, super(RowState.initial(rowInfo, dataController.loadData())) { on( diff --git a/frontend/app_flowy/lib/plugins/grid/application/row/row_cache.dart b/frontend/app_flowy/lib/plugins/grid/application/row/row_cache.dart index 3bba356ef8..1f505b3907 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/row/row_cache.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/row/row_cache.dart @@ -3,7 +3,7 @@ import 'package:app_flowy/plugins/grid/application/cell/cell_service/cell_servic import 'package:app_flowy/plugins/grid/application/field/field_controller.dart'; import 'package:appflowy_backend/dispatch/dispatch.dart'; import 'package:appflowy_backend/log.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/protobuf.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/protobuf.dart'; import 'package:flutter/foundation.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; @@ -28,7 +28,7 @@ abstract class RowCacheDelegate { /// Read https://appflowy.gitbook.io/docs/essential-documentation/contribute-to-appflowy/architecture/frontend/grid for more information. class GridRowCache { - final String gridId; + final String databaseId; final List rows; /// _rows containers the current block's rows @@ -47,11 +47,11 @@ class GridRowCache { GridCellCache get cellCache => _cellCache; GridRowCache({ - required this.gridId, + required this.databaseId, required this.rows, required RowChangesetNotifierForward notifier, required RowCacheDelegate delegate, - }) : _cellCache = GridCellCache(gridId: gridId), + }) : _cellCache = GridCellCache(databaseId: databaseId), _rowChangeReasonNotifier = RowChangesetNotifier(), _delegate = delegate { // @@ -74,13 +74,13 @@ class GridRowCache { await _cellCache.dispose(); } - void applyRowsChanged(GridViewRowsChangesetPB changeset) { + void applyRowsChanged(ViewRowsChangesetPB changeset) { _deleteRows(changeset.deletedRows); _insertRows(changeset.insertedRows); _updateRows(changeset.updatedRows); } - void applyRowsVisibility(GridRowsVisibilityChangesetPB changeset) { + void applyRowsVisibility(ViewRowsVisibilityChangesetPB changeset) { _hideRows(changeset.invisibleRows); _showRows(changeset.visibleRows); } @@ -216,10 +216,10 @@ class GridRowCache { Future _loadRow(String rowId) async { final payload = RowIdPB.create() - ..gridId = gridId + ..databaseId = databaseId ..rowId = rowId; - final result = await GridEventGetRow(payload).send(); + final result = await DatabaseEventGetRow(payload).send(); result.fold( (optionRow) => _refreshRow(optionRow), (err) => Log.error(err), @@ -233,7 +233,7 @@ class GridRowCache { if (field.visibility) { cellDataMap[field.id] = GridCellIdentifier( rowId: rowId, - gridId: gridId, + databaseId: databaseId, fieldInfo: field, ); } @@ -267,7 +267,7 @@ class GridRowCache { RowInfo buildGridRow(RowPB rowPB) { return RowInfo( - gridId: gridId, + databaseId: databaseId, fields: _delegate.fields, rowPB: rowPB, ); @@ -296,7 +296,7 @@ class RowChangesetNotifier extends ChangeNotifier { @unfreezed class RowInfo with _$RowInfo { factory RowInfo({ - required String gridId, + required String databaseId, required UnmodifiableListView fields, required RowPB rowPB, }) = _RowInfo; diff --git a/frontend/app_flowy/lib/plugins/grid/application/row/row_detail_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/row/row_detail_bloc.dart index 7d36b71aef..1d01c31833 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/row/row_detail_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/row/row_detail_bloc.dart @@ -27,7 +27,7 @@ class RowDetailBloc extends Bloc { }, deleteField: (_DeleteField value) { final fieldService = FieldService( - gridId: dataController.rowInfo.gridId, + databaseId: dataController.rowInfo.databaseId, fieldId: value.fieldId, ); fieldService.deleteField(); diff --git a/frontend/app_flowy/lib/plugins/grid/application/row/row_list.dart b/frontend/app_flowy/lib/plugins/grid/application/row/row_list.dart index b93f76d19e..bd85c8c977 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/row/row_list.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/row/row_list.dart @@ -1,6 +1,6 @@ import 'dart:collection'; -import 'package:appflowy_backend/protobuf/flowy-grid/row_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/row_entities.pb.dart'; import 'row_cache.dart'; diff --git a/frontend/app_flowy/lib/plugins/grid/application/row/row_listener.dart b/frontend/app_flowy/lib/plugins/grid/application/row/row_listener.dart index 615ade34be..f4ad88e423 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/row/row_listener.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/row/row_listener.dart @@ -1,12 +1,12 @@ import 'package:app_flowy/core/grid_notification.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/notification.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/notification.pb.dart'; import 'package:flowy_infra/notifier.dart'; import 'dart:async'; import 'dart:typed_data'; import 'package:dartz/dartz.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/row_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/row_entities.pb.dart'; typedef UpdateRowNotifiedValue = Either; typedef UpdateFieldNotifiedValue = Either, FlowyError>; @@ -15,17 +15,18 @@ class RowListener { final String rowId; PublishNotifier? updateRowNotifier = PublishNotifier(); - GridNotificationListener? _listener; + DatabaseNotificationListener? _listener; RowListener({required this.rowId}); void start() { - _listener = GridNotificationListener(objectId: rowId, handler: _handler); + _listener = + DatabaseNotificationListener(objectId: rowId, handler: _handler); } - void _handler(GridNotification ty, Either result) { + void _handler(DatabaseNotification ty, Either result) { switch (ty) { - case GridNotification.DidUpdateRow: + case DatabaseNotification.DidUpdateRow: result.fold( (payload) => updateRowNotifier?.value = left(RowPB.fromBuffer(payload)), diff --git a/frontend/app_flowy/lib/plugins/grid/application/row/row_service.dart b/frontend/app_flowy/lib/plugins/grid/application/row/row_service.dart index ba7e47c951..b0e75397b5 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/row/row_service.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/row/row_service.dart @@ -1,55 +1,55 @@ import 'package:dartz/dartz.dart'; import 'package:appflowy_backend/dispatch/dispatch.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/grid_entities.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/group_changeset.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/row_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/grid_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/group_changeset.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/row_entities.pb.dart'; class RowFFIService { - final String gridId; + final String databaseId; RowFFIService({ - required this.gridId, + required this.databaseId, }); Future> createRow(String rowId) { final payload = CreateTableRowPayloadPB.create() - ..gridId = gridId + ..databaseId = databaseId ..startRowId = rowId; - return GridEventCreateTableRow(payload).send(); + return DatabaseEventCreateTableRow(payload).send(); } Future> getRow(String rowId) { final payload = RowIdPB.create() - ..gridId = gridId + ..databaseId = databaseId ..rowId = rowId; - return GridEventGetRow(payload).send(); + return DatabaseEventGetRow(payload).send(); } Future> deleteRow(String rowId) { final payload = RowIdPB.create() - ..gridId = gridId + ..databaseId = databaseId ..rowId = rowId; - return GridEventDeleteRow(payload).send(); + return DatabaseEventDeleteRow(payload).send(); } Future> duplicateRow(String rowId) { final payload = RowIdPB.create() - ..gridId = gridId + ..databaseId = databaseId ..rowId = rowId; - return GridEventDuplicateRow(payload).send(); + return DatabaseEventDuplicateRow(payload).send(); } } class MoveRowFFIService { - final String gridId; + final String viewId; MoveRowFFIService({ - required this.gridId, + required this.viewId, }); Future> moveRow({ @@ -57,11 +57,11 @@ class MoveRowFFIService { required String toRowId, }) { var payload = MoveRowPayloadPB.create() - ..viewId = gridId + ..viewId = viewId ..fromRowId = fromRowId ..toRowId = toRowId; - return GridEventMoveRow(payload).send(); + return DatabaseEventMoveRow(payload).send(); } Future> moveGroupRow({ @@ -70,7 +70,7 @@ class MoveRowFFIService { required String? toRowId, }) { var payload = MoveGroupRowPayloadPB.create() - ..viewId = gridId + ..viewId = viewId ..fromRowId = fromRowId ..toGroupId = toGroupId; @@ -78,7 +78,7 @@ class MoveRowFFIService { payload.toRowId = toRowId; } - return GridEventMoveGroupRow(payload).send(); + return DatabaseEventMoveGroupRow(payload).send(); } Future> moveGroup({ @@ -86,10 +86,10 @@ class MoveRowFFIService { required String toGroupId, }) { final payload = MoveGroupPayloadPB.create() - ..viewId = gridId + ..viewId = viewId ..fromGroupId = fromGroupId ..toGroupId = toGroupId; - return GridEventMoveGroup(payload).send(); + return DatabaseEventMoveGroup(payload).send(); } } diff --git a/frontend/app_flowy/lib/plugins/grid/application/setting/group_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/setting/group_bloc.dart index 60b7a2fc34..696e60c2fb 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/setting/group_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/setting/group_bloc.dart @@ -1,5 +1,5 @@ import 'package:appflowy_backend/log.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'dart:async'; @@ -74,14 +74,14 @@ class GridGroupEvent with _$GridGroupEvent { @freezed class GridGroupState with _$GridGroupState { const factory GridGroupState({ - required String gridId, + required String databaseId, required List fieldContexts, }) = _GridGroupState; factory GridGroupState.initial( - String gridId, List fieldContexts) => + String databaseId, List fieldContexts) => GridGroupState( - gridId: gridId, + databaseId: databaseId, fieldContexts: fieldContexts, ); } diff --git a/frontend/app_flowy/lib/plugins/grid/application/setting/property_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/setting/property_bloc.dart index a410ada4f3..3420d66830 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/setting/property_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/setting/property_bloc.dart @@ -13,9 +13,11 @@ class GridPropertyBloc extends Bloc { Function(List)? _onFieldsFn; GridPropertyBloc( - {required String gridId, required GridFieldController fieldController}) + {required String databaseId, + required GridFieldController fieldController}) : _fieldController = fieldController, - super(GridPropertyState.initial(gridId, fieldController.fieldInfos)) { + super( + GridPropertyState.initial(databaseId, fieldController.fieldInfos)) { on( (event, emit) async { await event.map( @@ -24,7 +26,7 @@ class GridPropertyBloc extends Bloc { }, setFieldVisibility: (_SetFieldVisibility value) async { final fieldService = - FieldService(gridId: gridId, fieldId: value.fieldId); + FieldService(databaseId: databaseId, fieldId: value.fieldId); final result = await fieldService.updateField(visibility: value.visibility); result.fold( @@ -76,16 +78,16 @@ class GridPropertyEvent with _$GridPropertyEvent { @freezed class GridPropertyState with _$GridPropertyState { const factory GridPropertyState({ - required String gridId, + required String databaseId, required List fieldContexts, }) = _GridPropertyState; factory GridPropertyState.initial( - String gridId, + String databaseId, List fieldContexts, ) => GridPropertyState( - gridId: gridId, + databaseId: databaseId, fieldContexts: fieldContexts, ); } diff --git a/frontend/app_flowy/lib/plugins/grid/application/setting/setting_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/setting/setting_bloc.dart index e384c48319..bb66f927a5 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/setting/setting_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/setting/setting_bloc.dart @@ -6,8 +6,9 @@ import 'package:dartz/dartz.dart'; part 'setting_bloc.freezed.dart'; class GridSettingBloc extends Bloc { - final String gridId; - GridSettingBloc({required this.gridId}) : super(GridSettingState.initial()) { + final String databaseId; + GridSettingBloc({required this.databaseId}) + : super(GridSettingState.initial()) { on( (event, emit) async { event.map(performAction: (_PerformAction value) { diff --git a/frontend/app_flowy/lib/plugins/grid/application/setting/setting_controller.dart b/frontend/app_flowy/lib/plugins/grid/application/setting/setting_controller.dart index 0c0527781a..c63b3155d0 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/setting/setting_controller.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/setting/setting_controller.dart @@ -1,24 +1,24 @@ import 'package:app_flowy/plugins/grid/application/setting/setting_service.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/setting_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/setting_entities.pb.dart'; import 'setting_listener.dart'; typedef OnError = void Function(FlowyError); -typedef OnSettingUpdated = void Function(GridSettingPB); +typedef OnSettingUpdated = void Function(DatabaseViewSettingPB); class SettingController { final String viewId; final SettingFFIService _ffiService; - final SettingListener _listener; + final DatabaseSettingListener _listener; OnSettingUpdated? _onSettingUpdated; OnError? _onError; - GridSettingPB? _setting; - GridSettingPB? get setting => _setting; + DatabaseViewSettingPB? _setting; + DatabaseViewSettingPB? get setting => _setting; SettingController({ required this.viewId, }) : _ffiService = SettingFFIService(viewId: viewId), - _listener = SettingListener(gridId: viewId) { + _listener = DatabaseSettingListener(databaseId: viewId) { // Load setting _ffiService.getSetting().then((result) { result.fold( @@ -46,7 +46,7 @@ class SettingController { _onError = onError; } - void updateSetting(GridSettingPB newSetting) { + void updateSetting(DatabaseViewSettingPB newSetting) { _setting = newSetting; _onSettingUpdated?.call(newSetting); } diff --git a/frontend/app_flowy/lib/plugins/grid/application/setting/setting_listener.dart b/frontend/app_flowy/lib/plugins/grid/application/setting/setting_listener.dart index e6ebd9b1b0..c933e1e06c 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/setting/setting_listener.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/setting/setting_listener.dart @@ -4,32 +4,33 @@ import 'package:app_flowy/core/grid_notification.dart'; import 'package:dartz/dartz.dart'; import 'package:flowy_infra/notifier.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/notification.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/setting_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/notification.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/setting_entities.pb.dart'; -typedef UpdateSettingNotifiedValue = Either; +typedef UpdateSettingNotifiedValue = Either; -class SettingListener { - final String gridId; - GridNotificationListener? _listener; +class DatabaseSettingListener { + final String databaseId; + DatabaseNotificationListener? _listener; PublishNotifier? _updateSettingNotifier = PublishNotifier(); - SettingListener({required this.gridId}); + DatabaseSettingListener({required this.databaseId}); void start({ required void Function(UpdateSettingNotifiedValue) onSettingUpdated, }) { _updateSettingNotifier?.addPublishListener(onSettingUpdated); - _listener = GridNotificationListener(objectId: gridId, handler: _handler); + _listener = + DatabaseNotificationListener(objectId: databaseId, handler: _handler); } - void _handler(GridNotification ty, Either result) { + void _handler(DatabaseNotification ty, Either result) { switch (ty) { - case GridNotification.DidUpdateGridSetting: + case DatabaseNotification.DidUpdateDatabaseSetting: result.fold( (payload) => _updateSettingNotifier?.value = left( - GridSettingPB.fromBuffer(payload), + DatabaseViewSettingPB.fromBuffer(payload), ), (error) => _updateSettingNotifier?.value = right(error), ); diff --git a/frontend/app_flowy/lib/plugins/grid/application/setting/setting_service.dart b/frontend/app_flowy/lib/plugins/grid/application/setting/setting_service.dart index cd43c824f1..183a7a8f5e 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/setting/setting_service.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/setting/setting_service.dart @@ -1,19 +1,19 @@ import 'package:dartz/dartz.dart'; import 'package:appflowy_backend/dispatch/dispatch.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/grid_entities.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/group.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/setting_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/grid_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/group.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/setting_entities.pb.dart'; class SettingFFIService { final String viewId; const SettingFFIService({required this.viewId}); - Future> getSetting() { - final payload = GridIdPB.create()..value = viewId; - return GridEventGetGridSetting(payload).send(); + Future> getSetting() { + final payload = DatabaseIdPB.create()..value = viewId; + return DatabaseEventGetDatabaseSetting(payload).send(); } Future> groupByField({ @@ -23,10 +23,10 @@ class SettingFFIService { final insertGroupPayload = InsertGroupPayloadPB.create() ..fieldId = fieldId ..fieldType = fieldType; - final payload = GridSettingChangesetPB.create() - ..gridId = viewId + final payload = DatabaseSettingChangesetPB.create() + ..databaseId = viewId ..insertGroup = insertGroupPayload; - return GridEventUpdateGridSetting(payload).send(); + return DatabaseEventUpdateDatabaseSetting(payload).send(); } } diff --git a/frontend/app_flowy/lib/plugins/grid/application/sort/sort_create_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/sort/sort_create_bloc.dart index 270a3c5182..b29ed99b1e 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/sort/sort_create_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/sort/sort_create_bloc.dart @@ -1,8 +1,8 @@ import 'package:app_flowy/plugins/grid/application/field/field_controller.dart'; import 'package:dartz/dartz.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pbserver.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/sort_entities.pbenum.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/sort_entities.pbserver.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/sort_entities.pbenum.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/sort_entities.pbserver.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'dart:async'; @@ -84,7 +84,7 @@ class CreateSortBloc extends Bloc { final result = await _ffiService.insertSort( fieldId: field.id, fieldType: field.fieldType, - condition: GridSortConditionPB.Ascending); + condition: SortConditionPB.Ascending); return result; } diff --git a/frontend/app_flowy/lib/plugins/grid/application/sort/sort_editor_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/sort/sort_editor_bloc.dart index 41a47fa9ba..9d279a1e66 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/sort/sort_editor_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/sort/sort_editor_bloc.dart @@ -1,8 +1,8 @@ import 'package:app_flowy/plugins/grid/application/field/field_controller.dart'; import 'package:app_flowy/plugins/grid/presentation/widgets/sort/sort_info.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/sort_entities.pbenum.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/sort_entities.pbenum.dart'; import 'package:appflowy_backend/log.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/sort_entities.pbserver.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/sort_entities.pbserver.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'dart:async'; @@ -40,8 +40,7 @@ class SortEditorBloc extends Bloc { ), ); }, - setCondition: - (SortInfo sortInfo, GridSortConditionPB condition) async { + setCondition: (SortInfo sortInfo, SortConditionPB condition) async { final result = await _ffiService.updateSort( fieldId: sortInfo.fieldInfo.id, sortId: sortInfo.sortId, @@ -102,7 +101,7 @@ class SortEditorEvent with _$SortEditorEvent { const factory SortEditorEvent.didReceiveSorts(List sortInfos) = _DidReceiveSorts; const factory SortEditorEvent.setCondition( - SortInfo sortInfo, GridSortConditionPB condition) = _SetCondition; + SortInfo sortInfo, SortConditionPB condition) = _SetCondition; const factory SortEditorEvent.deleteSort(SortInfo sortInfo) = _DeleteSort; const factory SortEditorEvent.deleteAllSorts() = _DeleteAllSorts; } diff --git a/frontend/app_flowy/lib/plugins/grid/application/sort/sort_listener.dart b/frontend/app_flowy/lib/plugins/grid/application/sort/sort_listener.dart index 8dce0c4da2..08a1241a71 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/sort/sort_listener.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/sort/sort_listener.dart @@ -4,15 +4,15 @@ import 'package:app_flowy/core/grid_notification.dart'; import 'package:flowy_infra/notifier.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; import 'package:dartz/dartz.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/notification.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/sort_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/notification.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/sort_entities.pb.dart'; typedef SortNotifiedValue = Either; class SortsListener { final String viewId; PublishNotifier? _notifier = PublishNotifier(); - GridNotificationListener? _listener; + DatabaseNotificationListener? _listener; SortsListener({required this.viewId}); @@ -20,18 +20,18 @@ class SortsListener { required void Function(SortNotifiedValue) onSortChanged, }) { _notifier?.addPublishListener(onSortChanged); - _listener = GridNotificationListener( + _listener = DatabaseNotificationListener( objectId: viewId, handler: _handler, ); } void _handler( - GridNotification ty, + DatabaseNotification ty, Either result, ) { switch (ty) { - case GridNotification.DidUpdateSort: + case DatabaseNotification.DidUpdateSort: result.fold( (payload) => _notifier?.value = left(SortChangesetNotificationPB.fromBuffer(payload)), diff --git a/frontend/app_flowy/lib/plugins/grid/application/sort/sort_service.dart b/frontend/app_flowy/lib/plugins/grid/application/sort/sort_service.dart index 6f0ed21514..a1fdecce07 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/sort/sort_service.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/sort/sort_service.dart @@ -2,10 +2,10 @@ import 'package:dartz/dartz.dart'; import 'package:appflowy_backend/dispatch/dispatch.dart'; import 'package:appflowy_backend/log.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/grid_entities.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/setting_entities.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/sort_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/grid_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/setting_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/sort_entities.pb.dart'; class SortFFIService { final String viewId; @@ -13,9 +13,9 @@ class SortFFIService { SortFFIService({required this.viewId}); Future, FlowyError>> getAllSorts() { - final payload = GridIdPB()..value = viewId; + final payload = DatabaseIdPB()..value = viewId; - return GridEventGetAllSorts(payload).send().then((result) { + return DatabaseEventGetAllSorts(payload).send().then((result) { return result.fold( (repeated) => left(repeated.items), (r) => right(r), @@ -27,7 +27,7 @@ class SortFFIService { required String fieldId, required String sortId, required FieldType fieldType, - required GridSortConditionPB condition, + required SortConditionPB condition, }) { var insertSortPayload = AlterSortPayloadPB.create() ..fieldId = fieldId @@ -36,10 +36,10 @@ class SortFFIService { ..condition = condition ..sortId = sortId; - final payload = GridSettingChangesetPB.create() - ..gridId = viewId + final payload = DatabaseSettingChangesetPB.create() + ..databaseId = viewId ..alterSort = insertSortPayload; - return GridEventUpdateGridSetting(payload).send().then((result) { + return DatabaseEventUpdateDatabaseSetting(payload).send().then((result) { return result.fold( (l) => left(l), (err) { @@ -53,7 +53,7 @@ class SortFFIService { Future> insertSort({ required String fieldId, required FieldType fieldType, - required GridSortConditionPB condition, + required SortConditionPB condition, }) { var insertSortPayload = AlterSortPayloadPB.create() ..fieldId = fieldId @@ -61,10 +61,10 @@ class SortFFIService { ..viewId = viewId ..condition = condition; - final payload = GridSettingChangesetPB.create() - ..gridId = viewId + final payload = DatabaseSettingChangesetPB.create() + ..databaseId = viewId ..alterSort = insertSortPayload; - return GridEventUpdateGridSetting(payload).send().then((result) { + return DatabaseEventUpdateDatabaseSetting(payload).send().then((result) { return result.fold( (l) => left(l), (err) { @@ -86,11 +86,11 @@ class SortFFIService { ..viewId = viewId ..fieldType = fieldType; - final payload = GridSettingChangesetPB.create() - ..gridId = viewId + final payload = DatabaseSettingChangesetPB.create() + ..databaseId = viewId ..deleteSort = deleteFilterPayload; - return GridEventUpdateGridSetting(payload).send().then((result) { + return DatabaseEventUpdateDatabaseSetting(payload).send().then((result) { return result.fold( (l) => left(l), (err) { @@ -102,8 +102,8 @@ class SortFFIService { } Future> deleteAllSorts() { - final payload = GridIdPB(value: viewId); - return GridEventDeleteAllSorts(payload).send().then((result) { + final payload = DatabaseIdPB(value: viewId); + return DatabaseEventDeleteAllSorts(payload).send().then((result) { return result.fold( (l) => left(l), (err) { diff --git a/frontend/app_flowy/lib/plugins/grid/application/view/grid_view_cache.dart b/frontend/app_flowy/lib/plugins/grid/application/view/grid_view_cache.dart index c79bfcac92..b32a4e064c 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/view/grid_view_cache.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/view/grid_view_cache.dart @@ -6,21 +6,21 @@ import '../field/field_controller.dart'; import '../row/row_cache.dart'; /// Read https://appflowy.gitbook.io/docs/essential-documentation/contribute-to-appflowy/architecture/frontend/grid for more information -class GridViewCache { - final String gridId; +class DatabaseViewCache { + final String databaseId; late GridRowCache _rowCache; final GridViewListener _gridViewListener; List get rowInfos => _rowCache.visibleRows; GridRowCache get rowCache => _rowCache; - GridViewCache({ - required this.gridId, + DatabaseViewCache({ + required this.databaseId, required GridFieldController fieldController, - }) : _gridViewListener = GridViewListener(viewId: gridId) { + }) : _gridViewListener = GridViewListener(viewId: databaseId) { final delegate = GridRowFieldNotifierImpl(fieldController); _rowCache = GridRowCache( - gridId: gridId, + databaseId: databaseId, rows: [], notifier: delegate, delegate: delegate, diff --git a/frontend/app_flowy/lib/plugins/grid/application/view/grid_view_listener.dart b/frontend/app_flowy/lib/plugins/grid/application/view/grid_view_listener.dart index 25cdc47d77..f8c6e3eb63 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/view/grid_view_listener.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/view/grid_view_listener.dart @@ -1,17 +1,17 @@ import 'dart:async'; import 'dart:typed_data'; import 'package:app_flowy/core/grid_notification.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/sort_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/sort_entities.pb.dart'; import 'package:dartz/dartz.dart'; import 'package:flowy_infra/notifier.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/notification.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/view_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/notification.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/view_entities.pb.dart'; typedef GridRowsVisibilityNotifierValue - = Either; + = Either; -typedef GridViewRowsNotifierValue = Either; +typedef GridViewRowsNotifierValue = Either; typedef GridViewReorderAllRowsNotifierValue = Either, FlowyError>; typedef GridViewSingleRowNotifierValue = Either; @@ -25,7 +25,7 @@ class GridViewListener { PublishNotifier? _rowsVisibility = PublishNotifier(); - GridNotificationListener? _listener; + DatabaseNotificationListener? _listener; GridViewListener({required this.viewId}); void start({ @@ -40,7 +40,7 @@ class GridViewListener { _listener?.stop(); } - _listener = GridNotificationListener( + _listener = DatabaseNotificationListener( objectId: viewId, handler: _handler, ); @@ -51,30 +51,30 @@ class GridViewListener { _reorderSingleRow?.addPublishListener(onReorderSingleRow); } - void _handler(GridNotification ty, Either result) { + void _handler(DatabaseNotification ty, Either result) { switch (ty) { - case GridNotification.DidUpdateGridViewRowsVisibility: + case DatabaseNotification.DidUpdateDatabaseViewRowsVisibility: result.fold( (payload) => _rowsVisibility?.value = - left(GridRowsVisibilityChangesetPB.fromBuffer(payload)), + left(ViewRowsVisibilityChangesetPB.fromBuffer(payload)), (error) => _rowsVisibility?.value = right(error), ); break; - case GridNotification.DidUpdateGridViewRows: + case DatabaseNotification.DidUpdateDatabaseViewRows: result.fold( (payload) => _rowsNotifier?.value = - left(GridViewRowsChangesetPB.fromBuffer(payload)), + left(ViewRowsChangesetPB.fromBuffer(payload)), (error) => _rowsNotifier?.value = right(error), ); break; - case GridNotification.DidReorderRows: + case DatabaseNotification.DidReorderRows: result.fold( (payload) => _reorderAllRows?.value = left(ReorderAllRowsPB.fromBuffer(payload).rowOrders), (error) => _reorderAllRows?.value = right(error), ); break; - case GridNotification.DidReorderSingleRow: + case DatabaseNotification.DidReorderSingleRow: result.fold( (payload) => _reorderSingleRow?.value = left(ReorderSingleRowPB.fromBuffer(payload)), diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/grid_page.dart b/frontend/app_flowy/lib/plugins/grid/presentation/grid_page.dart index fec15d0a55..d7237dac8d 100755 --- a/frontend/app_flowy/lib/plugins/grid/presentation/grid_page.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/grid_page.dart @@ -70,7 +70,7 @@ class _GridPageState extends State { )..add(const SortMenuEvent.initial()), ), BlocProvider( - create: (context) => GridSettingBloc(gridId: widget.view.id), + create: (context) => GridSettingBloc(databaseId: widget.view.id), ), ], child: BlocBuilder( @@ -146,8 +146,8 @@ class _FlowyGridState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ const GridToolbar(), - GridAccessoryMenu(viewId: state.gridId), - _gridHeader(context, state.gridId), + GridAccessoryMenu(viewId: state.databaseId), + _gridHeader(context, state.databaseId), Flexible(child: child), const RowCountBadge(), ], @@ -188,11 +188,11 @@ class _FlowyGridState extends State { ); } - Widget _gridHeader(BuildContext context, String gridId) { + Widget _gridHeader(BuildContext context, String viewId) { final fieldController = context.read().gridController.fieldController; return GridHeaderSliverAdaptor( - gridId: gridId, + viewId: viewId, fieldController: fieldController, anchorScrollController: headerScrollController, ); diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/cell/cell_builder.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/cell/cell_builder.dart index 541a137b6f..6eec3e3d29 100755 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/cell/cell_builder.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/cell/cell_builder.dart @@ -1,5 +1,5 @@ import 'package:app_flowy/plugins/grid/application/cell/cell_service/cell_service.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; import 'package:flutter/services.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter/material.dart'; diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/cell/date_cell/date_editor.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/cell/date_cell/date_editor.dart index d294d11518..f8de1b2e59 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/cell/date_cell/date_editor.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/cell/date_cell/date_editor.dart @@ -16,7 +16,7 @@ import 'package:flowy_infra_ui/widget/rounded_input_field.dart'; import 'package:flowy_infra_ui/widget/spacing.dart'; import 'package:appflowy_backend/log.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pbserver.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/date_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/date_type_option.pb.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:table_calendar/table_calendar.dart'; diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/cell/select_option_cell/extension.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/cell/select_option_cell/extension.dart index f374364dbb..155900e289 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/cell/select_option_cell/extension.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/cell/select_option_cell/extension.dart @@ -4,7 +4,7 @@ import 'package:flowy_infra/size.dart'; import 'package:flowy_infra_ui/style_widget/hover.dart'; import 'package:flowy_infra_ui/style_widget/icon_button.dart'; import 'package:flowy_infra_ui/style_widget/text.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/select_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart'; import 'package:flutter/material.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:app_flowy/generated/locale_keys.g.dart'; diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/cell/select_option_cell/select_option_cell.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/cell/select_option_cell/select_option_cell.dart index e30618dfd4..b601384169 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/cell/select_option_cell/select_option_cell.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/cell/select_option_cell/select_option_cell.dart @@ -5,7 +5,7 @@ import 'package:appflowy_popover/appflowy_popover.dart'; import 'package:flowy_infra_ui/flowy_infra_ui.dart'; // ignore: unused_import import 'package:appflowy_backend/log.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/select_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/cell/select_option_cell/select_option_editor.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/cell/select_option_cell/select_option_editor.dart index 68ab937881..60e1c5e835 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/cell/select_option_cell/select_option_editor.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/cell/select_option_cell/select_option_editor.dart @@ -10,7 +10,7 @@ import 'package:flowy_infra_ui/flowy_infra_ui.dart'; import 'package:flowy_infra_ui/style_widget/icon_button.dart'; import 'package:flowy_infra_ui/style_widget/scrolling/styled_list.dart'; import 'package:flowy_infra_ui/widget/spacing.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/select_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:easy_localization/easy_localization.dart'; diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/cell/select_option_cell/text_field.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/cell/select_option_cell/text_field.dart index 109c955de3..775283e56b 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/cell/select_option_cell/text_field.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/cell/select_option_cell/text_field.dart @@ -1,7 +1,7 @@ import 'dart:collection'; import 'package:flowy_infra/size.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/select_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:easy_localization/easy_localization.dart'; diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/choicechip/checkbox.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/choicechip/checkbox.dart index f7e8a369e1..794ea2f93f 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/choicechip/checkbox.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/choicechip/checkbox.dart @@ -9,7 +9,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flowy_infra/image.dart'; import 'package:flowy_infra_ui/flowy_infra_ui.dart'; import 'package:flowy_infra_ui/widget/spacing.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/checkbox_filter.pbenum.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/checkbox_filter.pbenum.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/choicechip/checklist/checklist.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/choicechip/checklist/checklist.dart index 154c502d37..1a71cccbf0 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/choicechip/checklist/checklist.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/choicechip/checklist/checklist.dart @@ -8,7 +8,7 @@ import 'package:appflowy_popover/appflowy_popover.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flowy_infra_ui/flowy_infra_ui.dart'; import 'package:flowy_infra_ui/widget/spacing.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/checklist_filter.pbenum.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/checklist_filter.pbenum.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import '../choicechip.dart'; diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/choicechip/select_option/condition_list.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/choicechip/select_option/condition_list.dart index 81819961f2..43255105e3 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/choicechip/select_option/condition_list.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/choicechip/select_option/condition_list.dart @@ -5,8 +5,8 @@ import 'package:app_flowy/workspace/presentation/widgets/pop_up_action.dart'; import 'package:appflowy_popover/appflowy_popover.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flowy_infra/image.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/select_option_filter.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/select_option_filter.pb.dart'; import 'package:flutter/material.dart'; class SelectOptionFilterConditionList extends StatelessWidget { diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/choicechip/select_option/option_list.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/choicechip/select_option/option_list.dart index 579c3debf8..197955bc85 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/choicechip/select_option/option_list.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/choicechip/select_option/option_list.dart @@ -5,8 +5,8 @@ import 'package:app_flowy/plugins/grid/presentation/widgets/filter/filter_info.d import 'package:flowy_infra/image.dart'; import 'package:flowy_infra_ui/style_widget/scrolling/styled_list.dart'; import 'package:flowy_infra_ui/widget/spacing.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pbenum.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/select_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pbenum.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/choicechip/select_option/select_option.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/choicechip/select_option/select_option.dart index 0a7d6937ac..dbad373242 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/choicechip/select_option/select_option.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/choicechip/select_option/select_option.dart @@ -5,8 +5,8 @@ import 'package:appflowy_popover/appflowy_popover.dart'; import 'package:flowy_infra_ui/flowy_infra_ui.dart'; import 'package:flowy_infra_ui/style_widget/scrolling/styled_list.dart'; import 'package:flowy_infra_ui/widget/spacing.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/select_option_filter.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/select_option_filter.pb.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/choicechip/select_option/select_option_loader.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/choicechip/select_option/select_option_loader.dart index 8997c0e288..815fd03480 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/choicechip/select_option/select_option_loader.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/choicechip/select_option/select_option_loader.dart @@ -2,7 +2,7 @@ import 'package:app_flowy/plugins/grid/application/field/type_option/type_option import 'package:app_flowy/plugins/grid/presentation/widgets/filter/filter_info.dart'; import 'package:app_flowy/plugins/grid/presentation/widgets/header/type_option/builder.dart'; import 'package:appflowy_backend/log.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/select_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart'; abstract class SelectOptionFilterDelegate { Future> loadOptions(); @@ -14,7 +14,7 @@ class SingleSelectOptionFilterDelegateImpl SingleSelectOptionFilterDelegateImpl(FilterInfo filterInfo) : typeOptionContext = makeSingleSelectTypeOptionContext( - gridId: filterInfo.viewId, + databaseId: filterInfo.viewId, fieldPB: filterInfo.fieldInfo.field, ); @@ -34,7 +34,7 @@ class MultiSelectOptionFilterDelegateImpl MultiSelectOptionFilterDelegateImpl(FilterInfo filterInfo) : typeOptionContext = makeMultiSelectTypeOptionContext( - gridId: filterInfo.viewId, + databaseId: filterInfo.viewId, fieldPB: filterInfo.fieldInfo.field, ); diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/choicechip/text.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/choicechip/text.dart index 518577add5..45169cca54 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/choicechip/text.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/choicechip/text.dart @@ -9,7 +9,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flowy_infra/image.dart'; import 'package:flowy_infra_ui/flowy_infra_ui.dart'; import 'package:flowy_infra_ui/widget/spacing.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/text_filter.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/text_filter.pb.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'choicechip.dart'; diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/filter_info.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/filter_info.dart index 84d8297be6..5f991b28c7 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/filter_info.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/filter_info.dart @@ -1,11 +1,11 @@ import 'package:app_flowy/plugins/grid/application/field/field_controller.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/checkbox_filter.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/checklist_filter.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/date_filter.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/select_option_filter.pbserver.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/text_filter.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/util.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/checkbox_filter.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/checklist_filter.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/date_filter.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/select_option_filter.pbserver.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/text_filter.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/util.pb.dart'; class FilterInfo { final String viewId; diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/filter_menu_item.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/filter_menu_item.dart index e704de7c05..26f699bfc9 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/filter_menu_item.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/filter/filter_menu_item.dart @@ -1,4 +1,4 @@ -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pbenum.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pbenum.dart'; import 'package:flutter/material.dart'; import 'choicechip/checkbox.dart'; diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/field_cell.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/field_cell.dart index d10f1c5759..293a09146f 100755 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/field_cell.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/field_cell.dart @@ -4,7 +4,7 @@ import 'package:flowy_infra/theme_extension.dart'; import 'package:flowy_infra_ui/flowy_infra_ui.dart'; import 'package:flowy_infra_ui/style_widget/button.dart'; import 'package:flowy_infra_ui/style_widget/hover.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/field_cell_action_sheet.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/field_cell_action_sheet.dart index bf0e655e69..c6ef75ff6a 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/field_cell_action_sheet.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/field_cell_action_sheet.dart @@ -35,10 +35,10 @@ class _GridFieldCellActionSheetState extends State { return SizedBox( width: 400, child: FieldEditor( - gridId: widget.cellContext.gridId, + databaseId: widget.cellContext.databaseId, fieldName: field.name, typeOptionLoader: FieldTypeOptionLoader( - gridId: widget.cellContext.gridId, + databaseId: widget.cellContext.databaseId, field: field, ), ), @@ -206,7 +206,7 @@ extension _FieldActionExtension on FieldAction { PopoverContainer.of(context).close(); FieldService( - gridId: fieldInfo.gridId, + databaseId: fieldInfo.databaseId, fieldId: fieldInfo.field.id, ).duplicateField(); @@ -218,7 +218,7 @@ extension _FieldActionExtension on FieldAction { title: LocaleKeys.grid_field_deleteFieldPromptMessage.tr(), confirm: () { FieldService( - gridId: fieldInfo.gridId, + databaseId: fieldInfo.databaseId, fieldId: fieldInfo.field.id, ).deleteField(); }, diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/field_editor.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/field_editor.dart index dda344b8eb..f2099be7b5 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/field_editor.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/field_editor.dart @@ -15,14 +15,14 @@ import 'package:app_flowy/generated/locale_keys.g.dart'; import 'field_type_option_editor.dart'; class FieldEditor extends StatefulWidget { - final String gridId; + final String databaseId; final String fieldName; final bool isGroupField; final Function(String)? onDeleted; final IFieldTypeOptionLoader typeOptionLoader; const FieldEditor({ - required this.gridId, + required this.databaseId, this.fieldName = "", required this.typeOptionLoader, this.isGroupField = false, @@ -59,7 +59,7 @@ class _FieldEditorState extends State { ]; return BlocProvider( create: (context) => FieldEditorBloc( - gridId: widget.gridId, + databaseId: widget.databaseId, fieldName: widget.fieldName, isGroupField: widget.isGroupField, loader: widget.typeOptionLoader, diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/field_type_extension.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/field_type_extension.dart index df7699ff15..1ff4c55600 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/field_type_extension.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/field_type_extension.dart @@ -1,6 +1,6 @@ import 'package:app_flowy/generated/locale_keys.g.dart'; import 'package:easy_localization/easy_localization.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; extension FieldTypeListExtension on FieldType { String iconName() { diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/field_type_list.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/field_type_list.dart index c5719327f1..197b15a60e 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/field_type_list.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/field_type_list.dart @@ -4,7 +4,7 @@ import 'package:flowy_infra_ui/flowy_infra_ui.dart'; import 'package:flowy_infra_ui/style_widget/button.dart'; import 'package:flowy_infra_ui/style_widget/scrolling/styled_list.dart'; import 'package:flowy_infra_ui/widget/spacing.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; import 'package:flutter/material.dart'; import '../../layout/sizes.dart'; import 'field_type_extension.dart'; diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/field_type_option_editor.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/field_type_option_editor.dart index afb1e53542..8e5c4046e9 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/field_type_option_editor.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/field_type_option_editor.dart @@ -6,7 +6,7 @@ import 'package:flowy_infra/image.dart'; import 'package:flowy_infra_ui/flowy_infra_ui.dart'; import 'package:flowy_infra_ui/style_widget/button.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:app_flowy/plugins/grid/application/prelude.dart'; diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/grid_header.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/grid_header.dart index d9f644a77b..2fea122b95 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/grid_header.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/grid_header.dart @@ -9,7 +9,7 @@ import 'package:flowy_infra/theme_extension.dart'; import 'package:flowy_infra/image.dart'; import 'package:flowy_infra_ui/flowy_infra_ui.dart'; import 'package:flowy_infra_ui/style_widget/button.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:reorderables/reorderables.dart'; @@ -18,11 +18,11 @@ import 'field_editor.dart'; import 'field_cell.dart'; class GridHeaderSliverAdaptor extends StatefulWidget { - final String gridId; + final String viewId; final GridFieldController fieldController; final ScrollController anchorScrollController; const GridHeaderSliverAdaptor({ - required this.gridId, + required this.viewId, required this.fieldController, required this.anchorScrollController, Key? key, @@ -39,7 +39,7 @@ class _GridHeaderSliverAdaptorState extends State { return BlocProvider( create: (context) { final bloc = getIt( - param1: widget.gridId, param2: widget.fieldController); + param1: widget.viewId, param2: widget.fieldController); bloc.add(const GridHeaderEvent.initial()); return bloc; }, @@ -52,7 +52,7 @@ class _GridHeaderSliverAdaptorState extends State { controller: widget.anchorScrollController, child: SizedBox( height: GridSize.headerHeight, - child: _GridHeader(gridId: widget.gridId), + child: _GridHeader(viewId: widget.viewId), ), ); @@ -68,8 +68,8 @@ class _GridHeaderSliverAdaptorState extends State { } class _GridHeader extends StatefulWidget { - final String gridId; - const _GridHeader({Key? key, required this.gridId}) : super(key: key); + final String viewId; + const _GridHeader({Key? key, required this.viewId}) : super(key: key); @override State<_GridHeader> createState() => _GridHeaderState(); @@ -98,8 +98,8 @@ class _GridHeaderState extends State<_GridHeader> { builder: (context, state) { final cells = state.fields .where((field) => field.visibility) - .map((field) => - GridFieldCellContext(gridId: widget.gridId, field: field.field)) + .map((field) => GridFieldCellContext( + databaseId: widget.viewId, field: field.field)) .map((ctx) => GridFieldCell(key: _getKeyById(ctx.field.id), cellContext: ctx)) .toList(); @@ -112,7 +112,7 @@ class _GridHeaderState extends State<_GridHeader> { scrollController: ScrollController(), header: const _CellLeading(), needsLongPressDraggable: false, - footer: _CellTrailing(gridId: widget.gridId), + footer: _CellTrailing(databaseId: widget.viewId), onReorder: (int oldIndex, int newIndex) { _onReorder(cells, oldIndex, context, newIndex); }, @@ -147,8 +147,8 @@ class _CellLeading extends StatelessWidget { } class _CellTrailing extends StatelessWidget { - final String gridId; - const _CellTrailing({required this.gridId, Key? key}) : super(key: key); + final String databaseId; + const _CellTrailing({required this.databaseId, Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -160,14 +160,15 @@ class _CellTrailing extends StatelessWidget { border: Border(top: borderSide, bottom: borderSide), ), padding: GridSize.headerContentInsets, - child: CreateFieldButton(gridId: gridId), + child: CreateFieldButton(databaseId: databaseId), ); } } class CreateFieldButton extends StatelessWidget { - final String gridId; - const CreateFieldButton({required this.gridId, Key? key}) : super(key: key); + final String databaseId; + const CreateFieldButton({required this.databaseId, Key? key}) + : super(key: key); @override Widget build(BuildContext context) { @@ -187,8 +188,8 @@ class CreateFieldButton extends StatelessWidget { ), popupBuilder: (BuildContext popover) { return FieldEditor( - gridId: gridId, - typeOptionLoader: NewFieldTypeOptionLoader(gridId: gridId), + databaseId: databaseId, + typeOptionLoader: NewFieldTypeOptionLoader(databaseId: databaseId), ); }, ); @@ -206,7 +207,7 @@ class SliverHeaderDelegateImplementation @override Widget build( BuildContext context, double shrinkOffset, bool overlapsContent) { - return _GridHeader(gridId: gridId); + return _GridHeader(viewId: gridId); } @override diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/builder.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/builder.dart index 1de689d138..de8648b0e1 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/builder.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/builder.dart @@ -4,16 +4,16 @@ import 'package:app_flowy/plugins/grid/application/field/field_controller.dart'; import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_context.dart'; import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_data_controller.dart'; import 'package:appflowy_popover/appflowy_popover.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/checkbox_type_option.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/checklist_type_option.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/date_type_option.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/multi_select_type_option.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/number_type_option.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/single_select_type_option.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/text_type_option.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/url_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/checkbox_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/checklist_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/date_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/multi_select_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/number_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/single_select_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/text_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/url_type_option.pb.dart'; import 'package:protobuf/protobuf.dart' hide FieldInfo; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; import 'package:flutter/material.dart'; import 'checkbox.dart'; import 'checklist.dart'; @@ -62,14 +62,14 @@ TypeOptionWidgetBuilder makeTypeOptionWidgetBuilder({ required TypeOptionDataController dataController, required PopoverMutex popoverMutex, }) { - final gridId = dataController.gridId; + final databaseId = dataController.databaseId; final fieldType = dataController.field.fieldType; switch (dataController.field.fieldType) { case FieldType.Checkbox: return CheckboxTypeOptionWidgetBuilder( makeTypeOptionContextWithDataController( - gridId: gridId, + databaseId: databaseId, fieldType: fieldType, dataController: dataController, ), @@ -77,7 +77,7 @@ TypeOptionWidgetBuilder makeTypeOptionWidgetBuilder({ case FieldType.DateTime: return DateTypeOptionWidgetBuilder( makeTypeOptionContextWithDataController( - gridId: gridId, + databaseId: databaseId, fieldType: fieldType, dataController: dataController, ), @@ -85,7 +85,7 @@ TypeOptionWidgetBuilder makeTypeOptionWidgetBuilder({ case FieldType.SingleSelect: return SingleSelectTypeOptionWidgetBuilder( makeTypeOptionContextWithDataController( - gridId: gridId, + databaseId: databaseId, fieldType: fieldType, dataController: dataController, ), @@ -94,7 +94,7 @@ TypeOptionWidgetBuilder makeTypeOptionWidgetBuilder({ case FieldType.MultiSelect: return MultiSelectTypeOptionWidgetBuilder( makeTypeOptionContextWithDataController( - gridId: gridId, + databaseId: databaseId, fieldType: fieldType, dataController: dataController, ), @@ -103,7 +103,7 @@ TypeOptionWidgetBuilder makeTypeOptionWidgetBuilder({ case FieldType.Number: return NumberTypeOptionWidgetBuilder( makeTypeOptionContextWithDataController( - gridId: gridId, + databaseId: databaseId, fieldType: fieldType, dataController: dataController, ), @@ -112,7 +112,7 @@ TypeOptionWidgetBuilder makeTypeOptionWidgetBuilder({ case FieldType.RichText: return RichTextTypeOptionWidgetBuilder( makeTypeOptionContextWithDataController( - gridId: gridId, + databaseId: databaseId, fieldType: fieldType, dataController: dataController, ), @@ -121,7 +121,7 @@ TypeOptionWidgetBuilder makeTypeOptionWidgetBuilder({ case FieldType.URL: return URLTypeOptionWidgetBuilder( makeTypeOptionContextWithDataController( - gridId: gridId, + databaseId: databaseId, fieldType: fieldType, dataController: dataController, ), @@ -130,7 +130,7 @@ TypeOptionWidgetBuilder makeTypeOptionWidgetBuilder({ case FieldType.Checklist: return ChecklistTypeOptionWidgetBuilder( makeTypeOptionContextWithDataController( - gridId: gridId, + databaseId: databaseId, fieldType: fieldType, dataController: dataController, ), @@ -140,50 +140,51 @@ TypeOptionWidgetBuilder makeTypeOptionWidgetBuilder({ } TypeOptionContext makeTypeOptionContext({ - required String gridId, + required String databaseId, required FieldInfo fieldInfo, }) { - final loader = FieldTypeOptionLoader(gridId: gridId, field: fieldInfo.field); + final loader = + FieldTypeOptionLoader(databaseId: databaseId, field: fieldInfo.field); final dataController = TypeOptionDataController( - gridId: gridId, + databaseId: databaseId, loader: loader, fieldInfo: fieldInfo, ); return makeTypeOptionContextWithDataController( - gridId: gridId, + databaseId: databaseId, fieldType: fieldInfo.fieldType, dataController: dataController, ); } TypeOptionContext makeSingleSelectTypeOptionContext({ - required String gridId, + required String databaseId, required FieldPB fieldPB, }) { - return makeSelectTypeOptionContext(gridId: gridId, fieldPB: fieldPB); + return makeSelectTypeOptionContext(databaseId: databaseId, fieldPB: fieldPB); } TypeOptionContext makeMultiSelectTypeOptionContext({ - required String gridId, + required String databaseId, required FieldPB fieldPB, }) { - return makeSelectTypeOptionContext(gridId: gridId, fieldPB: fieldPB); + return makeSelectTypeOptionContext(databaseId: databaseId, fieldPB: fieldPB); } TypeOptionContext makeSelectTypeOptionContext({ - required String gridId, + required String databaseId, required FieldPB fieldPB, }) { final loader = FieldTypeOptionLoader( - gridId: gridId, + databaseId: databaseId, field: fieldPB, ); final dataController = TypeOptionDataController( - gridId: gridId, + databaseId: databaseId, loader: loader, ); final typeOptionContext = makeTypeOptionContextWithDataController( - gridId: gridId, + databaseId: databaseId, fieldType: fieldPB.fieldType, dataController: dataController, ); @@ -192,7 +193,7 @@ TypeOptionContext makeSelectTypeOptionContext({ TypeOptionContext makeTypeOptionContextWithDataController({ - required String gridId, + required String databaseId, required FieldType fieldType, required TypeOptionDataController dataController, }) { diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/date.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/date.dart index ae4db4b91b..2f9a36b801 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/date.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/date.dart @@ -8,7 +8,7 @@ import 'package:flowy_infra/image.dart'; import 'package:flowy_infra_ui/flowy_infra_ui.dart'; import 'package:flowy_infra_ui/style_widget/button.dart'; import 'package:flowy_infra_ui/widget/spacing.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/date_type_option_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/date_type_option_entities.pb.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:appflowy_popover/appflowy_popover.dart'; diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/multi_select.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/multi_select.dart index a3982e6331..9d6826f993 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/multi_select.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/multi_select.dart @@ -16,7 +16,7 @@ class MultiSelectTypeOptionWidgetBuilder extends TypeOptionWidgetBuilder { ) : _widget = MultiSelectTypeOptionWidget( selectOptionAction: MultiSelectAction( fieldId: typeOptionContext.fieldId, - gridId: typeOptionContext.gridId, + databaseId: typeOptionContext.databaseId, typeOptionContext: typeOptionContext, ), popoverMutex: popoverMutex, diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/number.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/number.dart index ab57580e6b..ddf76a4d82 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/number.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/number.dart @@ -6,7 +6,7 @@ import 'package:flowy_infra/image.dart'; import 'package:flowy_infra_ui/flowy_infra_ui.dart'; import 'package:flowy_infra_ui/style_widget/button.dart'; import 'package:flowy_infra_ui/widget/spacing.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/format.pbenum.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/format.pbenum.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:easy_localization/easy_localization.dart' hide NumberFormat; diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/select_option.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/select_option.dart index 297a91e359..eb7f78466a 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/select_option.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/select_option.dart @@ -4,7 +4,7 @@ import 'package:flowy_infra/image.dart'; import 'package:flowy_infra_ui/flowy_infra_ui.dart'; import 'package:flowy_infra_ui/style_widget/button.dart'; import 'package:flowy_infra_ui/widget/spacing.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/select_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:easy_localization/easy_localization.dart'; diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/select_option_editor.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/select_option_editor.dart index 97edfbf3c8..7455410195 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/select_option_editor.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/select_option_editor.dart @@ -6,7 +6,7 @@ import 'package:flowy_infra_ui/style_widget/scrolling/styled_list.dart'; import 'package:flowy_infra_ui/style_widget/text.dart'; import 'package:flowy_infra_ui/style_widget/text_field.dart'; import 'package:flowy_infra_ui/widget/spacing.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/select_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:easy_localization/easy_localization.dart'; diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/single_select.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/single_select.dart index 37431128ea..8859196647 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/single_select.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/single_select.dart @@ -15,7 +15,7 @@ class SingleSelectTypeOptionWidgetBuilder extends TypeOptionWidgetBuilder { ) : _widget = SingleSelectTypeOptionWidget( selectOptionAction: SingleSelectAction( fieldId: singleSelectTypeOption.fieldId, - gridId: singleSelectTypeOption.gridId, + databaseId: singleSelectTypeOption.databaseId, typeOptionContext: singleSelectTypeOption, ), popoverMutex: popoverMutex, diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/row/row_detail.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/row/row_detail.dart index ca28a2b138..268fe50c99 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/row/row_detail.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/row/row_detail.dart @@ -12,7 +12,7 @@ import 'package:flowy_infra_ui/style_widget/scrolling/styled_scroll_bar.dart'; import 'package:flowy_infra_ui/widget/spacing.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:app_flowy/generated/locale_keys.g.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:appflowy_popover/appflowy_popover.dart'; @@ -66,7 +66,7 @@ class _RowDetailPageState extends State { Expanded( child: _PropertyList( cellBuilder: widget.cellBuilder, - viewId: widget.dataController.rowInfo.gridId, + viewId: widget.dataController.rowInfo.databaseId, ), ), ], @@ -205,8 +205,8 @@ class _CreateFieldButtonState extends State<_CreateFieldButton> { ), popupBuilder: (BuildContext popOverContext) { return FieldEditor( - gridId: widget.viewId, - typeOptionLoader: NewFieldTypeOptionLoader(gridId: widget.viewId), + databaseId: widget.viewId, + typeOptionLoader: NewFieldTypeOptionLoader(databaseId: widget.viewId), onDeleted: (fieldId) { popoverController.close(); @@ -296,11 +296,11 @@ class _RowDetailCellState extends State<_RowDetailCell> { Widget buildFieldEditor() { return FieldEditor( - gridId: widget.cellId.gridId, + databaseId: widget.cellId.databaseId, fieldName: widget.cellId.fieldInfo.field.name, isGroupField: widget.cellId.fieldInfo.isGroupField, typeOptionLoader: FieldTypeOptionLoader( - gridId: widget.cellId.gridId, + databaseId: widget.cellId.databaseId, field: widget.cellId.fieldInfo.field, ), onDeleted: (fieldId) { diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/sort/order_panel.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/sort/order_panel.dart index 5adb6313b3..b541226c1e 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/sort/order_panel.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/sort/order_panel.dart @@ -1,18 +1,18 @@ import 'package:app_flowy/generated/locale_keys.g.dart'; import 'package:app_flowy/plugins/grid/presentation/layout/sizes.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/sort_entities.pbenum.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/sort_entities.pbenum.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flowy_infra_ui/style_widget/button.dart'; import 'package:flowy_infra_ui/style_widget/text.dart'; import 'package:flutter/material.dart'; class OrderPanel extends StatelessWidget { - final Function(GridSortConditionPB) onCondition; + final Function(SortConditionPB) onCondition; const OrderPanel({required this.onCondition, Key? key}) : super(key: key); @override Widget build(BuildContext context) { - final List children = GridSortConditionPB.values.map((condition) { + final List children = SortConditionPB.values.map((condition) { return SizedBox( height: GridSize.popoverItemHeight, child: FlowyButton( @@ -34,11 +34,11 @@ class OrderPanel extends StatelessWidget { ); } - String textFromCondition(GridSortConditionPB condition) { + String textFromCondition(SortConditionPB condition) { switch (condition) { - case GridSortConditionPB.Ascending: + case SortConditionPB.Ascending: return LocaleKeys.grid_sort_ascending.tr(); - case GridSortConditionPB.Descending: + case SortConditionPB.Descending: return LocaleKeys.grid_sort_descending.tr(); } return ""; diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/sort/sort_editor.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/sort/sort_editor.dart index 6b23dac49b..e34b7a8a4c 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/sort/sort_editor.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/sort/sort_editor.dart @@ -4,7 +4,7 @@ import 'package:app_flowy/plugins/grid/application/sort/sort_editor_bloc.dart'; import 'package:app_flowy/plugins/grid/application/sort/util.dart'; import 'package:app_flowy/plugins/grid/presentation/layout/sizes.dart'; import 'package:app_flowy/plugins/grid/presentation/widgets/sort/create_sort_list.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/sort_entities.pbenum.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/sort_entities.pbenum.dart'; import 'package:appflowy_popover/appflowy_popover.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flowy_infra/image.dart'; @@ -143,11 +143,11 @@ class _SortItem extends StatelessWidget { ); } - String textFromCondition(GridSortConditionPB condition) { + String textFromCondition(SortConditionPB condition) { switch (condition) { - case GridSortConditionPB.Ascending: + case SortConditionPB.Ascending: return LocaleKeys.grid_sort_ascending.tr(); - case GridSortConditionPB.Descending: + case SortConditionPB.Descending: return LocaleKeys.grid_sort_descending.tr(); } return ""; @@ -281,11 +281,11 @@ class _OrderButtonState extends State<_OrderButton> { ); } - String textFromCondition(GridSortConditionPB condition) { + String textFromCondition(SortConditionPB condition) { switch (condition) { - case GridSortConditionPB.Ascending: + case SortConditionPB.Ascending: return LocaleKeys.grid_sort_ascending.tr(); - case GridSortConditionPB.Descending: + case SortConditionPB.Descending: return LocaleKeys.grid_sort_descending.tr(); } return ""; diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/sort/sort_info.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/sort/sort_info.dart index b6aa02987f..8e11ce3186 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/sort/sort_info.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/sort/sort_info.dart @@ -1,5 +1,5 @@ import 'package:app_flowy/plugins/grid/application/field/field_controller.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/sort_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/sort_entities.pb.dart'; class SortInfo { final SortPB sortPB; diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/toolbar/grid_property.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/toolbar/grid_property.dart index b4b36b9f76..f49d2301a0 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/toolbar/grid_property.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/toolbar/grid_property.dart @@ -17,10 +17,10 @@ import '../../../application/field/field_controller.dart'; import '../../layout/sizes.dart'; class GridPropertyList extends StatefulWidget { - final String gridId; + final String databaseId; final GridFieldController fieldController; const GridPropertyList({ - required this.gridId, + required this.databaseId, required this.fieldController, Key? key, }) : super(key: key); @@ -42,14 +42,14 @@ class _GridPropertyListState extends State { Widget build(BuildContext context) { return BlocProvider( create: (context) => getIt( - param1: widget.gridId, param2: widget.fieldController) + param1: widget.databaseId, param2: widget.fieldController) ..add(const GridPropertyEvent.initial()), child: BlocBuilder( builder: (context, state) { final cells = state.fieldContexts.map((field) { return _GridPropertyCell( popoverMutex: _popoverMutex, - gridId: widget.gridId, + databaseId: widget.databaseId, fieldInfo: field, key: ValueKey(field.id), ); @@ -72,11 +72,11 @@ class _GridPropertyListState extends State { class _GridPropertyCell extends StatefulWidget { final FieldInfo fieldInfo; - final String gridId; + final String databaseId; final PopoverMutex popoverMutex; const _GridPropertyCell({ - required this.gridId, + required this.databaseId, required this.fieldInfo, required this.popoverMutex, Key? key, @@ -136,10 +136,10 @@ class _GridPropertyCellState extends State<_GridPropertyCell> { ).padding(horizontal: 6.0), popupBuilder: (BuildContext context) { return FieldEditor( - gridId: widget.gridId, + databaseId: widget.databaseId, fieldName: widget.fieldInfo.name, typeOptionLoader: FieldTypeOptionLoader( - gridId: widget.gridId, + databaseId: widget.databaseId, field: widget.fieldInfo.field, ), ); diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/toolbar/grid_setting.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/toolbar/grid_setting.dart index 1c8529cf94..c01e6925ca 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/toolbar/grid_setting.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/toolbar/grid_setting.dart @@ -12,11 +12,11 @@ import '../../../application/field/field_controller.dart'; import '../../layout/sizes.dart'; class GridSettingContext { - final String gridId; + final String viewId; final GridFieldController fieldController; GridSettingContext({ - required this.gridId, + required this.viewId, required this.fieldController, }); } diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/toolbar/grid_toolbar.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/toolbar/grid_toolbar.dart index f73fd9d1aa..0d4b6e7966 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/toolbar/grid_toolbar.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/toolbar/grid_toolbar.dart @@ -7,10 +7,10 @@ import 'filter_button.dart'; import 'setting_button.dart'; class GridToolbarContext { - final String gridId; + final String viewId; final GridFieldController fieldController; GridToolbarContext({ - required this.gridId, + required this.viewId, required this.fieldController, }); } diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/toolbar/setting_button.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/toolbar/setting_button.dart index 75224922dc..c7077734ff 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/toolbar/setting_button.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/toolbar/setting_button.dart @@ -37,7 +37,7 @@ class _SettingButtonState extends State { final fieldController = context.read().gridController.fieldController; return GridSettingContext( - gridId: state.gridId, + viewId: state.databaseId, fieldController: fieldController, ); }, @@ -82,7 +82,7 @@ class _GridSettingListPopoverState extends State<_GridSettingListPopover> { Widget build(BuildContext context) { if (_action == GridSettingAction.showProperties) { return GridPropertyList( - gridId: widget.settingContext.gridId, + databaseId: widget.settingContext.viewId, fieldController: widget.settingContext.fieldController, ); } diff --git a/frontend/app_flowy/lib/startup/deps_resolver.dart b/frontend/app_flowy/lib/startup/deps_resolver.dart index 71ff5e07dc..6628b913f8 100644 --- a/frontend/app_flowy/lib/startup/deps_resolver.dart +++ b/frontend/app_flowy/lib/startup/deps_resolver.dart @@ -142,8 +142,8 @@ void _resolveDocDeps(GetIt getIt) { void _resolveGridDeps(GetIt getIt) { getIt.registerFactoryParam( - (gridId, fieldController) => GridHeaderBloc( - gridId: gridId, + (databaseId, fieldController) => GridHeaderBloc( + databaseId: databaseId, fieldController: fieldController, ), ); @@ -185,6 +185,7 @@ void _resolveGridDeps(GetIt getIt) { ); getIt.registerFactoryParam( - (gridId, cache) => GridPropertyBloc(gridId: gridId, fieldController: cache), + (databaseId, cache) => + GridPropertyBloc(databaseId: databaseId, fieldController: cache), ); } diff --git a/frontend/app_flowy/packages/appflowy_backend/lib/dispatch/dispatch.dart b/frontend/app_flowy/packages/appflowy_backend/lib/dispatch/dispatch.dart index 6e95e5c9a1..6e2829659e 100644 --- a/frontend/app_flowy/packages/appflowy_backend/lib/dispatch/dispatch.dart +++ b/frontend/app_flowy/packages/appflowy_backend/lib/dispatch/dispatch.dart @@ -17,7 +17,7 @@ import 'package:appflowy_backend/protobuf/flowy-user/protobuf.dart'; import 'package:appflowy_backend/protobuf/dart-ffi/protobuf.dart'; import 'package:appflowy_backend/protobuf/flowy-folder/protobuf.dart'; import 'package:appflowy_backend/protobuf/flowy-document/protobuf.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/protobuf.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/protobuf.dart'; // ignore: unused_import import 'package:protobuf/protobuf.dart'; @@ -28,7 +28,7 @@ import 'error.dart'; part 'dart_event/flowy-folder/dart_event.dart'; part 'dart_event/flowy-net/dart_event.dart'; part 'dart_event/flowy-user/dart_event.dart'; -part 'dart_event/flowy-grid/dart_event.dart'; +part 'dart_event/flowy-database/dart_event.dart'; part 'dart_event/flowy-document/dart_event.dart'; enum FFIException { diff --git a/frontend/app_flowy/test/bloc_test/board_test/create_or_edit_field_test.dart b/frontend/app_flowy/test/bloc_test/board_test/create_or_edit_field_test.dart index 9e871d297e..f21550b2c2 100644 --- a/frontend/app_flowy/test/bloc_test/board_test/create_or_edit_field_test.dart +++ b/frontend/app_flowy/test/bloc_test/board_test/create_or_edit_field_test.dart @@ -1,7 +1,7 @@ import 'package:app_flowy/plugins/board/application/board_bloc.dart'; import 'package:app_flowy/plugins/grid/application/field/field_editor_bloc.dart'; import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_context.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; import 'package:flutter_test/flutter_test.dart'; import 'util.dart'; @@ -30,12 +30,12 @@ void main() { final fieldInfo = context.singleSelectFieldContext(); final loader = FieldTypeOptionLoader( - gridId: context.gridView.id, + databaseId: context.gridView.id, field: fieldInfo.field, ); final editorBloc = FieldEditorBloc( - gridId: context.gridView.id, + databaseId: context.gridView.id, fieldName: fieldInfo.name, isGroupField: fieldInfo.isGroupField, loader: loader, diff --git a/frontend/app_flowy/test/bloc_test/board_test/group_by_checkbox_field_test.dart b/frontend/app_flowy/test/bloc_test/board_test/group_by_checkbox_field_test.dart index 4bd2addf2e..0a971cff0d 100644 --- a/frontend/app_flowy/test/bloc_test/board_test/group_by_checkbox_field_test.dart +++ b/frontend/app_flowy/test/bloc_test/board_test/group_by_checkbox_field_test.dart @@ -1,6 +1,6 @@ import 'package:app_flowy/plugins/board/application/board_bloc.dart'; import 'package:app_flowy/plugins/grid/application/setting/group_bloc.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; import 'package:flutter_test/flutter_test.dart'; import 'util.dart'; diff --git a/frontend/app_flowy/test/bloc_test/board_test/group_by_multi_select_field_test.dart b/frontend/app_flowy/test/bloc_test/board_test/group_by_multi_select_field_test.dart index 7e3d3523e2..f9f7af678e 100644 --- a/frontend/app_flowy/test/bloc_test/board_test/group_by_multi_select_field_test.dart +++ b/frontend/app_flowy/test/bloc_test/board_test/group_by_multi_select_field_test.dart @@ -2,7 +2,7 @@ import 'package:app_flowy/plugins/board/application/board_bloc.dart'; import 'package:app_flowy/plugins/grid/application/cell/cell_service/cell_service.dart'; import 'package:app_flowy/plugins/grid/application/cell/select_option_editor_bloc.dart'; import 'package:app_flowy/plugins/grid/application/setting/group_bloc.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; import 'package:flutter_test/flutter_test.dart'; import 'util.dart'; diff --git a/frontend/app_flowy/test/bloc_test/board_test/group_by_unsupport_field_test.dart b/frontend/app_flowy/test/bloc_test/board_test/group_by_unsupport_field_test.dart index 56a8f81914..ba6ff17398 100644 --- a/frontend/app_flowy/test/bloc_test/board_test/group_by_unsupport_field_test.dart +++ b/frontend/app_flowy/test/bloc_test/board_test/group_by_unsupport_field_test.dart @@ -1,7 +1,7 @@ import 'package:app_flowy/plugins/board/application/board_bloc.dart'; import 'package:app_flowy/plugins/grid/application/field/field_editor_bloc.dart'; import 'package:bloc_test/bloc_test.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; import 'package:flutter_test/flutter_test.dart'; import 'util.dart'; diff --git a/frontend/app_flowy/test/bloc_test/board_test/util.dart b/frontend/app_flowy/test/bloc_test/board_test/util.dart index 3e3985b195..5f1e8cdde2 100644 --- a/frontend/app_flowy/test/bloc_test/board_test/util.dart +++ b/frontend/app_flowy/test/bloc_test/board_test/util.dart @@ -10,7 +10,7 @@ import 'package:app_flowy/plugins/grid/application/row/row_cache.dart'; import 'package:app_flowy/plugins/grid/application/row/row_data_controller.dart'; import 'package:app_flowy/workspace/application/app/app_service.dart'; import 'package:appflowy_backend/protobuf/flowy-folder/view.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; import '../../util.dart'; import '../grid_test/util.dart'; @@ -82,17 +82,17 @@ class BoardTestContext { }) { IFieldTypeOptionLoader loader; if (fieldInfo == null) { - loader = NewFieldTypeOptionLoader(gridId: gridView.id); + loader = NewFieldTypeOptionLoader(databaseId: gridView.id); } else { - loader = - FieldTypeOptionLoader(gridId: gridView.id, field: fieldInfo.field); + loader = FieldTypeOptionLoader( + databaseId: gridView.id, field: fieldInfo.field); } final editorBloc = FieldEditorBloc( fieldName: fieldInfo?.name ?? '', isGroupField: fieldInfo?.isGroupField ?? false, loader: loader, - gridId: gridView.id, + databaseId: gridView.id, ); return editorBloc; } @@ -145,7 +145,7 @@ class BoardTestContext { GridFieldCellContext singleSelectFieldCellContext() { final field = singleSelectFieldContext().field; - return GridFieldCellContext(gridId: gridView.id, field: field); + return GridFieldCellContext(databaseId: gridView.id, field: field); } FieldInfo textFieldContext() { diff --git a/frontend/app_flowy/test/bloc_test/grid_test/cell/select_option_cell_test.dart b/frontend/app_flowy/test/bloc_test/grid_test/cell/select_option_cell_test.dart index 1e54f92129..ca8e145bfa 100644 --- a/frontend/app_flowy/test/bloc_test/grid_test/cell/select_option_cell_test.dart +++ b/frontend/app_flowy/test/bloc_test/grid_test/cell/select_option_cell_test.dart @@ -1,7 +1,7 @@ import 'package:app_flowy/plugins/grid/application/cell/select_option_editor_bloc.dart'; import 'package:dartz/dartz.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/select_type_option.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart'; import 'package:flutter_test/flutter_test.dart'; import '../util.dart'; diff --git a/frontend/app_flowy/test/bloc_test/grid_test/field/edit_field_test.dart b/frontend/app_flowy/test/bloc_test/grid_test/field/edit_field_test.dart index 29fc574467..acf38e42a0 100644 --- a/frontend/app_flowy/test/bloc_test/grid_test/field/edit_field_test.dart +++ b/frontend/app_flowy/test/bloc_test/grid_test/field/edit_field_test.dart @@ -1,7 +1,7 @@ import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_context.dart'; import 'package:app_flowy/plugins/grid/application/prelude.dart'; import 'package:bloc_test/bloc_test.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; import 'package:flutter_test/flutter_test.dart'; import '../util.dart'; @@ -9,12 +9,12 @@ Future createEditorBloc(AppFlowyGridTest gridTest) async { final context = await gridTest.createTestGrid(); final fieldInfo = context.singleSelectFieldContext(); final loader = FieldTypeOptionLoader( - gridId: context.gridView.id, + databaseId: context.gridView.id, field: fieldInfo.field, ); return FieldEditorBloc( - gridId: context.gridView.id, + databaseId: context.gridView.id, fieldName: fieldInfo.name, isGroupField: fieldInfo.isGroupField, loader: loader, @@ -35,12 +35,12 @@ void main() { final context = await gridTest.createTestGrid(); final fieldInfo = context.singleSelectFieldContext(); final loader = FieldTypeOptionLoader( - gridId: context.gridView.id, + databaseId: context.gridView.id, field: fieldInfo.field, ); editorBloc = FieldEditorBloc( - gridId: context.gridView.id, + databaseId: context.gridView.id, fieldName: fieldInfo.name, isGroupField: fieldInfo.isGroupField, loader: loader, diff --git a/frontend/app_flowy/test/bloc_test/grid_test/filter/create_filter_test.dart b/frontend/app_flowy/test/bloc_test/grid_test/filter/create_filter_test.dart index b776503bc5..db1fac699f 100644 --- a/frontend/app_flowy/test/bloc_test/grid_test/filter/create_filter_test.dart +++ b/frontend/app_flowy/test/bloc_test/grid_test/filter/create_filter_test.dart @@ -1,8 +1,8 @@ import 'package:app_flowy/plugins/grid/application/filter/filter_service.dart'; import 'package:app_flowy/plugins/grid/application/grid_bloc.dart'; import 'package:app_flowy/plugins/grid/application/grid_data_controller.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/checkbox_filter.pbenum.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/text_filter.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/checkbox_filter.pbenum.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/text_filter.pb.dart'; import 'package:flutter_test/flutter_test.dart'; import '../util.dart'; @@ -15,7 +15,7 @@ void main() { test('create a text filter)', () async { final context = await gridTest.createTestGrid(); - final service = FilterFFIService(viewId: context.gridView.id); + final service = FilterFFIService(databaseId: context.gridView.id); final textField = context.textFieldContext(); await service.insertTextFilter( fieldId: textField.id, @@ -28,7 +28,7 @@ void main() { test('delete a text filter)', () async { final context = await gridTest.createTestGrid(); - final service = FilterFFIService(viewId: context.gridView.id); + final service = FilterFFIService(databaseId: context.gridView.id); final textField = context.textFieldContext(); await service.insertTextFilter( fieldId: textField.id, @@ -49,7 +49,7 @@ void main() { test('filter rows with condition: text is empty', () async { final context = await gridTest.createTestGrid(); - final service = FilterFFIService(viewId: context.gridView.id); + final service = FilterFFIService(databaseId: context.gridView.id); final gridController = GridController(view: context.gridView); final gridBloc = GridBloc( view: context.gridView, @@ -70,7 +70,7 @@ void main() { test('filter rows with condition: text is empty(After edit the row)', () async { final context = await gridTest.createTestGrid(); - final service = FilterFFIService(viewId: context.gridView.id); + final service = FilterFFIService(databaseId: context.gridView.id); final gridController = GridController(view: context.gridView); final gridBloc = GridBloc( view: context.gridView, @@ -97,7 +97,7 @@ void main() { test('filter rows with condition: text is not empty', () async { final context = await gridTest.createTestGrid(); - final service = FilterFFIService(viewId: context.gridView.id); + final service = FilterFFIService(databaseId: context.gridView.id); final textField = context.textFieldContext(); await gridResponseFuture(); await service.insertTextFilter( @@ -111,7 +111,7 @@ void main() { test('filter rows with condition: checkbox uncheck', () async { final context = await gridTest.createTestGrid(); final checkboxField = context.checkboxFieldContext(); - final service = FilterFFIService(viewId: context.gridView.id); + final service = FilterFFIService(databaseId: context.gridView.id); final gridController = GridController(view: context.gridView); final gridBloc = GridBloc( view: context.gridView, @@ -130,7 +130,7 @@ void main() { test('filter rows with condition: checkbox check', () async { final context = await gridTest.createTestGrid(); final checkboxField = context.checkboxFieldContext(); - final service = FilterFFIService(viewId: context.gridView.id); + final service = FilterFFIService(databaseId: context.gridView.id); final gridController = GridController(view: context.gridView); final gridBloc = GridBloc( view: context.gridView, diff --git a/frontend/app_flowy/test/bloc_test/grid_test/filter/edit_filter_field_test.dart b/frontend/app_flowy/test/bloc_test/grid_test/filter/edit_filter_field_test.dart index 9405356279..d2067c12d9 100644 --- a/frontend/app_flowy/test/bloc_test/grid_test/filter/edit_filter_field_test.dart +++ b/frontend/app_flowy/test/bloc_test/grid_test/filter/edit_filter_field_test.dart @@ -2,8 +2,8 @@ import 'package:app_flowy/plugins/grid/application/field/field_editor_bloc.dart' import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_context.dart'; import 'package:app_flowy/plugins/grid/application/filter/filter_menu_bloc.dart'; import 'package:app_flowy/plugins/grid/application/filter/filter_service.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/text_filter.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/text_filter.pb.dart'; import 'package:flutter_test/flutter_test.dart'; import '../util.dart'; @@ -16,7 +16,7 @@ void main() { test("create a text filter and then alter the filter's field)", () async { final context = await gridTest.createTestGrid(); - final service = FilterFFIService(viewId: context.gridView.id); + final service = FilterFFIService(databaseId: context.gridView.id); final textField = context.textFieldContext(); // Create the filter menu bloc @@ -35,12 +35,12 @@ void main() { // Edit the text field final loader = FieldTypeOptionLoader( - gridId: context.gridView.id, + databaseId: context.gridView.id, field: textField.field, ); final editorBloc = FieldEditorBloc( - gridId: context.gridView.id, + databaseId: context.gridView.id, fieldName: textField.field.name, isGroupField: false, loader: loader, diff --git a/frontend/app_flowy/test/bloc_test/grid_test/filter/filter_menu_test.dart b/frontend/app_flowy/test/bloc_test/grid_test/filter/filter_menu_test.dart index 2535f353b8..b9327a2c24 100644 --- a/frontend/app_flowy/test/bloc_test/grid_test/filter/filter_menu_test.dart +++ b/frontend/app_flowy/test/bloc_test/grid_test/filter/filter_menu_test.dart @@ -1,6 +1,6 @@ import 'package:app_flowy/plugins/grid/application/filter/filter_menu_bloc.dart'; import 'package:app_flowy/plugins/grid/application/filter/filter_service.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/text_filter.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/text_filter.pb.dart'; import 'package:flutter_test/flutter_test.dart'; import '../util.dart'; @@ -19,7 +19,7 @@ void main() { await gridResponseFuture(); assert(menuBloc.state.creatableFields.length == 3); - final service = FilterFFIService(viewId: context.gridView.id); + final service = FilterFFIService(databaseId: context.gridView.id); final textField = context.textFieldContext(); await service.insertTextFilter( fieldId: textField.id, @@ -36,7 +36,7 @@ void main() { ..add(const GridFilterMenuEvent.initial()); await gridResponseFuture(); - final service = FilterFFIService(viewId: context.gridView.id); + final service = FilterFFIService(databaseId: context.gridView.id); final textField = context.textFieldContext(); // Create filter diff --git a/frontend/app_flowy/test/bloc_test/grid_test/filter/filter_rows_by_checkbox_test.dart b/frontend/app_flowy/test/bloc_test/grid_test/filter/filter_rows_by_checkbox_test.dart index 126095d8ce..bd25fab2fb 100644 --- a/frontend/app_flowy/test/bloc_test/grid_test/filter/filter_rows_by_checkbox_test.dart +++ b/frontend/app_flowy/test/bloc_test/grid_test/filter/filter_rows_by_checkbox_test.dart @@ -1,5 +1,5 @@ import 'package:app_flowy/plugins/grid/application/filter/filter_service.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/checkbox_filter.pbenum.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/checkbox_filter.pbenum.dart'; import 'package:flutter_test/flutter_test.dart'; import '../util.dart'; @@ -13,7 +13,7 @@ void main() { test('filter rows by checkbox is check condition)', () async { final context = await createTestFilterGrid(gridTest); - final service = FilterFFIService(viewId: context.gridView.id); + final service = FilterFFIService(databaseId: context.gridView.id); final controller = await context.makeCheckboxCellController(0); controller.saveCellData("Yes"); @@ -32,7 +32,7 @@ void main() { test('filter rows by checkbox is uncheck condition)', () async { final context = await createTestFilterGrid(gridTest); - final service = FilterFFIService(viewId: context.gridView.id); + final service = FilterFFIService(databaseId: context.gridView.id); final controller = await context.makeCheckboxCellController(0); controller.saveCellData("Yes"); diff --git a/frontend/app_flowy/test/bloc_test/grid_test/filter/filter_rows_by_text_test.dart b/frontend/app_flowy/test/bloc_test/grid_test/filter/filter_rows_by_text_test.dart index a28014a437..2309fa6a2e 100644 --- a/frontend/app_flowy/test/bloc_test/grid_test/filter/filter_rows_by_text_test.dart +++ b/frontend/app_flowy/test/bloc_test/grid_test/filter/filter_rows_by_text_test.dart @@ -1,5 +1,5 @@ import 'package:app_flowy/plugins/grid/application/filter/filter_service.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/text_filter.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/text_filter.pb.dart'; import 'package:flutter_test/flutter_test.dart'; import '../util.dart'; @@ -14,7 +14,7 @@ void main() { test('filter rows by text is empty condition)', () async { final context = await createTestFilterGrid(gridTest); - final service = FilterFFIService(viewId: context.gridView.id); + final service = FilterFFIService(databaseId: context.gridView.id); final textField = context.textFieldContext(); // create a new filter await service.insertTextFilter( @@ -41,7 +41,7 @@ void main() { test('filter rows by text is not empty condition)', () async { final context = await createTestFilterGrid(gridTest); - final service = FilterFFIService(viewId: context.gridView.id); + final service = FilterFFIService(databaseId: context.gridView.id); final textField = context.textFieldContext(); // create a new filter await service.insertTextFilter( @@ -66,7 +66,7 @@ void main() { test('filter rows by text is empty or is not empty condition)', () async { final context = await createTestFilterGrid(gridTest); - final service = FilterFFIService(viewId: context.gridView.id); + final service = FilterFFIService(databaseId: context.gridView.id); final textField = context.textFieldContext(); // create a new filter await service.insertTextFilter( @@ -102,7 +102,7 @@ void main() { test('filter rows by text is condition)', () async { final context = await createTestFilterGrid(gridTest); - final service = FilterFFIService(viewId: context.gridView.id); + final service = FilterFFIService(databaseId: context.gridView.id); final textField = context.textFieldContext(); // create a new filter await service.insertTextFilter( diff --git a/frontend/app_flowy/test/bloc_test/grid_test/grid_header_bloc_test.dart b/frontend/app_flowy/test/bloc_test/grid_test/grid_header_bloc_test.dart index 68273bb6ae..f5db69d142 100644 --- a/frontend/app_flowy/test/bloc_test/grid_test/grid_header_bloc_test.dart +++ b/frontend/app_flowy/test/bloc_test/grid_test/grid_header_bloc_test.dart @@ -26,7 +26,7 @@ void main() { "hides property", build: () { final bloc = GridHeaderBloc( - gridId: context.gridView.id, + databaseId: context.gridView.id, fieldController: context.fieldController, )..add(const GridHeaderEvent.initial()); return bloc; @@ -45,7 +45,7 @@ void main() { "shows property", build: () { final bloc = GridHeaderBloc( - gridId: context.gridView.id, + databaseId: context.gridView.id, fieldController: context.fieldController, )..add(const GridHeaderEvent.initial()); return bloc; @@ -66,7 +66,7 @@ void main() { "duplicate property", build: () { final bloc = GridHeaderBloc( - gridId: context.gridView.id, + databaseId: context.gridView.id, fieldController: context.fieldController, )..add(const GridHeaderEvent.initial()); return bloc; @@ -85,7 +85,7 @@ void main() { "delete property", build: () { final bloc = GridHeaderBloc( - gridId: context.gridView.id, + databaseId: context.gridView.id, fieldController: context.fieldController, )..add(const GridHeaderEvent.initial()); return bloc; @@ -104,7 +104,7 @@ void main() { "update name", build: () { final bloc = GridHeaderBloc( - gridId: context.gridView.id, + databaseId: context.gridView.id, fieldController: context.fieldController, )..add(const GridHeaderEvent.initial()); return bloc; diff --git a/frontend/app_flowy/test/bloc_test/grid_test/util.dart b/frontend/app_flowy/test/bloc_test/grid_test/util.dart index 89bd411ac6..f868cf43f5 100644 --- a/frontend/app_flowy/test/bloc_test/grid_test/util.dart +++ b/frontend/app_flowy/test/bloc_test/grid_test/util.dart @@ -10,7 +10,7 @@ import 'package:app_flowy/plugins/grid/application/row/row_data_controller.dart' import 'package:app_flowy/plugins/grid/grid.dart'; import 'package:app_flowy/workspace/application/app/app_service.dart'; import 'package:appflowy_backend/protobuf/flowy-folder/view.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'; import '../../util.dart'; @@ -39,17 +39,17 @@ class GridTestContext { }) { IFieldTypeOptionLoader loader; if (fieldInfo == null) { - loader = NewFieldTypeOptionLoader(gridId: gridView.id); + loader = NewFieldTypeOptionLoader(databaseId: gridView.id); } else { - loader = - FieldTypeOptionLoader(gridId: gridView.id, field: fieldInfo.field); + loader = FieldTypeOptionLoader( + databaseId: gridView.id, field: fieldInfo.field); } final editorBloc = FieldEditorBloc( fieldName: fieldInfo?.name ?? '', isGroupField: fieldInfo?.isGroupField ?? false, loader: loader, - gridId: gridView.id, + databaseId: gridView.id, ); return editorBloc; } @@ -104,7 +104,7 @@ class GridTestContext { GridFieldCellContext singleSelectFieldCellContext() { final field = singleSelectFieldContext().field; - return GridFieldCellContext(gridId: gridView.id, field: field); + return GridFieldCellContext(databaseId: gridView.id, field: field); } FieldInfo textFieldContext() { diff --git a/frontend/app_flowy/test/widget_test/select_option_text_field_test.dart b/frontend/app_flowy/test/widget_test/select_option_text_field_test.dart index 86bb51219d..f8f7c982f9 100644 --- a/frontend/app_flowy/test/widget_test/select_option_text_field_test.dart +++ b/frontend/app_flowy/test/widget_test/select_option_text_field_test.dart @@ -1,7 +1,7 @@ import 'dart:collection'; import 'package:app_flowy/plugins/grid/presentation/widgets/cell/select_option_cell/text_field.dart'; -import 'package:appflowy_backend/protobuf/flowy-grid/protobuf.dart'; +import 'package:appflowy_backend/protobuf/flowy-database/protobuf.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:textfield_tags/textfield_tags.dart'; diff --git a/frontend/appflowy_tauri/src-tauri/Cargo.lock b/frontend/appflowy_tauri/src-tauri/Cargo.lock index 2dc791c391..bba444b294 100644 --- a/frontend/appflowy_tauri/src-tauri/Cargo.lock +++ b/frontend/appflowy_tauri/src-tauri/Cargo.lock @@ -1200,9 +1200,9 @@ dependencies = [ "flowy-document", "flowy-error", "flowy-folder", - "flowy-grid", "flowy-net", "flowy-revision", + "flowy-sqlite", "flowy-task", "flowy-user", "futures-core", @@ -1222,15 +1222,47 @@ dependencies = [ name = "flowy-database" version = "0.1.0" dependencies = [ + "anyhow", + "async-stream", + "atomic_refcell", + "bytes", + "chrono", + "crossbeam-utils", + "dashmap", "diesel", - "diesel_derives", - "diesel_migrations", - "error-chain", + "fancy-regex 0.10.0", + "flowy-client-sync", + "flowy-codegen", + "flowy-derive", + "flowy-error", + "flowy-notification", + "flowy-revision", + "flowy-revision-persistence", + "flowy-sqlite", + "flowy-task", + "futures", + "grid-model", + "indexmap", "lazy_static", - "libsqlite3-sys", - "r2d2", - "scheduled-thread-pool", + "lib-dispatch", + "lib-infra", + "lib-ot", + "nanoid", + "parking_lot", + "protobuf", + "rayon", + "regex", + "revision-model", + "rust_decimal", + "rusty-money", + "serde", + "serde_json", + "serde_repr", + "strum", + "strum_macros", + "tokio", "tracing", + "url", ] [[package]] @@ -1261,12 +1293,12 @@ dependencies = [ "document-model", "flowy-client-sync", "flowy-codegen", - "flowy-database", "flowy-derive", "flowy-error", "flowy-notification", "flowy-revision", "flowy-revision-persistence", + "flowy-sqlite", "futures", "futures-util", "lib-dispatch", @@ -1295,16 +1327,19 @@ dependencies = [ "flowy-client-sync", "flowy-client-ws", "flowy-codegen", - "flowy-database", "flowy-derive", + "flowy-sqlite", "http-error-code", "lib-dispatch", "lib-ot", "protobuf", "r2d2", "reqwest", + "serde", "serde_json", + "serde_repr", "thiserror", + "user-model", ] [[package]] @@ -1316,13 +1351,13 @@ dependencies = [ "diesel_derives", "flowy-client-sync", "flowy-codegen", - "flowy-database", "flowy-derive", "flowy-document", "flowy-error", "flowy-notification", "flowy-revision", "flowy-revision-persistence", + "flowy-sqlite", "folder-model", "futures", "lazy_static", @@ -1344,53 +1379,6 @@ dependencies = [ "ws-model", ] -[[package]] -name = "flowy-grid" -version = "0.1.0" -dependencies = [ - "anyhow", - "async-stream", - "atomic_refcell", - "bytes", - "chrono", - "crossbeam-utils", - "dashmap", - "diesel", - "fancy-regex 0.10.0", - "flowy-client-sync", - "flowy-codegen", - "flowy-database", - "flowy-derive", - "flowy-error", - "flowy-notification", - "flowy-revision", - "flowy-revision-persistence", - "flowy-task", - "futures", - "grid-model", - "indexmap", - "lazy_static", - "lib-dispatch", - "lib-infra", - "lib-ot", - "nanoid", - "parking_lot", - "protobuf", - "rayon", - "regex", - "revision-model", - "rust_decimal", - "rusty-money", - "serde", - "serde_json", - "serde_repr", - "strum", - "strum_macros", - "tokio", - "tracing", - "url", -] - [[package]] name = "flowy-net" version = "0.1.0" @@ -1502,6 +1490,21 @@ dependencies = [ "ws-model", ] +[[package]] +name = "flowy-sqlite" +version = "0.1.0" +dependencies = [ + "diesel", + "diesel_derives", + "diesel_migrations", + "error-chain", + "lazy_static", + "libsqlite3-sys", + "r2d2", + "scheduled-thread-pool", + "tracing", +] + [[package]] name = "flowy-sync" version = "0.1.0" @@ -1539,10 +1542,10 @@ dependencies = [ "diesel", "diesel_derives", "flowy-codegen", - "flowy-database", "flowy-derive", "flowy-error", "flowy-notification", + "flowy-sqlite", "lazy_static", "lib-dispatch", "lib-infra", diff --git a/frontend/appflowy_tauri/src/appflowy_app/components/grid/application/notifications/parser.ts b/frontend/appflowy_tauri/src/appflowy_app/components/grid/application/notifications/parser.ts index dab718fc8a..bee35c2ec4 100644 --- a/frontend/appflowy_tauri/src/appflowy_app/components/grid/application/notifications/parser.ts +++ b/frontend/appflowy_tauri/src/appflowy_app/components/grid/application/notifications/parser.ts @@ -1,18 +1,18 @@ -import { GridNotification } from "../../../../../services/backend"; +import { DatabaseNotification } from "../../../../../services/backend"; import { NotificationParser, OnNotificationError } from "../../../../../services/backend/notifications/parser"; -declare type GridNotificationCallback = (ty: GridNotification, payload: Uint8Array) => void; +declare type DatabaseNotificationCallback = (ty: DatabaseNotification, payload: Uint8Array) => void; -export class GridNotificationParser extends NotificationParser { - constructor(params: { id?: String; callback: GridNotificationCallback; onError?: OnNotificationError }) { +export class DatabaseNotificationParser extends NotificationParser { + constructor(params: { id?: String; callback: DatabaseNotificationCallback; onError?: OnNotificationError }) { super( params.callback, (ty) => { - let notification = GridNotification[ty]; - if (isGridNotification(notification)) { - return GridNotification[notification]; + let notification = DatabaseNotification[ty]; + if (isDatabaseNotification(notification)) { + return DatabaseNotification[notification]; } else { - return GridNotification.Unknown; + return DatabaseNotification.Unknown; } }, params.id, @@ -21,6 +21,6 @@ export class GridNotificationParser extends NotificationParser } } -const isGridNotification = (notification: string): notification is keyof typeof GridNotification => { - return Object.values(GridNotification).indexOf(notification) !== -1; +const isDatabaseNotification = (notification: string): notification is keyof typeof DatabaseNotification => { + return Object.values(DatabaseNotification).indexOf(notification) !== -1; }; diff --git a/frontend/rust-lib/Cargo.lock b/frontend/rust-lib/Cargo.lock index 915d9cdb89..6ad813a906 100644 --- a/frontend/rust-lib/Cargo.lock +++ b/frontend/rust-lib/Cargo.lock @@ -988,9 +988,9 @@ dependencies = [ "flowy-document", "flowy-error", "flowy-folder", - "flowy-grid", "flowy-net", "flowy-revision", + "flowy-sqlite", "flowy-task", "flowy-user", "futures-core", @@ -1010,17 +1010,49 @@ dependencies = [ name = "flowy-database" version = "0.1.0" dependencies = [ + "anyhow", + "async-stream", + "atomic_refcell", + "bytes", + "chrono", + "crossbeam-utils", + "dashmap", "diesel", - "diesel_derives", - "diesel_migrations", - "error-chain", + "fancy-regex 0.10.0", + "flowy-client-sync", + "flowy-codegen", + "flowy-database", + "flowy-derive", + "flowy-error", + "flowy-notification", + "flowy-revision", + "flowy-revision-persistence", + "flowy-sqlite", + "flowy-task", + "flowy-test", + "futures", + "grid-model", + "indexmap", "lazy_static", - "libsqlite3-sys", - "openssl", - "openssl-sys", - "r2d2", - "scheduled-thread-pool", + "lib-dispatch", + "lib-infra", + "lib-ot", + "nanoid", + "parking_lot 0.12.1", + "protobuf", + "rayon", + "regex", + "revision-model", + "rust_decimal", + "rusty-money", + "serde", + "serde_json", + "serde_repr", + "strum", + "strum_macros", + "tokio", "tracing", + "url", ] [[package]] @@ -1057,13 +1089,13 @@ dependencies = [ "document-model", "flowy-client-sync", "flowy-codegen", - "flowy-database", "flowy-derive", "flowy-document", "flowy-error", "flowy-notification", "flowy-revision", "flowy-revision-persistence", + "flowy-sqlite", "flowy-test", "futures", "futures-util", @@ -1096,8 +1128,8 @@ dependencies = [ "flowy-client-sync", "flowy-client-ws", "flowy-codegen", - "flowy-database", "flowy-derive", + "flowy-sqlite", "http-error-code", "lib-dispatch", "lib-ot", @@ -1120,7 +1152,6 @@ dependencies = [ "diesel_derives", "flowy-client-sync", "flowy-codegen", - "flowy-database", "flowy-derive", "flowy-document", "flowy-error", @@ -1128,6 +1159,7 @@ dependencies = [ "flowy-notification", "flowy-revision", "flowy-revision-persistence", + "flowy-sqlite", "flowy-test", "folder-model", "futures", @@ -1150,55 +1182,6 @@ dependencies = [ "ws-model", ] -[[package]] -name = "flowy-grid" -version = "0.1.0" -dependencies = [ - "anyhow", - "async-stream", - "atomic_refcell", - "bytes", - "chrono", - "crossbeam-utils", - "dashmap", - "diesel", - "fancy-regex 0.10.0", - "flowy-client-sync", - "flowy-codegen", - "flowy-database", - "flowy-derive", - "flowy-error", - "flowy-grid", - "flowy-notification", - "flowy-revision", - "flowy-revision-persistence", - "flowy-task", - "flowy-test", - "futures", - "grid-model", - "indexmap", - "lazy_static", - "lib-dispatch", - "lib-infra", - "lib-ot", - "nanoid", - "parking_lot 0.12.1", - "protobuf", - "rayon", - "regex", - "revision-model", - "rust_decimal", - "rusty-money", - "serde", - "serde_json", - "serde_repr", - "strum", - "strum_macros", - "tokio", - "tracing", - "url", -] - [[package]] name = "flowy-net" version = "0.1.0" @@ -1313,6 +1296,23 @@ dependencies = [ "ws-model", ] +[[package]] +name = "flowy-sqlite" +version = "0.1.0" +dependencies = [ + "diesel", + "diesel_derives", + "diesel_migrations", + "error-chain", + "lazy_static", + "libsqlite3-sys", + "openssl", + "openssl-sys", + "r2d2", + "scheduled-thread-pool", + "tracing", +] + [[package]] name = "flowy-sync" version = "0.1.0" @@ -1382,10 +1382,10 @@ dependencies = [ "diesel", "diesel_derives", "flowy-codegen", - "flowy-database", "flowy-derive", "flowy-error", "flowy-notification", + "flowy-sqlite", "flowy-test", "lazy_static", "lib-dispatch", diff --git a/frontend/rust-lib/Cargo.toml b/frontend/rust-lib/Cargo.toml index 95ca94fe20..83a5e25bc0 100644 --- a/frontend/rust-lib/Cargo.toml +++ b/frontend/rust-lib/Cargo.toml @@ -7,14 +7,14 @@ members = [ "dart-ffi", "flowy-user", "flowy-test", - "flowy-database", + "flowy-sqlite", "flowy-folder", "flowy-notification", "flowy-document", "flowy-error", "flowy-revision", "flowy-revision-persistence", - "flowy-grid", + "flowy-database", "flowy-task", "flowy-client-sync", "flowy-derive", diff --git a/frontend/rust-lib/flowy-client-sync/src/client_grid/block_revision_pad.rs b/frontend/rust-lib/flowy-client-sync/src/client_database/block_revision_pad.rs similarity index 95% rename from frontend/rust-lib/flowy-client-sync/src/client_grid/block_revision_pad.rs rename to frontend/rust-lib/flowy-client-sync/src/client_database/block_revision_pad.rs index 47522bacd3..5e4984f752 100644 --- a/frontend/rust-lib/flowy-client-sync/src/client_grid/block_revision_pad.rs +++ b/frontend/rust-lib/flowy-client-sync/src/client_database/block_revision_pad.rs @@ -1,7 +1,7 @@ use crate::errors::{SyncError, SyncResult}; use crate::util::cal_diff; use flowy_sync::util::make_operations_from_revisions; -use grid_model::{gen_block_id, gen_row_id, CellRevision, GridBlockRevision, RowChangeset, RowRevision}; +use grid_model::{gen_block_id, gen_row_id, CellRevision, DatabaseBlockRevision, RowChangeset, RowRevision}; use lib_infra::util::md5; use lib_ot::core::{DeltaBuilder, DeltaOperations, EmptyAttributes, OperationTransform}; use revision_model::Revision; @@ -14,12 +14,12 @@ pub type GridBlockOperationsBuilder = DeltaBuilder; #[derive(Debug, Clone)] pub struct GridBlockRevisionPad { - block: GridBlockRevision, + block: DatabaseBlockRevision, operations: GridBlockOperations, } impl std::ops::Deref for GridBlockRevisionPad { - type Target = GridBlockRevision; + type Target = DatabaseBlockRevision; fn deref(&self) -> &Self::Target { &self.block @@ -27,7 +27,7 @@ impl std::ops::Deref for GridBlockRevisionPad { } impl GridBlockRevisionPad { - pub async fn duplicate_data(&self, duplicated_block_id: &str) -> GridBlockRevision { + pub async fn duplicate_data(&self, duplicated_block_id: &str) -> DatabaseBlockRevision { let duplicated_rows = self .block .rows @@ -39,7 +39,7 @@ impl GridBlockRevisionPad { Arc::new(duplicated_row) }) .collect::>>(); - GridBlockRevision { + DatabaseBlockRevision { block_id: duplicated_block_id.to_string(), rows: duplicated_rows, } @@ -47,7 +47,7 @@ impl GridBlockRevisionPad { pub fn from_operations(operations: GridBlockOperations) -> SyncResult { let s = operations.content()?; - let revision: GridBlockRevision = serde_json::from_str(&s).map_err(|e| { + let revision: DatabaseBlockRevision = serde_json::from_str(&s).map_err(|e| { let msg = format!("Deserialize operations to GridBlockRevision failed: {}", e); tracing::error!("{}", s); SyncError::internal().context(msg) @@ -252,13 +252,13 @@ pub struct GridBlockRevisionChangeset { pub md5: String, } -pub fn make_grid_block_operations(block_rev: &GridBlockRevision) -> GridBlockOperations { +pub fn make_database_block_operations(block_rev: &DatabaseBlockRevision) -> GridBlockOperations { let json = serde_json::to_string(&block_rev).unwrap(); GridBlockOperationsBuilder::new().insert(&json).build() } -pub fn make_grid_block_revisions(_user_id: &str, grid_block_meta_data: &GridBlockRevision) -> Vec { - let operations = make_grid_block_operations(grid_block_meta_data); +pub fn make_grid_block_revisions(_user_id: &str, grid_block_meta_data: &DatabaseBlockRevision) -> Vec { + let operations = make_database_block_operations(grid_block_meta_data); let bytes = operations.json_bytes(); let revision = Revision::initial_revision(&grid_block_meta_data.block_id, bytes); vec![revision] @@ -266,12 +266,12 @@ pub fn make_grid_block_revisions(_user_id: &str, grid_block_meta_data: &GridBloc impl std::default::Default for GridBlockRevisionPad { fn default() -> Self { - let block_revision = GridBlockRevision { + let block_revision = DatabaseBlockRevision { block_id: gen_block_id(), rows: vec![], }; - let operations = make_grid_block_operations(&block_revision); + let operations = make_database_block_operations(&block_revision); GridBlockRevisionPad { block: block_revision, operations, @@ -281,7 +281,7 @@ impl std::default::Default for GridBlockRevisionPad { #[cfg(test)] mod tests { - use crate::client_grid::{GridBlockOperations, GridBlockRevisionPad}; + use crate::client_database::{GridBlockOperations, GridBlockRevisionPad}; use grid_model::{RowChangeset, RowRevision}; use std::borrow::Cow; diff --git a/frontend/rust-lib/flowy-client-sync/src/client_grid/grid_builder.rs b/frontend/rust-lib/flowy-client-sync/src/client_database/database_builder.rs similarity index 78% rename from frontend/rust-lib/flowy-client-sync/src/client_grid/grid_builder.rs rename to frontend/rust-lib/flowy-client-sync/src/client_database/database_builder.rs index e0bfea5e88..8ef88ff2aa 100644 --- a/frontend/rust-lib/flowy-client-sync/src/client_grid/grid_builder.rs +++ b/frontend/rust-lib/flowy-client-sync/src/client_database/database_builder.rs @@ -1,17 +1,17 @@ use crate::errors::{SyncError, SyncResult}; -use grid_model::{BuildGridContext, FieldRevision, GridBlockMetaRevision, GridBlockRevision, RowRevision}; +use grid_model::{BuildDatabaseContext, DatabaseBlockRevision, FieldRevision, GridBlockMetaRevision, RowRevision}; use std::sync::Arc; -pub struct GridBuilder { - build_context: BuildGridContext, +pub struct DatabaseBuilder { + build_context: BuildDatabaseContext, } -impl std::default::Default for GridBuilder { +impl std::default::Default for DatabaseBuilder { fn default() -> Self { - let mut build_context = BuildGridContext::new(); + let mut build_context = BuildDatabaseContext::new(); let block_meta = GridBlockMetaRevision::new(); - let block_meta_data = GridBlockRevision { + let block_meta_data = DatabaseBlockRevision { block_id: block_meta.block_id.clone(), rows: vec![], }; @@ -19,11 +19,11 @@ impl std::default::Default for GridBuilder { build_context.block_metas.push(block_meta); build_context.blocks.push(block_meta_data); - GridBuilder { build_context } + DatabaseBuilder { build_context } } } -impl GridBuilder { +impl DatabaseBuilder { pub fn new() -> Self { Self::default() } @@ -51,7 +51,7 @@ impl GridBuilder { &self.build_context.block_metas.first().unwrap().block_id } - pub fn build(self) -> BuildGridContext { + pub fn build(self) -> BuildDatabaseContext { self.build_context } } diff --git a/frontend/rust-lib/flowy-client-sync/src/client_grid/grid_revision_pad.rs b/frontend/rust-lib/flowy-client-sync/src/client_database/database_revision_pad.rs similarity index 84% rename from frontend/rust-lib/flowy-client-sync/src/client_grid/grid_revision_pad.rs rename to frontend/rust-lib/flowy-client-sync/src/client_database/database_revision_pad.rs index 96dc9db3d2..38d41f697b 100644 --- a/frontend/rust-lib/flowy-client-sync/src/client_grid/grid_revision_pad.rs +++ b/frontend/rust-lib/flowy-client-sync/src/client_database/database_revision_pad.rs @@ -2,8 +2,8 @@ use crate::errors::{internal_sync_error, SyncError, SyncResult}; use crate::util::cal_diff; use flowy_sync::util::make_operations_from_revisions; use grid_model::{ - gen_block_id, gen_grid_id, FieldRevision, FieldTypeRevision, GridBlockMetaRevision, GridBlockMetaRevisionChangeset, - GridRevision, + gen_block_id, gen_grid_id, DatabaseRevision, FieldRevision, FieldTypeRevision, GridBlockMetaRevision, + GridBlockMetaRevisionChangeset, }; use lib_infra::util::md5; use lib_infra::util::move_vec_element; @@ -12,20 +12,20 @@ use revision_model::Revision; use std::collections::HashMap; use std::sync::Arc; -pub type GridOperations = DeltaOperations; -pub type GridOperationsBuilder = DeltaOperationBuilder; +pub type DatabaseOperations = DeltaOperations; +pub type DatabaseOperationsBuilder = DeltaOperationBuilder; #[derive(Clone)] -pub struct GridRevisionPad { - grid_rev: Arc, - operations: GridOperations, +pub struct DatabaseRevisionPad { + grid_rev: Arc, + operations: DatabaseOperations, } pub trait JsonDeserializer { fn deserialize(&self, type_option_data: Vec) -> SyncResult; } -impl GridRevisionPad { +impl DatabaseRevisionPad { pub fn grid_id(&self) -> String { self.grid_rev.grid_id.clone() } @@ -51,9 +51,9 @@ impl GridRevisionPad { (fields, blocks) } - pub fn from_operations(operations: GridOperations) -> SyncResult { + pub fn from_operations(operations: DatabaseOperations) -> SyncResult { let content = operations.content()?; - let grid: GridRevision = serde_json::from_str(&content).map_err(|e| { + let grid: DatabaseRevision = serde_json::from_str(&content).map_err(|e| { let msg = format!("Deserialize operations to grid failed: {}", e); tracing::error!("{}", msg); SyncError::internal().context(msg) @@ -66,7 +66,7 @@ impl GridRevisionPad { } pub fn from_revisions(revisions: Vec) -> SyncResult { - let operations: GridOperations = make_operations_from_revisions(revisions)?; + let operations: DatabaseOperations = make_operations_from_revisions(revisions)?; Self::from_operations(operations) } @@ -75,7 +75,7 @@ impl GridRevisionPad { &mut self, new_field_rev: FieldRevision, start_field_id: Option, - ) -> SyncResult> { + ) -> SyncResult> { self.modify_grid(|grid_meta| { // Check if the field exists or not if grid_meta @@ -100,7 +100,7 @@ impl GridRevisionPad { }) } - pub fn delete_field_rev(&mut self, field_id: &str) -> SyncResult> { + pub fn delete_field_rev(&mut self, field_id: &str) -> SyncResult> { self.modify_grid( |grid_meta| match grid_meta.fields.iter().position(|field| field.id == field_id) { None => Ok(None), @@ -120,7 +120,7 @@ impl GridRevisionPad { &mut self, field_id: &str, duplicated_field_id: &str, - ) -> SyncResult> { + ) -> SyncResult> { self.modify_grid( |grid_meta| match grid_meta.fields.iter().position(|field| field.id == field_id) { None => Ok(None), @@ -151,7 +151,7 @@ impl GridRevisionPad { new_field_type: T, make_default_type_option: DT, type_option_transform: TT, - ) -> SyncResult> + ) -> SyncResult> where DT: FnOnce() -> String, TT: FnOnce(FieldTypeRevision, Option, String) -> String, @@ -195,7 +195,10 @@ impl GridRevisionPad { }) } - pub fn replace_field_rev(&mut self, field_rev: Arc) -> SyncResult> { + pub fn replace_field_rev( + &mut self, + field_rev: Arc, + ) -> SyncResult> { self.modify_grid( |grid_meta| match grid_meta.fields.iter().position(|field| field.id == field_rev.id) { None => Ok(None), @@ -213,7 +216,7 @@ impl GridRevisionPad { field_id: &str, from_index: usize, to_index: usize, - ) -> SyncResult> { + ) -> SyncResult> { self.modify_grid(|grid_meta| { match move_vec_element( &mut grid_meta.fields, @@ -267,7 +270,10 @@ impl GridRevisionPad { } } - pub fn create_block_meta_rev(&mut self, block: GridBlockMetaRevision) -> SyncResult> { + pub fn create_block_meta_rev( + &mut self, + block: GridBlockMetaRevision, + ) -> SyncResult> { self.modify_grid(|grid_meta| { if grid_meta.blocks.iter().any(|b| b.block_id == block.block_id) { tracing::warn!("Duplicate grid block"); @@ -297,7 +303,7 @@ impl GridRevisionPad { pub fn update_block_rev( &mut self, changeset: GridBlockMetaRevisionChangeset, - ) -> SyncResult> { + ) -> SyncResult> { let block_id = changeset.block_id.clone(); self.modify_block(&block_id, |block| { let mut is_changed = None; @@ -316,7 +322,7 @@ impl GridRevisionPad { }) } - pub fn grid_md5(&self) -> String { + pub fn database_md5(&self) -> String { md5(&self.operations.json_bytes()) } @@ -328,23 +334,23 @@ impl GridRevisionPad { &self.grid_rev.fields } - fn modify_grid(&mut self, f: F) -> SyncResult> + fn modify_grid(&mut self, f: F) -> SyncResult> where - F: FnOnce(&mut GridRevision) -> SyncResult>, + F: FnOnce(&mut DatabaseRevision) -> SyncResult>, { let cloned_grid = self.grid_rev.clone(); match f(Arc::make_mut(&mut self.grid_rev))? { None => Ok(None), Some(_) => { - let old = make_grid_rev_json_str(&cloned_grid)?; + let old = make_database_rev_json_str(&cloned_grid)?; let new = self.json_str()?; match cal_diff::(old, new) { None => Ok(None), Some(operations) => { self.operations = self.operations.compose(&operations)?; - Ok(Some(GridRevisionChangeset { + Ok(Some(DatabaseRevisionChangeset { operations, - md5: self.grid_md5(), + md5: self.database_md5(), })) } } @@ -352,7 +358,7 @@ impl GridRevisionPad { } } - fn modify_block(&mut self, block_id: &str, f: F) -> SyncResult> + fn modify_block(&mut self, block_id: &str, f: F) -> SyncResult> where F: FnOnce(&mut GridBlockMetaRevision) -> SyncResult>, { @@ -370,7 +376,7 @@ impl GridRevisionPad { ) } - pub fn modify_field(&mut self, field_id: &str, f: F) -> SyncResult> + pub fn modify_field(&mut self, field_id: &str, f: F) -> SyncResult> where F: FnOnce(&mut FieldRevision) -> SyncResult>, { @@ -389,39 +395,39 @@ impl GridRevisionPad { } pub fn json_str(&self) -> SyncResult { - make_grid_rev_json_str(&self.grid_rev) + make_database_rev_json_str(&self.grid_rev) } } -pub fn make_grid_rev_json_str(grid_revision: &GridRevision) -> SyncResult { +pub fn make_database_rev_json_str(grid_revision: &DatabaseRevision) -> SyncResult { let json = serde_json::to_string(grid_revision) .map_err(|err| internal_sync_error(format!("Serialize grid to json str failed. {:?}", err)))?; Ok(json) } -pub struct GridRevisionChangeset { - pub operations: GridOperations, +pub struct DatabaseRevisionChangeset { + pub operations: DatabaseOperations, /// md5: the md5 of the grid after applying the change. pub md5: String, } -pub fn make_grid_operations(grid_rev: &GridRevision) -> GridOperations { +pub fn make_database_operations(grid_rev: &DatabaseRevision) -> DatabaseOperations { let json = serde_json::to_string(&grid_rev).unwrap(); - GridOperationsBuilder::new().insert(&json).build() + DatabaseOperationsBuilder::new().insert(&json).build() } -pub fn make_grid_revisions(_user_id: &str, grid_rev: &GridRevision) -> Vec { - let operations = make_grid_operations(grid_rev); +pub fn make_database_revisions(_user_id: &str, grid_rev: &DatabaseRevision) -> Vec { + let operations = make_database_operations(grid_rev); let bytes = operations.json_bytes(); let revision = Revision::initial_revision(&grid_rev.grid_id, bytes); vec![revision] } -impl std::default::Default for GridRevisionPad { +impl std::default::Default for DatabaseRevisionPad { fn default() -> Self { - let grid = GridRevision::new(&gen_grid_id()); - let operations = make_grid_operations(&grid); - GridRevisionPad { + let grid = DatabaseRevision::new(&gen_grid_id()); + let operations = make_database_operations(&grid); + DatabaseRevisionPad { grid_rev: Arc::new(grid), operations, } diff --git a/frontend/rust-lib/flowy-client-sync/src/client_database/mod.rs b/frontend/rust-lib/flowy-client-sync/src/client_database/mod.rs new file mode 100644 index 0000000000..8eb559cc85 --- /dev/null +++ b/frontend/rust-lib/flowy-client-sync/src/client_database/mod.rs @@ -0,0 +1,9 @@ +mod block_revision_pad; +mod database_builder; +mod database_revision_pad; +mod view_revision_pad; + +pub use block_revision_pad::*; +pub use database_builder::*; +pub use database_revision_pad::*; +pub use view_revision_pad::*; diff --git a/frontend/rust-lib/flowy-client-sync/src/client_grid/view_revision_pad.rs b/frontend/rust-lib/flowy-client-sync/src/client_database/view_revision_pad.rs similarity index 93% rename from frontend/rust-lib/flowy-client-sync/src/client_grid/view_revision_pad.rs rename to frontend/rust-lib/flowy-client-sync/src/client_database/view_revision_pad.rs index f43154c447..3913b431a6 100644 --- a/frontend/rust-lib/flowy-client-sync/src/client_grid/view_revision_pad.rs +++ b/frontend/rust-lib/flowy-client-sync/src/client_database/view_revision_pad.rs @@ -2,7 +2,7 @@ use crate::errors::{internal_sync_error, SyncError, SyncResult}; use crate::util::cal_diff; use flowy_sync::util::make_operations_from_revisions; use grid_model::{ - FieldRevision, FieldTypeRevision, FilterRevision, GridViewRevision, GroupConfigurationRevision, LayoutRevision, + DatabaseViewRevision, FieldRevision, FieldTypeRevision, FilterRevision, GroupConfigurationRevision, LayoutRevision, SortRevision, }; use lib_infra::util::md5; @@ -15,12 +15,12 @@ pub type GridViewOperationsBuilder = DeltaBuilder; #[derive(Debug, Clone)] pub struct GridViewRevisionPad { - view: Arc, + view: Arc, operations: GridViewOperations, } impl std::ops::Deref for GridViewRevisionPad { - type Target = GridViewRevision; + type Target = DatabaseViewRevision; fn deref(&self) -> &Self::Target { &self.view @@ -31,7 +31,7 @@ impl GridViewRevisionPad { // For the moment, the view_id is equal to grid_id. The grid_id represents the database id. // A database can be referenced by multiple views. pub fn new(grid_id: String, view_id: String, layout: LayoutRevision) -> Self { - let view = Arc::new(GridViewRevision::new(grid_id, view_id, layout)); + let view = Arc::new(DatabaseViewRevision::new(grid_id, view_id, layout)); let json = serde_json::to_string(&view).unwrap(); let operations = GridViewOperationsBuilder::new().insert(&json).build(); Self { view, operations } @@ -42,11 +42,11 @@ impl GridViewRevisionPad { return Ok(GridViewRevisionPad::new( view_id.to_owned(), view_id.to_owned(), - LayoutRevision::Table, + LayoutRevision::Grid, )); } let s = operations.content()?; - let view: GridViewRevision = serde_json::from_str(&s).map_err(|e| { + let view: DatabaseViewRevision = serde_json::from_str(&s).map_err(|e| { let msg = format!("Deserialize operations to GridViewRevision failed: {}", e); tracing::error!("parsing json: {}", s); SyncError::internal().context(msg) @@ -280,7 +280,7 @@ impl GridViewRevisionPad { fn modify(&mut self, f: F) -> SyncResult> where - F: FnOnce(&mut GridViewRevision) -> SyncResult>, + F: FnOnce(&mut DatabaseViewRevision) -> SyncResult>, { let cloned_view = self.view.clone(); match f(Arc::make_mut(&mut self.view))? { @@ -307,13 +307,13 @@ pub struct GridViewRevisionChangeset { pub md5: String, } -pub fn make_grid_view_rev_json_str(grid_revision: &GridViewRevision) -> SyncResult { +pub fn make_grid_view_rev_json_str(grid_revision: &DatabaseViewRevision) -> SyncResult { let json = serde_json::to_string(grid_revision) .map_err(|err| internal_sync_error(format!("Serialize grid view to json str failed. {:?}", err)))?; Ok(json) } -pub fn make_grid_view_operations(grid_view: &GridViewRevision) -> GridViewOperations { +pub fn make_grid_view_operations(grid_view: &DatabaseViewRevision) -> GridViewOperations { let json = serde_json::to_string(grid_view).unwrap(); GridViewOperationsBuilder::new().insert(&json).build() } diff --git a/frontend/rust-lib/flowy-client-sync/src/client_grid/mod.rs b/frontend/rust-lib/flowy-client-sync/src/client_grid/mod.rs deleted file mode 100644 index 4a9a0374f5..0000000000 --- a/frontend/rust-lib/flowy-client-sync/src/client_grid/mod.rs +++ /dev/null @@ -1,9 +0,0 @@ -mod block_revision_pad; -mod grid_builder; -mod grid_revision_pad; -mod view_revision_pad; - -pub use block_revision_pad::*; -pub use grid_builder::*; -pub use grid_revision_pad::*; -pub use view_revision_pad::*; diff --git a/frontend/rust-lib/flowy-client-sync/src/lib.rs b/frontend/rust-lib/flowy-client-sync/src/lib.rs index bd7bb2d9aa..d2a5a6adf9 100644 --- a/frontend/rust-lib/flowy-client-sync/src/lib.rs +++ b/frontend/rust-lib/flowy-client-sync/src/lib.rs @@ -1,6 +1,6 @@ +pub mod client_database; pub mod client_document; pub mod client_folder; -pub mod client_grid; pub mod errors { pub use flowy_sync::errors::*; } diff --git a/frontend/rust-lib/flowy-codegen/src/ast.rs b/frontend/rust-lib/flowy-codegen/src/ast.rs index 141faaba51..1f46e700e8 100644 --- a/frontend/rust-lib/flowy-codegen/src/ast.rs +++ b/frontend/rust-lib/flowy-codegen/src/ast.rs @@ -1,6 +1,7 @@ use flowy_ast::EventEnumAttrs; use quote::format_ident; +#[allow(dead_code)] pub struct EventASTContext { pub event: syn::Ident, pub event_ty: syn::Ident, @@ -11,6 +12,7 @@ pub struct EventASTContext { } impl EventASTContext { + #[allow(dead_code)] pub fn from(enum_attrs: &EventEnumAttrs) -> EventASTContext { let command_name = enum_attrs.enum_item_name.clone(); if command_name.is_empty() { diff --git a/frontend/rust-lib/flowy-core/Cargo.toml b/frontend/rust-lib/flowy-core/Cargo.toml index 536f85760e..a675ab2b89 100644 --- a/frontend/rust-lib/flowy-core/Cargo.toml +++ b/frontend/rust-lib/flowy-core/Cargo.toml @@ -11,10 +11,10 @@ lib-log = { path = "../lib-log" } flowy-user = { path = "../flowy-user" } flowy-net = { path = "../flowy-net" } flowy-folder = { path = "../flowy-folder", default-features = false } -flowy-grid = { path = "../flowy-grid", default-features = false } +flowy-database = { path = "../flowy-database", default-features = false } grid-model = { path = "../../../shared-lib/grid-model" } flowy-client-ws = { path = "../../../shared-lib/flowy-client-ws" } -flowy-database = { path = "../flowy-database", optional = true } +flowy-sqlite = { path = "../flowy-sqlite", optional = true } flowy-document = { path = "../flowy-document", default-features = false } flowy-revision = { path = "../flowy-revision" } flowy-error = { path = "../flowy-error", features = ["adaptor_ws"] } @@ -39,21 +39,21 @@ dart = [ "flowy-user/dart", "flowy-net/dart", "flowy-folder/dart", - "flowy-grid/dart", + "flowy-database/dart", "flowy-document/dart", ] ts = [ "flowy-user/ts", "flowy-net/ts", "flowy-folder/ts", - "flowy-grid/ts", + "flowy-database/ts", "flowy-document/ts", ] rev-sqlite = [ - "flowy-database", + "flowy-sqlite", "flowy-user/rev-sqlite", "flowy-folder/rev-sqlite", - "flowy-grid/rev-sqlite", + "flowy-database/rev-sqlite", "flowy-document/rev-sqlite", ] -openssl_vendored = ["flowy-database/openssl_vendored"] +openssl_vendored = ["flowy-sqlite/openssl_vendored"] diff --git a/frontend/rust-lib/flowy-core/src/deps_resolve/document_deps.rs b/frontend/rust-lib/flowy-core/src/deps_resolve/document_deps.rs index b141e8749e..1ac74c00ff 100644 --- a/frontend/rust-lib/flowy-core/src/deps_resolve/document_deps.rs +++ b/frontend/rust-lib/flowy-core/src/deps_resolve/document_deps.rs @@ -1,6 +1,5 @@ use bytes::Bytes; use flowy_client_ws::FlowyWebSocketConnect; -use flowy_database::ConnectionPool; use flowy_document::{ errors::{internal_error, FlowyError}, DocumentCloudService, DocumentConfig, DocumentDatabase, DocumentManager, DocumentUser, @@ -8,6 +7,7 @@ use flowy_document::{ use flowy_net::ClientServerConfiguration; use flowy_net::{http_server::document::DocumentCloudServiceImpl, local_server::LocalServer}; use flowy_revision::{RevisionWebSocket, WSStateReceiver}; +use flowy_sqlite::ConnectionPool; use flowy_user::services::UserSession; use futures_core::future::BoxFuture; use lib_infra::future::BoxResultFuture; diff --git a/frontend/rust-lib/flowy-core/src/deps_resolve/folder_deps.rs b/frontend/rust-lib/flowy-core/src/deps_resolve/folder_deps.rs index 6add727d07..1d4d4c772d 100644 --- a/frontend/rust-lib/flowy-core/src/deps_resolve/folder_deps.rs +++ b/frontend/rust-lib/flowy-core/src/deps_resolve/folder_deps.rs @@ -1,7 +1,10 @@ use bytes::Bytes; -use flowy_database::ConnectionPool; +use flowy_sqlite::ConnectionPool; use flowy_client_ws::FlowyWebSocketConnect; +use flowy_database::entities::DatabaseViewLayout; +use flowy_database::manager::{make_database_view_data, DatabaseManager}; +use flowy_database::util::{make_default_board, make_default_calendar, make_default_grid}; use flowy_document::DocumentManager; use flowy_folder::entities::{ViewDataFormatPB, ViewLayoutTypePB, ViewPB}; use flowy_folder::manager::{ViewDataProcessor, ViewDataProcessorMap}; @@ -10,15 +13,12 @@ use flowy_folder::{ event_map::{FolderCouldServiceV1, WorkspaceDatabase, WorkspaceUser}, manager::FolderManager, }; -use flowy_grid::entities::GridLayout; -use flowy_grid::manager::{make_grid_view_data, GridManager}; -use flowy_grid::util::{make_default_board, make_default_calendar, make_default_grid}; use flowy_net::ClientServerConfiguration; use flowy_net::{http_server::folder::FolderHttpCloudService, local_server::LocalServer}; use flowy_revision::{RevisionWebSocket, WSStateReceiver}; use flowy_user::services::UserSession; use futures_core::future::BoxFuture; -use grid_model::BuildGridContext; +use grid_model::BuildDatabaseContext; use lib_infra::future::{BoxResultFuture, FutureResult}; use lib_ws::{WSChannel, WSMessageReceiver, WebSocketRawMessage}; use revision_model::Revision; @@ -35,7 +35,7 @@ impl FolderDepsResolver { server_config: &ClientServerConfiguration, ws_conn: &Arc, text_block_manager: &Arc, - grid_manager: &Arc, + grid_manager: &Arc, ) -> Arc { let user: Arc = Arc::new(WorkspaceUserImpl(user_session.clone())); let database: Arc = Arc::new(WorkspaceDatabaseImpl(user_session)); @@ -64,7 +64,7 @@ impl FolderDepsResolver { fn make_view_data_processor( document_manager: Arc, - grid_manager: Arc, + grid_manager: Arc, ) -> ViewDataProcessorMap { let mut map: HashMap> = HashMap::new(); @@ -215,7 +215,7 @@ impl ViewDataProcessor for DocumentViewDataProcessor { } } -struct GridViewDataProcessor(Arc); +struct GridViewDataProcessor(Arc); impl ViewDataProcessor for GridViewDataProcessor { fn create_view( &self, @@ -228,7 +228,7 @@ impl ViewDataProcessor for GridViewDataProcessor { let view_id = view_id.to_string(); let grid_manager = self.0.clone(); FutureResult::new(async move { - grid_manager.create_grid(view_id, vec![revision]).await?; + grid_manager.create_database(view_id, vec![revision]).await?; Ok(()) }) } @@ -237,7 +237,7 @@ impl ViewDataProcessor for GridViewDataProcessor { let grid_manager = self.0.clone(); let view_id = view_id.to_string(); FutureResult::new(async move { - grid_manager.close_grid(view_id).await?; + grid_manager.close_database(view_id).await?; Ok(()) }) } @@ -246,7 +246,7 @@ impl ViewDataProcessor for GridViewDataProcessor { let grid_manager = self.0.clone(); let view_id = view.id.clone(); FutureResult::new(async move { - let editor = grid_manager.open_grid(view_id).await?; + let editor = grid_manager.open_database(view_id).await?; let delta_bytes = editor.duplicate_grid().await?; Ok(delta_bytes.into()) }) @@ -261,9 +261,9 @@ impl ViewDataProcessor for GridViewDataProcessor { ) -> FutureResult { debug_assert_eq!(data_format, ViewDataFormatPB::DatabaseFormat); let (build_context, layout) = match layout { - ViewLayoutTypePB::Grid => (make_default_grid(), GridLayout::Table), - ViewLayoutTypePB::Board => (make_default_board(), GridLayout::Board), - ViewLayoutTypePB::Calendar => (make_default_calendar(), GridLayout::Calendar), + ViewLayoutTypePB::Grid => (make_default_grid(), DatabaseViewLayout::Grid), + ViewLayoutTypePB::Board => (make_default_board(), DatabaseViewLayout::Board), + ViewLayoutTypePB::Calendar => (make_default_calendar(), DatabaseViewLayout::Calendar), ViewLayoutTypePB::Document => { return FutureResult::new(async move { Err(FlowyError::internal().context(format!("Can't handle {:?} layout type", layout))) @@ -274,9 +274,9 @@ impl ViewDataProcessor for GridViewDataProcessor { let user_id = user_id.to_string(); let view_id = view_id.to_string(); let grid_manager = self.0.clone(); - FutureResult::new( - async move { make_grid_view_data(&user_id, &view_id, layout, grid_manager, build_context).await }, - ) + FutureResult::new(async move { + make_database_view_data(&user_id, &view_id, layout, grid_manager, build_context).await + }) } fn create_view_from_delta_data( @@ -291,9 +291,9 @@ impl ViewDataProcessor for GridViewDataProcessor { let grid_manager = self.0.clone(); let layout = match layout { - ViewLayoutTypePB::Grid => GridLayout::Table, - ViewLayoutTypePB::Board => GridLayout::Board, - ViewLayoutTypePB::Calendar => GridLayout::Calendar, + ViewLayoutTypePB::Grid => DatabaseViewLayout::Grid, + ViewLayoutTypePB::Board => DatabaseViewLayout::Board, + ViewLayoutTypePB::Calendar => DatabaseViewLayout::Calendar, ViewLayoutTypePB::Document => { return FutureResult::new(async move { Err(FlowyError::internal().context(format!("Can't handle {:?} layout type", layout))) @@ -303,8 +303,8 @@ impl ViewDataProcessor for GridViewDataProcessor { FutureResult::new(async move { let bytes = Bytes::from(data); - let build_context = BuildGridContext::try_from(bytes)?; - make_grid_view_data(&user_id, &view_id, layout, grid_manager, build_context).await + let build_context = BuildDatabaseContext::try_from(bytes)?; + make_database_view_data(&user_id, &view_id, layout, grid_manager, build_context).await }) } diff --git a/frontend/rust-lib/flowy-core/src/deps_resolve/grid_deps.rs b/frontend/rust-lib/flowy-core/src/deps_resolve/grid_deps.rs index 9ce2046785..5ff063b046 100644 --- a/frontend/rust-lib/flowy-core/src/deps_resolve/grid_deps.rs +++ b/frontend/rust-lib/flowy-core/src/deps_resolve/grid_deps.rs @@ -1,10 +1,10 @@ use crate::FlowyError; use bytes::Bytes; use flowy_client_ws::FlowyWebSocketConnect; -use flowy_database::ConnectionPool; -use flowy_grid::manager::{GridManager, GridUser}; -use flowy_grid::services::persistence::GridDatabase; +use flowy_database::manager::{DatabaseManager, DatabaseUser}; +use flowy_database::services::persistence::GridDatabase; use flowy_revision::{RevisionWebSocket, WSStateReceiver}; +use flowy_sqlite::ConnectionPool; use flowy_task::TaskDispatcher; use flowy_user::services::UserSession; use futures_core::future::BoxFuture; @@ -22,10 +22,10 @@ impl GridDepsResolver { ws_conn: Arc, user_session: Arc, task_scheduler: Arc>, - ) -> Arc { + ) -> Arc { let user = Arc::new(GridUserImpl(user_session.clone())); let rev_web_socket = Arc::new(GridRevisionWebSocket(ws_conn)); - let grid_manager = Arc::new(GridManager::new( + let grid_manager = Arc::new(DatabaseManager::new( user.clone(), rev_web_socket, task_scheduler, @@ -51,7 +51,7 @@ impl GridDatabase for GridDatabaseImpl { } struct GridUserImpl(Arc); -impl GridUser for GridUserImpl { +impl DatabaseUser for GridUserImpl { fn user_id(&self) -> Result { self.0.user_id() } @@ -70,7 +70,7 @@ impl RevisionWebSocket for GridRevisionWebSocket { fn send(&self, data: ClientRevisionWSData) -> BoxResultFuture<(), FlowyError> { let bytes: Bytes = data.try_into().unwrap(); let msg = WebSocketRawMessage { - channel: WSChannel::Grid, + channel: WSChannel::Database, data: bytes.to_vec(), }; diff --git a/frontend/rust-lib/flowy-core/src/lib.rs b/frontend/rust-lib/flowy-core/src/lib.rs index dc52d6dd93..2f31306f7f 100644 --- a/frontend/rust-lib/flowy-core/src/lib.rs +++ b/frontend/rust-lib/flowy-core/src/lib.rs @@ -5,11 +5,11 @@ pub use flowy_net::get_client_server_configuration; use crate::deps_resolve::*; use flowy_client_ws::{listen_on_websocket, FlowyWebSocketConnect, NetworkType}; +use flowy_database::manager::DatabaseManager; use flowy_document::entities::DocumentVersionPB; use flowy_document::{DocumentConfig, DocumentManager}; use flowy_folder::entities::ViewDataFormatPB; use flowy_folder::{errors::FlowyError, manager::FolderManager}; -use flowy_grid::manager::GridManager; use flowy_net::local_server::LocalServer; use flowy_net::ClientServerConfiguration; use flowy_task::{TaskDispatcher, TaskRunner}; @@ -96,7 +96,7 @@ fn create_log_filter(level: String, with_crates: Vec) -> String { // filters.push(format!("lib_dispatch={}", level)); filters.push(format!("dart_ffi={}", "info")); - filters.push(format!("flowy_database={}", "info")); + filters.push(format!("flowy_sqlite={}", "info")); filters.push(format!("flowy_net={}", "info")); filters.join(",") } @@ -108,7 +108,7 @@ pub struct FlowySDK { pub user_session: Arc, pub document_manager: Arc, pub folder_manager: Arc, - pub grid_manager: Arc, + pub grid_manager: Arc, pub event_dispatcher: Arc, pub ws_conn: Arc, pub local_server: Option>, @@ -207,7 +207,7 @@ fn _start_listening( user_session: &Arc, document_manager: &Arc, folder_manager: &Arc, - grid_manager: &Arc, + grid_manager: &Arc, ) { let subscribe_user_status = user_session.notifier.subscribe_user_status(); let subscribe_network_type = ws_conn.subscribe_network_ty(); @@ -259,7 +259,7 @@ async fn _listen_user_status( mut subscribe: broadcast::Receiver, document_manager: Arc, folder_manager: Arc, - grid_manager: Arc, + grid_manager: Arc, ) { while let Ok(status) = subscribe.recv().await { let result = || async { @@ -320,7 +320,7 @@ async fn _listen_network_status(mut subscribe: broadcast::Receiver, } fn init_kv(root: &str) { - match flowy_database::kv::KV::init(root) { + match flowy_sqlite::kv::KV::init(root) { Ok(_) => {} Err(e) => tracing::error!("Init kv store failed: {}", e), } diff --git a/frontend/rust-lib/flowy-core/src/module.rs b/frontend/rust-lib/flowy-core/src/module.rs index 789cef0b2d..65543cb953 100644 --- a/frontend/rust-lib/flowy-core/src/module.rs +++ b/frontend/rust-lib/flowy-core/src/module.rs @@ -1,7 +1,7 @@ use flowy_client_ws::FlowyWebSocketConnect; +use flowy_database::manager::DatabaseManager; use flowy_document::DocumentManager; use flowy_folder::manager::FolderManager; -use flowy_grid::manager::GridManager; use flowy_user::services::UserSession; use lib_dispatch::prelude::AFPlugin; use std::sync::Arc; @@ -9,14 +9,14 @@ use std::sync::Arc; pub fn make_plugins( ws_conn: &Arc, folder_manager: &Arc, - grid_manager: &Arc, + grid_manager: &Arc, user_session: &Arc, document_manager: &Arc, ) -> Vec { let user_plugin = flowy_user::event_map::init(user_session.clone()); let folder_plugin = flowy_folder::event_map::init(folder_manager.clone()); let network_plugin = flowy_net::event_map::init(ws_conn.clone()); - let grid_plugin = flowy_grid::event_map::init(grid_manager.clone()); + let grid_plugin = flowy_database::event_map::init(grid_manager.clone()); let document_plugin = flowy_document::event_map::init(document_manager.clone()); vec![user_plugin, folder_plugin, network_plugin, grid_plugin, document_plugin] } diff --git a/frontend/rust-lib/flowy-database/Cargo.toml b/frontend/rust-lib/flowy-database/Cargo.toml index 418279838d..9c68ea0318 100644 --- a/frontend/rust-lib/flowy-database/Cargo.toml +++ b/frontend/rust-lib/flowy-database/Cargo.toml @@ -1,23 +1,63 @@ -[package] -name = "flowy-database" -version = "0.1.0" -edition = "2018" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -diesel = { version = "1.4.8", features = ["sqlite"] } -diesel_derives = { version = "1.4.1", features = ["sqlite"] } -diesel_migrations = { version = "1.4.0", features = ["sqlite"] } -tracing = { version = "0.1", features = ["log"] } -lazy_static = "1.4.0" - -r2d2 = "0.8.9" -libsqlite3-sys = { version = ">=0.8.0, <0.24.0", features = ["bundled"] } -scheduled-thread-pool = "0.2.5" -error-chain = "=0.12.0" -openssl = { version = "0.10.38", optional = true, features = ["vendored"] } -openssl-sys = { version = "0.9.69", optional = true, features = ["vendored"] } - -[features] -openssl_vendored = ["openssl", "openssl-sys"] +[package] +name = "flowy-database" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +lib-dispatch = { path = "../lib-dispatch" } +flowy-notification = { path = "../flowy-notification" } +flowy-revision = { path = "../flowy-revision" } +flowy-revision-persistence = { path = "../flowy-revision-persistence" } +flowy-task= { path = "../flowy-task" } +flowy-error = { path = "../flowy-error", features = ["adaptor_database", "adaptor_dispatch"]} +flowy-derive = { path = "../flowy-derive" } +lib-ot = { path = "../../../shared-lib/lib-ot" } +lib-infra = { path = "../../../shared-lib/lib-infra" } +grid-model = { path = "../../../shared-lib/grid-model" } +flowy-client-sync = { path = "../flowy-client-sync"} +revision-model = { path = "../../../shared-lib/revision-model" } +flowy-sqlite = { path = "../flowy-sqlite", optional = true } +anyhow = "1.0" + +strum = "0.21" +strum_macros = "0.21" +tracing = { version = "0.1", features = ["log"] } +protobuf = {version = "2.18.0"} +rust_decimal = "1.8.1" +rusty-money = {version = "0.4.0", features = ["iso"]} +lazy_static = "1.4.0" +chrono = "0.4.19" +nanoid = "0.4.0" +bytes = { version = "1.0" } +diesel = {version = "1.4.8", features = ["sqlite"]} +dashmap = "5" +tokio = {version = "1", features = ["sync"]} +rayon = "1.5.2" +serde = { version = "1.0", features = ["derive"] } +serde_json = {version = "1.0"} +serde_repr = "0.1" +indexmap = {version = "1.9.1", features = ["serde"]} +fancy-regex = "0.10.0" +regex = "1.5.6" +url = { version = "2"} +futures = "0.3.15" +atomic_refcell = "0.1.8" +crossbeam-utils = "0.8.7" +async-stream = "0.3.2" +parking_lot = "0.12.1" + +[dev-dependencies] +flowy-test = { path = "../flowy-test" } +flowy-database = { path = "", features = ["flowy_unit_test"]} + +[build-dependencies] +flowy-codegen = { path = "../flowy-codegen"} + +[features] +default = [] +rev-sqlite = ["flowy-sqlite"] +dart = ["flowy-codegen/dart", "flowy-notification/dart"] +ts = ["flowy-codegen/ts", "flowy-notification/ts"] +flowy_unit_test = ["flowy-revision/flowy_unit_test"] \ No newline at end of file diff --git a/frontend/rust-lib/flowy-grid/Flowy.toml b/frontend/rust-lib/flowy-database/Flowy.toml similarity index 100% rename from frontend/rust-lib/flowy-grid/Flowy.toml rename to frontend/rust-lib/flowy-database/Flowy.toml diff --git a/frontend/rust-lib/flowy-grid/build.rs b/frontend/rust-lib/flowy-database/build.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/build.rs rename to frontend/rust-lib/flowy-database/build.rs diff --git a/frontend/rust-lib/flowy-grid/src/entities/cell_entities.rs b/frontend/rust-lib/flowy-database/src/entities/cell_entities.rs similarity index 90% rename from frontend/rust-lib/flowy-grid/src/entities/cell_entities.rs rename to frontend/rust-lib/flowy-database/src/entities/cell_entities.rs index e0ed5b9458..2ea9fdea2b 100644 --- a/frontend/rust-lib/flowy-grid/src/entities/cell_entities.rs +++ b/frontend/rust-lib/flowy-database/src/entities/cell_entities.rs @@ -11,7 +11,7 @@ pub struct CreateSelectOptionPayloadPB { pub field_id: String, #[pb(index = 2)] - pub grid_id: String, + pub database_id: String, #[pb(index = 3)] pub option_name: String, @@ -19,7 +19,7 @@ pub struct CreateSelectOptionPayloadPB { pub struct CreateSelectOptionParams { pub field_id: String, - pub grid_id: String, + pub database_id: String, pub option_name: String, } @@ -28,12 +28,12 @@ impl TryInto for CreateSelectOptionPayloadPB { fn try_into(self) -> Result { let option_name = NotEmptyStr::parse(self.option_name).map_err(|_| ErrorCode::SelectOptionNameIsEmpty)?; - let grid_id = NotEmptyStr::parse(self.grid_id).map_err(|_| ErrorCode::GridIdIsEmpty)?; + let database_id = NotEmptyStr::parse(self.database_id).map_err(|_| ErrorCode::DatabaseIdIsEmpty)?; let field_id = NotEmptyStr::parse(self.field_id).map_err(|_| ErrorCode::FieldIdIsEmpty)?; Ok(CreateSelectOptionParams { field_id: field_id.0, option_name: option_name.0, - grid_id: grid_id.0, + database_id: database_id.0, }) } } @@ -41,7 +41,7 @@ impl TryInto for CreateSelectOptionPayloadPB { #[derive(Debug, Clone, Default, ProtoBuf)] pub struct CellPathPB { #[pb(index = 1)] - pub view_id: String, + pub database_id: String, #[pb(index = 2)] pub field_id: String, @@ -53,7 +53,7 @@ pub struct CellPathPB { /// Represents as the cell identifier. It's used to locate the cell in corresponding /// view's row with the field id. pub struct CellPathParams { - pub view_id: String, + pub database_id: String, pub field_id: String, pub row_id: String, } @@ -62,11 +62,11 @@ impl TryInto for CellPathPB { type Error = ErrorCode; fn try_into(self) -> Result { - let grid_id = NotEmptyStr::parse(self.view_id).map_err(|_| ErrorCode::GridIdIsEmpty)?; + let database_id = NotEmptyStr::parse(self.database_id).map_err(|_| ErrorCode::DatabaseIdIsEmpty)?; let field_id = NotEmptyStr::parse(self.field_id).map_err(|_| ErrorCode::FieldIdIsEmpty)?; let row_id = NotEmptyStr::parse(self.row_id).map_err(|_| ErrorCode::RowIdIsEmpty)?; Ok(CellPathParams { - view_id: grid_id.0, + database_id: database_id.0, field_id: field_id.0, row_id: row_id.0, }) @@ -141,7 +141,7 @@ impl std::convert::From> for RepeatedCellPB { #[derive(Debug, Clone, Default, ProtoBuf)] pub struct CellChangesetPB { #[pb(index = 1)] - pub grid_id: String, + pub database_id: String, #[pb(index = 2)] pub row_id: String, diff --git a/frontend/rust-lib/flowy-grid/src/entities/field_entities.rs b/frontend/rust-lib/flowy-database/src/entities/field_entities.rs similarity index 87% rename from frontend/rust-lib/flowy-grid/src/entities/field_entities.rs rename to frontend/rust-lib/flowy-database/src/entities/field_entities.rs index b36c09c0c1..49ef261453 100644 --- a/frontend/rust-lib/flowy-grid/src/entities/field_entities.rs +++ b/frontend/rust-lib/flowy-database/src/entities/field_entities.rs @@ -84,9 +84,9 @@ impl std::convert::From<&Arc> for FieldIdPB { } } #[derive(Debug, Clone, Default, ProtoBuf)] -pub struct GridFieldChangesetPB { +pub struct DatabaseFieldChangesetPB { #[pb(index = 1)] - pub grid_id: String, + pub database_id: String, #[pb(index = 2)] pub inserted_fields: Vec, @@ -98,28 +98,28 @@ pub struct GridFieldChangesetPB { pub updated_fields: Vec, } -impl GridFieldChangesetPB { - pub fn insert(grid_id: &str, inserted_fields: Vec) -> Self { +impl DatabaseFieldChangesetPB { + pub fn insert(database_id: &str, inserted_fields: Vec) -> Self { Self { - grid_id: grid_id.to_owned(), + database_id: database_id.to_owned(), inserted_fields, deleted_fields: vec![], updated_fields: vec![], } } - pub fn delete(grid_id: &str, deleted_fields: Vec) -> Self { + pub fn delete(database_id: &str, deleted_fields: Vec) -> Self { Self { - grid_id: grid_id.to_string(), + database_id: database_id.to_string(), inserted_fields: vec![], deleted_fields, updated_fields: vec![], } } - pub fn update(grid_id: &str, updated_fields: Vec) -> Self { + pub fn update(database_id: &str, updated_fields: Vec) -> Self { Self { - grid_id: grid_id.to_string(), + database_id: database_id.to_string(), inserted_fields: vec![], deleted_fields: vec![], updated_fields, @@ -148,7 +148,7 @@ impl IndexFieldPB { #[derive(Debug, Default, ProtoBuf)] pub struct CreateFieldPayloadPB { #[pb(index = 1)] - pub grid_id: String, + pub database_id: String, #[pb(index = 2)] pub field_type: FieldType, @@ -159,7 +159,7 @@ pub struct CreateFieldPayloadPB { #[derive(Clone)] pub struct CreateFieldParams { - pub grid_id: String, + pub database_id: String, pub field_type: FieldType, pub type_option_data: Option>, } @@ -168,9 +168,9 @@ impl TryInto for CreateFieldPayloadPB { type Error = ErrorCode; fn try_into(self) -> Result { - let grid_id = NotEmptyStr::parse(self.grid_id).map_err(|_| ErrorCode::GridIdIsEmpty)?; + let database_id = NotEmptyStr::parse(self.database_id).map_err(|_| ErrorCode::DatabaseIdIsEmpty)?; Ok(CreateFieldParams { - grid_id: grid_id.0, + database_id: database_id.0, field_type: self.field_type, type_option_data: self.type_option_data, }) @@ -180,7 +180,7 @@ impl TryInto for CreateFieldPayloadPB { #[derive(Debug, Default, ProtoBuf)] pub struct EditFieldChangesetPB { #[pb(index = 1)] - pub grid_id: String, + pub database_id: String, #[pb(index = 2)] pub field_id: String, @@ -193,7 +193,7 @@ pub struct EditFieldChangesetPB { } pub struct EditFieldParams { - pub grid_id: String, + pub database_id: String, pub field_id: String, pub field_type: FieldType, } @@ -202,10 +202,10 @@ impl TryInto for EditFieldChangesetPB { type Error = ErrorCode; fn try_into(self) -> Result { - let grid_id = NotEmptyStr::parse(self.grid_id).map_err(|_| ErrorCode::GridIdIsEmpty)?; + let database_id = NotEmptyStr::parse(self.database_id).map_err(|_| ErrorCode::DatabaseIdIsEmpty)?; let field_id = NotEmptyStr::parse(self.field_id).map_err(|_| ErrorCode::FieldIdIsEmpty)?; Ok(EditFieldParams { - grid_id: grid_id.0, + database_id: database_id.0, field_id: field_id.0, field_type: self.field_type, }) @@ -215,7 +215,7 @@ impl TryInto for EditFieldChangesetPB { #[derive(Debug, Default, ProtoBuf)] pub struct TypeOptionPathPB { #[pb(index = 1)] - pub grid_id: String, + pub database_id: String, #[pb(index = 2)] pub field_id: String, @@ -225,7 +225,7 @@ pub struct TypeOptionPathPB { } pub struct TypeOptionPathParams { - pub grid_id: String, + pub database_id: String, pub field_id: String, pub field_type: FieldType, } @@ -234,10 +234,10 @@ impl TryInto for TypeOptionPathPB { type Error = ErrorCode; fn try_into(self) -> Result { - let grid_id = NotEmptyStr::parse(self.grid_id).map_err(|_| ErrorCode::GridIdIsEmpty)?; + let database_id = NotEmptyStr::parse(self.database_id).map_err(|_| ErrorCode::DatabaseIdIsEmpty)?; let field_id = NotEmptyStr::parse(self.field_id).map_err(|_| ErrorCode::FieldIdIsEmpty)?; Ok(TypeOptionPathParams { - grid_id: grid_id.0, + database_id: database_id.0, field_id: field_id.0, field_type: self.field_type, }) @@ -247,7 +247,7 @@ impl TryInto for TypeOptionPathPB { #[derive(Debug, Default, ProtoBuf)] pub struct TypeOptionPB { #[pb(index = 1)] - pub grid_id: String, + pub database_id: String, #[pb(index = 2)] pub field: FieldPB, @@ -312,7 +312,7 @@ impl std::convert::From for RepeatedFieldIdPB { #[derive(ProtoBuf, Default)] pub struct TypeOptionChangesetPB { #[pb(index = 1)] - pub grid_id: String, + pub database_id: String, #[pb(index = 2)] pub field_id: String, @@ -324,7 +324,7 @@ pub struct TypeOptionChangesetPB { #[derive(Clone)] pub struct TypeOptionChangesetParams { - pub grid_id: String, + pub database_id: String, pub field_id: String, pub type_option_data: Vec, } @@ -333,11 +333,11 @@ impl TryInto for TypeOptionChangesetPB { type Error = ErrorCode; fn try_into(self) -> Result { - let grid_id = NotEmptyStr::parse(self.grid_id).map_err(|_| ErrorCode::GridIdIsEmpty)?; + let database_id = NotEmptyStr::parse(self.database_id).map_err(|_| ErrorCode::DatabaseIdIsEmpty)?; let _ = NotEmptyStr::parse(self.field_id.clone()).map_err(|_| ErrorCode::FieldIdIsEmpty)?; Ok(TypeOptionChangesetParams { - grid_id: grid_id.0, + database_id: database_id.0, field_id: self.field_id, type_option_data: self.type_option_data, }) @@ -347,14 +347,14 @@ impl TryInto for TypeOptionChangesetPB { #[derive(ProtoBuf, Default)] pub struct GetFieldPayloadPB { #[pb(index = 1)] - pub grid_id: String, + pub database_id: String, #[pb(index = 2, one_of)] pub field_ids: Option, } pub struct GetFieldParams { - pub grid_id: String, + pub database_id: String, pub field_ids: Option>, } @@ -362,7 +362,7 @@ impl TryInto for GetFieldPayloadPB { type Error = ErrorCode; fn try_into(self) -> Result { - let grid_id = NotEmptyStr::parse(self.grid_id).map_err(|_| ErrorCode::GridIdIsEmpty)?; + let database_id = NotEmptyStr::parse(self.database_id).map_err(|_| ErrorCode::DatabaseIdIsEmpty)?; let field_ids = self.field_ids.map(|repeated| { repeated .items @@ -372,7 +372,7 @@ impl TryInto for GetFieldPayloadPB { }); Ok(GetFieldParams { - grid_id: grid_id.0, + database_id: database_id.0, field_ids, }) } @@ -390,7 +390,7 @@ pub struct FieldChangesetPB { pub field_id: String, #[pb(index = 2)] - pub grid_id: String, + pub database_id: String, #[pb(index = 3, one_of)] pub name: Option, @@ -417,7 +417,7 @@ impl TryInto for FieldChangesetPB { type Error = ErrorCode; fn try_into(self) -> Result { - let grid_id = NotEmptyStr::parse(self.grid_id).map_err(|_| ErrorCode::GridIdIsEmpty)?; + let database_id = NotEmptyStr::parse(self.database_id).map_err(|_| ErrorCode::DatabaseIdIsEmpty)?; let field_id = NotEmptyStr::parse(self.field_id).map_err(|_| ErrorCode::FieldIdIsEmpty)?; let field_type = self.field_type.map(FieldTypeRevision::from); // if let Some(type_option_data) = self.type_option_data.as_ref() { @@ -428,7 +428,7 @@ impl TryInto for FieldChangesetPB { Ok(FieldChangesetParams { field_id: field_id.0, - grid_id: grid_id.0, + database_id: database_id.0, name: self.name, desc: self.desc, field_type, @@ -444,7 +444,7 @@ impl TryInto for FieldChangesetPB { pub struct FieldChangesetParams { pub field_id: String, - pub grid_id: String, + pub database_id: String, pub name: Option, @@ -616,7 +616,7 @@ pub struct DuplicateFieldPayloadPB { pub field_id: String, #[pb(index = 2)] - pub grid_id: String, + pub database_id: String, } #[derive(Debug, Clone, Default, ProtoBuf)] @@ -625,17 +625,17 @@ pub struct GridFieldIdentifierPayloadPB { pub field_id: String, #[pb(index = 2)] - pub grid_id: String, + pub database_id: String, } impl TryInto for DuplicateFieldPayloadPB { type Error = ErrorCode; fn try_into(self) -> Result { - let grid_id = NotEmptyStr::parse(self.grid_id).map_err(|_| ErrorCode::GridIdIsEmpty)?; + let database_id = NotEmptyStr::parse(self.database_id).map_err(|_| ErrorCode::DatabaseIdIsEmpty)?; let field_id = NotEmptyStr::parse(self.field_id).map_err(|_| ErrorCode::FieldIdIsEmpty)?; Ok(FieldIdParams { - grid_id: grid_id.0, + database_id: database_id.0, field_id: field_id.0, }) } @@ -647,17 +647,17 @@ pub struct DeleteFieldPayloadPB { pub field_id: String, #[pb(index = 2)] - pub grid_id: String, + pub database_id: String, } impl TryInto for DeleteFieldPayloadPB { type Error = ErrorCode; fn try_into(self) -> Result { - let grid_id = NotEmptyStr::parse(self.grid_id).map_err(|_| ErrorCode::GridIdIsEmpty)?; + let database_id = NotEmptyStr::parse(self.database_id).map_err(|_| ErrorCode::DatabaseIdIsEmpty)?; let field_id = NotEmptyStr::parse(self.field_id).map_err(|_| ErrorCode::FieldIdIsEmpty)?; Ok(FieldIdParams { - grid_id: grid_id.0, + database_id: database_id.0, field_id: field_id.0, }) } @@ -665,5 +665,5 @@ impl TryInto for DeleteFieldPayloadPB { pub struct FieldIdParams { pub field_id: String, - pub grid_id: String, + pub database_id: String, } diff --git a/frontend/rust-lib/flowy-grid/src/entities/filter_entities/checkbox_filter.rs b/frontend/rust-lib/flowy-database/src/entities/filter_entities/checkbox_filter.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/entities/filter_entities/checkbox_filter.rs rename to frontend/rust-lib/flowy-database/src/entities/filter_entities/checkbox_filter.rs diff --git a/frontend/rust-lib/flowy-grid/src/entities/filter_entities/checklist_filter.rs b/frontend/rust-lib/flowy-database/src/entities/filter_entities/checklist_filter.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/entities/filter_entities/checklist_filter.rs rename to frontend/rust-lib/flowy-database/src/entities/filter_entities/checklist_filter.rs diff --git a/frontend/rust-lib/flowy-grid/src/entities/filter_entities/date_filter.rs b/frontend/rust-lib/flowy-database/src/entities/filter_entities/date_filter.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/entities/filter_entities/date_filter.rs rename to frontend/rust-lib/flowy-database/src/entities/filter_entities/date_filter.rs diff --git a/frontend/rust-lib/flowy-grid/src/entities/filter_entities/filter_changeset.rs b/frontend/rust-lib/flowy-database/src/entities/filter_entities/filter_changeset.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/entities/filter_entities/filter_changeset.rs rename to frontend/rust-lib/flowy-database/src/entities/filter_entities/filter_changeset.rs diff --git a/frontend/rust-lib/flowy-grid/src/entities/filter_entities/mod.rs b/frontend/rust-lib/flowy-database/src/entities/filter_entities/mod.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/entities/filter_entities/mod.rs rename to frontend/rust-lib/flowy-database/src/entities/filter_entities/mod.rs diff --git a/frontend/rust-lib/flowy-grid/src/entities/filter_entities/number_filter.rs b/frontend/rust-lib/flowy-database/src/entities/filter_entities/number_filter.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/entities/filter_entities/number_filter.rs rename to frontend/rust-lib/flowy-database/src/entities/filter_entities/number_filter.rs diff --git a/frontend/rust-lib/flowy-grid/src/entities/filter_entities/select_option_filter.rs b/frontend/rust-lib/flowy-database/src/entities/filter_entities/select_option_filter.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/entities/filter_entities/select_option_filter.rs rename to frontend/rust-lib/flowy-database/src/entities/filter_entities/select_option_filter.rs diff --git a/frontend/rust-lib/flowy-grid/src/entities/filter_entities/text_filter.rs b/frontend/rust-lib/flowy-database/src/entities/filter_entities/text_filter.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/entities/filter_entities/text_filter.rs rename to frontend/rust-lib/flowy-database/src/entities/filter_entities/text_filter.rs diff --git a/frontend/rust-lib/flowy-grid/src/entities/filter_entities/util.rs b/frontend/rust-lib/flowy-database/src/entities/filter_entities/util.rs similarity index 98% rename from frontend/rust-lib/flowy-grid/src/entities/filter_entities/util.rs rename to frontend/rust-lib/flowy-database/src/entities/filter_entities/util.rs index bbf9747d8c..65e765a40d 100644 --- a/frontend/rust-lib/flowy-grid/src/entities/filter_entities/util.rs +++ b/frontend/rust-lib/flowy-database/src/entities/filter_entities/util.rs @@ -89,7 +89,7 @@ impl TryInto for DeleteFilterPayloadPB { fn try_into(self) -> Result { let view_id = NotEmptyStr::parse(self.view_id) - .map_err(|_| ErrorCode::GridViewIdIsEmpty)? + .map_err(|_| ErrorCode::DatabaseViewIdIsEmpty)? .0; let field_id = NotEmptyStr::parse(self.field_id) .map_err(|_| ErrorCode::FieldIdIsEmpty)? @@ -161,7 +161,7 @@ impl TryInto for AlterFilterPayloadPB { fn try_into(self) -> Result { let view_id = NotEmptyStr::parse(self.view_id) - .map_err(|_| ErrorCode::GridViewIdIsEmpty)? + .map_err(|_| ErrorCode::DatabaseViewIdIsEmpty)? .0; let field_id = NotEmptyStr::parse(self.field_id) diff --git a/frontend/rust-lib/flowy-grid/src/entities/grid_entities.rs b/frontend/rust-lib/flowy-database/src/entities/grid_entities.rs similarity index 81% rename from frontend/rust-lib/flowy-grid/src/entities/grid_entities.rs rename to frontend/rust-lib/flowy-database/src/entities/grid_entities.rs index a543787d28..9baf6b7357 100644 --- a/frontend/rust-lib/flowy-grid/src/entities/grid_entities.rs +++ b/frontend/rust-lib/flowy-database/src/entities/grid_entities.rs @@ -3,9 +3,9 @@ use crate::entities::{FieldIdPB, RowPB}; use flowy_derive::ProtoBuf; use flowy_error::ErrorCode; -/// [GridPB] describes how many fields and blocks the grid has +/// [DatabasePB] describes how many fields and blocks the grid has #[derive(Debug, Clone, Default, ProtoBuf)] -pub struct GridPB { +pub struct DatabasePB { #[pb(index = 1)] pub id: String, @@ -17,45 +17,27 @@ pub struct GridPB { } #[derive(ProtoBuf, Default)] -pub struct CreateGridPayloadPB { +pub struct CreateDatabasePayloadPB { #[pb(index = 1)] pub name: String, } #[derive(Clone, ProtoBuf, Default, Debug)] -pub struct GridIdPB { +pub struct DatabaseIdPB { #[pb(index = 1)] pub value: String, } -impl AsRef for GridIdPB { +impl AsRef for DatabaseIdPB { fn as_ref(&self) -> &str { &self.value } } -#[derive(Clone, ProtoBuf, Default, Debug)] -pub struct GridBlockIdPB { - #[pb(index = 1)] - pub value: String, -} - -impl AsRef for GridBlockIdPB { - fn as_ref(&self) -> &str { - &self.value - } -} - -impl std::convert::From<&str> for GridBlockIdPB { - fn from(s: &str) -> Self { - GridBlockIdPB { value: s.to_owned() } - } -} - #[derive(Debug, Clone, Default, ProtoBuf)] pub struct MoveFieldPayloadPB { #[pb(index = 1)] - pub grid_id: String, + pub view_id: String, #[pb(index = 2)] pub field_id: String, @@ -69,7 +51,7 @@ pub struct MoveFieldPayloadPB { #[derive(Clone)] pub struct MoveFieldParams { - pub grid_id: String, + pub view_id: String, pub field_id: String, pub from_index: i32, pub to_index: i32, @@ -79,10 +61,10 @@ impl TryInto for MoveFieldPayloadPB { type Error = ErrorCode; fn try_into(self) -> Result { - let grid_id = NotEmptyStr::parse(self.grid_id).map_err(|_| ErrorCode::GridIdIsEmpty)?; + let view_id = NotEmptyStr::parse(self.view_id).map_err(|_| ErrorCode::DatabaseViewIdIsEmpty)?; let item_id = NotEmptyStr::parse(self.field_id).map_err(|_| ErrorCode::InvalidData)?; Ok(MoveFieldParams { - grid_id: grid_id.0, + view_id: view_id.0, field_id: item_id.0, from_index: self.from_index, to_index: self.to_index, @@ -112,7 +94,7 @@ impl TryInto for MoveRowPayloadPB { type Error = ErrorCode; fn try_into(self) -> Result { - let view_id = NotEmptyStr::parse(self.view_id).map_err(|_| ErrorCode::GridViewIdIsEmpty)?; + let view_id = NotEmptyStr::parse(self.view_id).map_err(|_| ErrorCode::DatabaseViewIdIsEmpty)?; let from_row_id = NotEmptyStr::parse(self.from_row_id).map_err(|_| ErrorCode::RowIdIsEmpty)?; let to_row_id = NotEmptyStr::parse(self.to_row_id).map_err(|_| ErrorCode::RowIdIsEmpty)?; @@ -149,7 +131,7 @@ impl TryInto for MoveGroupRowPayloadPB { type Error = ErrorCode; fn try_into(self) -> Result { - let view_id = NotEmptyStr::parse(self.view_id).map_err(|_| ErrorCode::GridViewIdIsEmpty)?; + let view_id = NotEmptyStr::parse(self.view_id).map_err(|_| ErrorCode::DatabaseViewIdIsEmpty)?; let from_row_id = NotEmptyStr::parse(self.from_row_id).map_err(|_| ErrorCode::RowIdIsEmpty)?; let to_group_id = NotEmptyStr::parse(self.to_group_id).map_err(|_| ErrorCode::GroupIdIsEmpty)?; diff --git a/frontend/rust-lib/flowy-grid/src/entities/group_entities/configuration.rs b/frontend/rust-lib/flowy-database/src/entities/group_entities/configuration.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/entities/group_entities/configuration.rs rename to frontend/rust-lib/flowy-database/src/entities/group_entities/configuration.rs diff --git a/frontend/rust-lib/flowy-grid/src/entities/group_entities/group.rs b/frontend/rust-lib/flowy-database/src/entities/group_entities/group.rs similarity index 94% rename from frontend/rust-lib/flowy-grid/src/entities/group_entities/group.rs rename to frontend/rust-lib/flowy-database/src/entities/group_entities/group.rs index a05d9de1ef..883d7de15a 100644 --- a/frontend/rust-lib/flowy-grid/src/entities/group_entities/group.rs +++ b/frontend/rust-lib/flowy-database/src/entities/group_entities/group.rs @@ -1,5 +1,5 @@ use crate::entities::parser::NotEmptyStr; -use crate::entities::{CreateRowParams, FieldType, GridLayout, RowPB}; +use crate::entities::{CreateRowParams, DatabaseViewLayout, FieldType, RowPB}; use crate::services::group::Group; use flowy_derive::ProtoBuf; use flowy_error::ErrorCode; @@ -10,7 +10,7 @@ use std::sync::Arc; #[derive(ProtoBuf, Debug, Default, Clone)] pub struct CreateBoardCardPayloadPB { #[pb(index = 1)] - pub grid_id: String, + pub database_id: String, #[pb(index = 2)] pub group_id: String, @@ -23,17 +23,17 @@ impl TryInto for CreateBoardCardPayloadPB { type Error = ErrorCode; fn try_into(self) -> Result { - let grid_id = NotEmptyStr::parse(self.grid_id).map_err(|_| ErrorCode::GridIdIsEmpty)?; + let database_id = NotEmptyStr::parse(self.database_id).map_err(|_| ErrorCode::DatabaseIdIsEmpty)?; let group_id = NotEmptyStr::parse(self.group_id).map_err(|_| ErrorCode::GroupIdIsEmpty)?; let start_row_id = match self.start_row_id { None => None, Some(start_row_id) => Some(NotEmptyStr::parse(start_row_id).map_err(|_| ErrorCode::RowIdIsEmpty)?.0), }; Ok(CreateRowParams { - grid_id: grid_id.0, + database_id: database_id.0, start_row_id, group_id: Some(group_id.0), - layout: GridLayout::Board, + layout: DatabaseViewLayout::Board, }) } } diff --git a/frontend/rust-lib/flowy-grid/src/entities/group_entities/group_changeset.rs b/frontend/rust-lib/flowy-database/src/entities/group_entities/group_changeset.rs similarity index 98% rename from frontend/rust-lib/flowy-grid/src/entities/group_entities/group_changeset.rs rename to frontend/rust-lib/flowy-database/src/entities/group_entities/group_changeset.rs index 06893be1b6..df165a0c46 100644 --- a/frontend/rust-lib/flowy-grid/src/entities/group_entities/group_changeset.rs +++ b/frontend/rust-lib/flowy-database/src/entities/group_entities/group_changeset.rs @@ -110,7 +110,7 @@ impl TryInto for MoveGroupPayloadPB { fn try_into(self) -> Result { let view_id = NotEmptyStr::parse(self.view_id) - .map_err(|_| ErrorCode::GridViewIdIsEmpty)? + .map_err(|_| ErrorCode::DatabaseViewIdIsEmpty)? .0; let from_group_id = NotEmptyStr::parse(self.from_group_id) .map_err(|_| ErrorCode::GroupIdIsEmpty)? diff --git a/frontend/rust-lib/flowy-grid/src/entities/group_entities/mod.rs b/frontend/rust-lib/flowy-database/src/entities/group_entities/mod.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/entities/group_entities/mod.rs rename to frontend/rust-lib/flowy-database/src/entities/group_entities/mod.rs diff --git a/frontend/rust-lib/flowy-grid/src/entities/mod.rs b/frontend/rust-lib/flowy-database/src/entities/mod.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/entities/mod.rs rename to frontend/rust-lib/flowy-database/src/entities/mod.rs diff --git a/frontend/rust-lib/flowy-grid/src/entities/parser.rs b/frontend/rust-lib/flowy-database/src/entities/parser.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/entities/parser.rs rename to frontend/rust-lib/flowy-database/src/entities/parser.rs diff --git a/frontend/rust-lib/flowy-grid/src/entities/row_entities.rs b/frontend/rust-lib/flowy-database/src/entities/row_entities.rs similarity index 88% rename from frontend/rust-lib/flowy-grid/src/entities/row_entities.rs rename to frontend/rust-lib/flowy-database/src/entities/row_entities.rs index 64d92e2818..5de7477ea3 100644 --- a/frontend/rust-lib/flowy-grid/src/entities/row_entities.rs +++ b/frontend/rust-lib/flowy-database/src/entities/row_entities.rs @@ -1,5 +1,5 @@ use crate::entities::parser::NotEmptyStr; -use crate::entities::GridLayout; +use crate::entities::DatabaseViewLayout; use flowy_derive::ProtoBuf; use flowy_error::ErrorCode; use grid_model::RowRevision; @@ -136,14 +136,14 @@ pub struct UpdatedRowPB { #[derive(Debug, Default, Clone, ProtoBuf)] pub struct RowIdPB { #[pb(index = 1)] - pub grid_id: String, + pub database_id: String, #[pb(index = 2)] pub row_id: String, } pub struct RowIdParams { - pub grid_id: String, + pub database_id: String, pub row_id: String, } @@ -151,11 +151,11 @@ impl TryInto for RowIdPB { type Error = ErrorCode; fn try_into(self) -> Result { - let grid_id = NotEmptyStr::parse(self.grid_id).map_err(|_| ErrorCode::GridIdIsEmpty)?; + let database_id = NotEmptyStr::parse(self.database_id).map_err(|_| ErrorCode::DatabaseIdIsEmpty)?; let row_id = NotEmptyStr::parse(self.row_id).map_err(|_| ErrorCode::RowIdIsEmpty)?; Ok(RowIdParams { - grid_id: grid_id.0, + database_id: database_id.0, row_id: row_id.0, }) } @@ -173,7 +173,7 @@ pub struct BlockRowIdPB { #[derive(ProtoBuf, Default)] pub struct CreateTableRowPayloadPB { #[pb(index = 1)] - pub grid_id: String, + pub database_id: String, #[pb(index = 2, one_of)] pub start_row_id: Option, @@ -181,23 +181,23 @@ pub struct CreateTableRowPayloadPB { #[derive(Default)] pub struct CreateRowParams { - pub grid_id: String, + pub database_id: String, pub start_row_id: Option, pub group_id: Option, - pub layout: GridLayout, + pub layout: DatabaseViewLayout, } impl TryInto for CreateTableRowPayloadPB { type Error = ErrorCode; fn try_into(self) -> Result { - let grid_id = NotEmptyStr::parse(self.grid_id).map_err(|_| ErrorCode::GridIdIsEmpty)?; + let database_id = NotEmptyStr::parse(self.database_id).map_err(|_| ErrorCode::DatabaseIdIsEmpty)?; Ok(CreateRowParams { - grid_id: grid_id.0, + database_id: database_id.0, start_row_id: self.start_row_id, group_id: None, - layout: GridLayout::Table, + layout: DatabaseViewLayout::Grid, }) } } diff --git a/frontend/rust-lib/flowy-grid/src/entities/setting_entities.rs b/frontend/rust-lib/flowy-database/src/entities/setting_entities.rs similarity index 67% rename from frontend/rust-lib/flowy-grid/src/entities/setting_entities.rs rename to frontend/rust-lib/flowy-database/src/entities/setting_entities.rs index 8d4d4fad1b..cf5ff9c38c 100644 --- a/frontend/rust-lib/flowy-grid/src/entities/setting_entities.rs +++ b/frontend/rust-lib/flowy-database/src/entities/setting_entities.rs @@ -11,14 +11,14 @@ use std::convert::TryInto; use strum::IntoEnumIterator; use strum_macros::EnumIter; -/// [GridSettingPB] defines the setting options for the grid. Such as the filter, group, and sort. +/// [DatabaseViewSettingPB] defines the setting options for the grid. Such as the filter, group, and sort. #[derive(Eq, PartialEq, ProtoBuf, Debug, Default, Clone)] -pub struct GridSettingPB { +pub struct DatabaseViewSettingPB { #[pb(index = 1)] - pub layouts: Vec, + pub layouts: Vec, #[pb(index = 2)] - pub layout_type: GridLayout, + pub layout_type: DatabaseViewLayout, #[pb(index = 3)] pub filters: RepeatedFilterPB, @@ -31,16 +31,16 @@ pub struct GridSettingPB { } #[derive(Eq, PartialEq, ProtoBuf, Debug, Default, Clone)] -pub struct GridLayoutPB { +pub struct ViewLayoutConfigPB { #[pb(index = 1)] - ty: GridLayout, + ty: DatabaseViewLayout, } -impl GridLayoutPB { - pub fn all() -> Vec { +impl ViewLayoutConfigPB { + pub fn all() -> Vec { let mut layouts = vec![]; - for layout_ty in GridLayout::iter() { - layouts.push(GridLayoutPB { ty: layout_ty }) + for layout_ty in DatabaseViewLayout::iter() { + layouts.push(ViewLayoutConfigPB { ty: layout_ty }) } layouts @@ -49,45 +49,45 @@ impl GridLayoutPB { #[derive(Debug, Clone, PartialEq, Eq, ProtoBuf_Enum, EnumIter)] #[repr(u8)] -pub enum GridLayout { - Table = 0, +pub enum DatabaseViewLayout { + Grid = 0, Board = 1, Calendar = 2, } -impl std::default::Default for GridLayout { +impl std::default::Default for DatabaseViewLayout { fn default() -> Self { - GridLayout::Table + DatabaseViewLayout::Grid } } -impl std::convert::From for GridLayout { +impl std::convert::From for DatabaseViewLayout { fn from(rev: LayoutRevision) -> Self { match rev { - LayoutRevision::Table => GridLayout::Table, - LayoutRevision::Board => GridLayout::Board, - LayoutRevision::Calendar => GridLayout::Calendar, + LayoutRevision::Grid => DatabaseViewLayout::Grid, + LayoutRevision::Board => DatabaseViewLayout::Board, + LayoutRevision::Calendar => DatabaseViewLayout::Calendar, } } } -impl std::convert::From for LayoutRevision { - fn from(layout: GridLayout) -> Self { +impl std::convert::From for LayoutRevision { + fn from(layout: DatabaseViewLayout) -> Self { match layout { - GridLayout::Table => LayoutRevision::Table, - GridLayout::Board => LayoutRevision::Board, - GridLayout::Calendar => LayoutRevision::Calendar, + DatabaseViewLayout::Grid => LayoutRevision::Grid, + DatabaseViewLayout::Board => LayoutRevision::Board, + DatabaseViewLayout::Calendar => LayoutRevision::Calendar, } } } #[derive(Default, ProtoBuf)] -pub struct GridSettingChangesetPB { +pub struct DatabaseSettingChangesetPB { #[pb(index = 1)] - pub grid_id: String, + pub database_id: String, #[pb(index = 2)] - pub layout_type: GridLayout, + pub layout_type: DatabaseViewLayout, #[pb(index = 3, one_of)] pub alter_filter: Option, @@ -108,11 +108,11 @@ pub struct GridSettingChangesetPB { pub delete_sort: Option, } -impl TryInto for GridSettingChangesetPB { +impl TryInto for DatabaseSettingChangesetPB { type Error = ErrorCode; - fn try_into(self) -> Result { - let view_id = NotEmptyStr::parse(self.grid_id) + fn try_into(self) -> Result { + let database_id = NotEmptyStr::parse(self.database_id) .map_err(|_| ErrorCode::ViewIdInvalid)? .0; @@ -146,8 +146,8 @@ impl TryInto for GridSettingChangesetPB { Some(payload) => Some(payload.try_into()?), }; - Ok(GridSettingChangesetParams { - grid_id: view_id, + Ok(DatabaseSettingChangesetParams { + database_id, layout_type: self.layout_type.into(), insert_filter, delete_filter, @@ -159,8 +159,8 @@ impl TryInto for GridSettingChangesetPB { } } -pub struct GridSettingChangesetParams { - pub grid_id: String, +pub struct DatabaseSettingChangesetParams { + pub database_id: String, pub layout_type: LayoutRevision, pub insert_filter: Option, pub delete_filter: Option, @@ -170,7 +170,7 @@ pub struct GridSettingChangesetParams { pub delete_sort: Option, } -impl GridSettingChangesetParams { +impl DatabaseSettingChangesetParams { pub fn is_filter_changed(&self) -> bool { self.insert_filter.is_some() || self.delete_filter.is_some() } diff --git a/frontend/rust-lib/flowy-grid/src/entities/sort_entities.rs b/frontend/rust-lib/flowy-database/src/entities/sort_entities.rs similarity index 91% rename from frontend/rust-lib/flowy-grid/src/entities/sort_entities.rs rename to frontend/rust-lib/flowy-database/src/entities/sort_entities.rs index af1774a3f9..8b2c3664fa 100644 --- a/frontend/rust-lib/flowy-grid/src/entities/sort_entities.rs +++ b/frontend/rust-lib/flowy-database/src/entities/sort_entities.rs @@ -19,7 +19,7 @@ pub struct SortPB { pub field_type: FieldType, #[pb(index = 4)] - pub condition: GridSortConditionPB, + pub condition: SortConditionPB, } impl std::convert::From<&SortRevision> for SortPB { @@ -55,21 +55,21 @@ impl std::convert::From> for RepeatedSortPB { #[derive(Debug, Clone, PartialEq, Eq, ProtoBuf_Enum)] #[repr(u8)] -pub enum GridSortConditionPB { +pub enum SortConditionPB { Ascending = 0, Descending = 1, } -impl std::default::Default for GridSortConditionPB { +impl std::default::Default for SortConditionPB { fn default() -> Self { Self::Ascending } } -impl std::convert::From for GridSortConditionPB { +impl std::convert::From for SortConditionPB { fn from(condition: SortCondition) -> Self { match condition { - SortCondition::Ascending => GridSortConditionPB::Ascending, - SortCondition::Descending => GridSortConditionPB::Descending, + SortCondition::Ascending => SortConditionPB::Ascending, + SortCondition::Descending => SortConditionPB::Descending, } } } @@ -90,7 +90,7 @@ pub struct AlterSortPayloadPB { pub sort_id: Option, #[pb(index = 5)] - pub condition: GridSortConditionPB, + pub condition: SortConditionPB, } impl TryInto for AlterSortPayloadPB { @@ -98,7 +98,7 @@ impl TryInto for AlterSortPayloadPB { fn try_into(self) -> Result { let view_id = NotEmptyStr::parse(self.view_id) - .map_err(|_| ErrorCode::GridViewIdIsEmpty)? + .map_err(|_| ErrorCode::DatabaseViewIdIsEmpty)? .0; let field_id = NotEmptyStr::parse(self.field_id) @@ -150,7 +150,7 @@ impl TryInto for DeleteSortPayloadPB { fn try_into(self) -> Result { let view_id = NotEmptyStr::parse(self.view_id) - .map_err(|_| ErrorCode::GridViewIdIsEmpty)? + .map_err(|_| ErrorCode::DatabaseViewIdIsEmpty)? .0; let field_id = NotEmptyStr::parse(self.field_id) .map_err(|_| ErrorCode::FieldIdIsEmpty)? diff --git a/frontend/rust-lib/flowy-grid/src/entities/view_entities.rs b/frontend/rust-lib/flowy-database/src/entities/view_entities.rs similarity index 92% rename from frontend/rust-lib/flowy-grid/src/entities/view_entities.rs rename to frontend/rust-lib/flowy-database/src/entities/view_entities.rs index de8de7bc15..1e1170dc56 100644 --- a/frontend/rust-lib/flowy-grid/src/entities/view_entities.rs +++ b/frontend/rust-lib/flowy-database/src/entities/view_entities.rs @@ -2,7 +2,7 @@ use crate::entities::{InsertedRowPB, UpdatedRowPB}; use flowy_derive::ProtoBuf; #[derive(Debug, Default, Clone, ProtoBuf)] -pub struct GridRowsVisibilityChangesetPB { +pub struct ViewRowsVisibilityChangesetPB { #[pb(index = 1)] pub view_id: String, @@ -14,7 +14,7 @@ pub struct GridRowsVisibilityChangesetPB { } #[derive(Debug, Default, Clone, ProtoBuf)] -pub struct GridViewRowsChangesetPB { +pub struct ViewRowsChangesetPB { #[pb(index = 1)] pub view_id: String, @@ -28,7 +28,7 @@ pub struct GridViewRowsChangesetPB { pub updated_rows: Vec, } -impl GridViewRowsChangesetPB { +impl ViewRowsChangesetPB { pub fn from_insert(view_id: String, inserted_rows: Vec) -> Self { Self { view_id, diff --git a/frontend/rust-lib/flowy-grid/src/event_handler.rs b/frontend/rust-lib/flowy-database/src/event_handler.rs similarity index 75% rename from frontend/rust-lib/flowy-grid/src/event_handler.rs rename to frontend/rust-lib/flowy-database/src/event_handler.rs index f553de447f..4b279228a6 100644 --- a/frontend/rust-lib/flowy-grid/src/event_handler.rs +++ b/frontend/rust-lib/flowy-database/src/event_handler.rs @@ -1,5 +1,5 @@ use crate::entities::*; -use crate::manager::GridManager; +use crate::manager::DatabaseManager; use crate::services::cell::{FromCellString, ToCellChangesetString, TypeCellData}; use crate::services::field::{ default_type_option_builder_from_type, select_type_option_from_field_rev, type_option_builder_from_json_str, @@ -14,35 +14,35 @@ use lib_dispatch::prelude::{data_result, AFPluginData, AFPluginState, DataResult use std::sync::Arc; #[tracing::instrument(level = "trace", skip(data, manager), err)] -pub(crate) async fn get_grid_handler( - data: AFPluginData, - manager: AFPluginState>, -) -> DataResult { - let grid_id: GridIdPB = data.into_inner(); - let editor = manager.open_grid(grid_id.as_ref()).await?; - let grid = editor.get_grid(grid_id.as_ref()).await?; - data_result(grid) +pub(crate) async fn get_database_data_handler( + data: AFPluginData, + manager: AFPluginState>, +) -> DataResult { + let database_id: DatabaseIdPB = data.into_inner(); + let editor = manager.open_database(database_id.as_ref()).await?; + let database = editor.get_database(database_id.as_ref()).await?; + data_result(database) } #[tracing::instrument(level = "trace", skip(data, manager), err)] -pub(crate) async fn get_grid_setting_handler( - data: AFPluginData, - manager: AFPluginState>, -) -> DataResult { - let grid_id: GridIdPB = data.into_inner(); - let editor = manager.open_grid(grid_id).await?; - let grid_setting = editor.get_setting().await?; - data_result(grid_setting) +pub(crate) async fn get_database_setting_handler( + data: AFPluginData, + manager: AFPluginState>, +) -> DataResult { + let database_id: DatabaseIdPB = data.into_inner(); + let editor = manager.open_database(database_id).await?; + let database_setting = editor.get_setting().await?; + data_result(database_setting) } #[tracing::instrument(level = "trace", skip(data, manager), err)] -pub(crate) async fn update_grid_setting_handler( - data: AFPluginData, - manager: AFPluginState>, +pub(crate) async fn update_database_setting_handler( + data: AFPluginData, + manager: AFPluginState>, ) -> Result<(), FlowyError> { - let params: GridSettingChangesetParams = data.into_inner().try_into()?; + let params: DatabaseSettingChangesetParams = data.into_inner().try_into()?; - let editor = manager.get_grid_editor(¶ms.grid_id).await?; + let editor = manager.get_database_editor(¶ms.database_id).await?; if let Some(insert_params) = params.insert_group { editor.insert_group(insert_params).await?; } @@ -70,11 +70,11 @@ pub(crate) async fn update_grid_setting_handler( #[tracing::instrument(level = "trace", skip(data, manager), err)] pub(crate) async fn get_all_filters_handler( - data: AFPluginData, - manager: AFPluginState>, + data: AFPluginData, + manager: AFPluginState>, ) -> DataResult { - let grid_id: GridIdPB = data.into_inner(); - let editor = manager.open_grid(grid_id).await?; + let database_id: DatabaseIdPB = data.into_inner(); + let editor = manager.open_database(database_id).await?; let filters = RepeatedFilterPB { items: editor.get_all_filters().await?, }; @@ -83,35 +83,35 @@ 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, - manager: AFPluginState>, + data: AFPluginData, + manager: AFPluginState>, ) -> DataResult { - let grid_id: GridIdPB = data.into_inner(); - let editor = manager.open_grid(grid_id.as_ref()).await?; + let database_id: DatabaseIdPB = data.into_inner(); + let editor = manager.open_database(database_id.as_ref()).await?; let sorts = RepeatedSortPB { - items: editor.get_all_sorts(grid_id.as_ref()).await?, + items: editor.get_all_sorts(database_id.as_ref()).await?, }; data_result(sorts) } #[tracing::instrument(level = "trace", skip(data, manager), err)] pub(crate) async fn delete_all_sorts_handler( - data: AFPluginData, - manager: AFPluginState>, + data: AFPluginData, + manager: AFPluginState>, ) -> Result<(), FlowyError> { - let grid_id: GridIdPB = data.into_inner(); - let editor = manager.open_grid(grid_id.as_ref()).await?; - editor.delete_all_sorts(grid_id.as_ref()).await?; + let database_id: DatabaseIdPB = data.into_inner(); + let editor = manager.open_database(database_id.as_ref()).await?; + editor.delete_all_sorts(database_id.as_ref()).await?; Ok(()) } #[tracing::instrument(level = "trace", skip(data, manager), err)] pub(crate) async fn get_fields_handler( data: AFPluginData, - manager: AFPluginState>, + manager: AFPluginState>, ) -> DataResult { let params: GetFieldParams = data.into_inner().try_into()?; - let editor = manager.get_grid_editor(¶ms.grid_id).await?; + let editor = manager.get_database_editor(¶ms.database_id).await?; let field_revs = editor.get_field_revs(params.field_ids).await?; let repeated_field: RepeatedFieldPB = field_revs.into_iter().map(FieldPB::from).collect::>().into(); data_result(repeated_field) @@ -120,10 +120,10 @@ pub(crate) async fn get_fields_handler( #[tracing::instrument(level = "trace", skip(data, manager), err)] pub(crate) async fn update_field_handler( data: AFPluginData, - manager: AFPluginState>, + manager: AFPluginState>, ) -> Result<(), FlowyError> { let changeset: FieldChangesetParams = data.into_inner().try_into()?; - let editor = manager.get_grid_editor(&changeset.grid_id).await?; + let editor = manager.get_database_editor(&changeset.database_id).await?; editor.update_field(changeset).await?; Ok(()) } @@ -131,14 +131,14 @@ 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, - manager: AFPluginState>, + manager: AFPluginState>, ) -> Result<(), FlowyError> { let params: TypeOptionChangesetParams = data.into_inner().try_into()?; - let editor = manager.get_grid_editor(¶ms.grid_id).await?; + let editor = manager.get_database_editor(¶ms.database_id).await?; let old_field_rev = editor.get_field_rev(¶ms.field_id).await; editor .update_field_type_option( - ¶ms.grid_id, + ¶ms.database_id, ¶ms.field_id, params.type_option_data, old_field_rev, @@ -150,10 +150,10 @@ 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, - manager: AFPluginState>, + manager: AFPluginState>, ) -> Result<(), FlowyError> { let params: FieldIdParams = data.into_inner().try_into()?; - let editor = manager.get_grid_editor(¶ms.grid_id).await?; + let editor = manager.get_database_editor(¶ms.database_id).await?; editor.delete_field(¶ms.field_id).await?; Ok(()) } @@ -161,10 +161,10 @@ pub(crate) async fn delete_field_handler( #[tracing::instrument(level = "trace", skip(data, manager), err)] pub(crate) async fn switch_to_field_handler( data: AFPluginData, - manager: AFPluginState>, + manager: AFPluginState>, ) -> Result<(), FlowyError> { let params: EditFieldParams = data.into_inner().try_into()?; - let editor = manager.get_grid_editor(¶ms.grid_id).await?; + let editor = manager.get_database_editor(¶ms.database_id).await?; let old_field_rev = editor.get_field_rev(¶ms.field_id).await; editor .switch_to_field_type(¶ms.field_id, ¶ms.field_type) @@ -179,7 +179,7 @@ pub(crate) async fn switch_to_field_handler( // Update the type-option data after the field type has been changed let type_option_data = get_type_option_data(&new_field_rev, ¶ms.field_type).await?; editor - .update_field_type_option(¶ms.grid_id, &new_field_rev.id, type_option_data, old_field_rev) + .update_field_type_option(¶ms.database_id, &new_field_rev.id, type_option_data, old_field_rev) .await?; Ok(()) @@ -188,10 +188,10 @@ 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, - manager: AFPluginState>, + manager: AFPluginState>, ) -> Result<(), FlowyError> { let params: FieldIdParams = data.into_inner().try_into()?; - let editor = manager.get_grid_editor(¶ms.grid_id).await?; + let editor = manager.get_database_editor(¶ms.database_id).await?; editor.duplicate_field(¶ms.field_id).await?; Ok(()) } @@ -200,17 +200,17 @@ 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, - manager: AFPluginState>, + manager: AFPluginState>, ) -> DataResult { let params: TypeOptionPathParams = data.into_inner().try_into()?; - let editor = manager.get_grid_editor(¶ms.grid_id).await?; + let editor = manager.get_database_editor(¶ms.database_id).await?; match editor.get_field_rev(¶ms.field_id).await { None => Err(FlowyError::record_not_found()), Some(field_rev) => { let field_type = field_rev.ty.into(); let type_option_data = get_type_option_data(&field_rev, &field_type).await?; let data = TypeOptionPB { - grid_id: params.grid_id, + database_id: params.database_id, field: field_rev.into(), type_option_data, }; @@ -223,10 +223,10 @@ 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, - manager: AFPluginState>, + manager: AFPluginState>, ) -> DataResult { let params: CreateFieldParams = data.into_inner().try_into()?; - let editor = manager.get_grid_editor(¶ms.grid_id).await?; + let editor = manager.get_database_editor(¶ms.database_id).await?; let field_rev = editor .create_new_field_rev_with_type_option(¶ms.field_type, params.type_option_data) .await?; @@ -234,7 +234,7 @@ pub(crate) async fn create_field_type_option_data_handler( let type_option_data = get_type_option_data(&field_rev, &field_type).await?; data_result(TypeOptionPB { - grid_id: params.grid_id, + database_id: params.database_id, field: field_rev.into(), type_option_data, }) @@ -243,10 +243,10 @@ 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, - manager: AFPluginState>, + manager: AFPluginState>, ) -> Result<(), FlowyError> { let params: MoveFieldParams = data.into_inner().try_into()?; - let editor = manager.get_grid_editor(¶ms.grid_id).await?; + let editor = manager.get_database_editor(¶ms.view_id).await?; editor.move_field(params).await?; Ok(()) } @@ -271,10 +271,10 @@ async fn get_type_option_data(field_rev: &FieldRevision, field_type: &FieldType) // #[tracing::instrument(level = "debug", skip(data, manager), err)] pub(crate) async fn get_row_handler( data: AFPluginData, - manager: AFPluginState>, + manager: AFPluginState>, ) -> DataResult { let params: RowIdParams = data.into_inner().try_into()?; - let editor = manager.get_grid_editor(¶ms.grid_id).await?; + let editor = manager.get_database_editor(¶ms.database_id).await?; let row = editor.get_row_rev(¶ms.row_id).await?.map(make_row_from_row_rev); data_result(OptionalRowPB { row }) @@ -283,10 +283,10 @@ pub(crate) async fn get_row_handler( #[tracing::instrument(level = "debug", skip(data, manager), err)] pub(crate) async fn delete_row_handler( data: AFPluginData, - manager: AFPluginState>, + manager: AFPluginState>, ) -> Result<(), FlowyError> { let params: RowIdParams = data.into_inner().try_into()?; - let editor = manager.get_grid_editor(¶ms.grid_id).await?; + let editor = manager.get_database_editor(¶ms.database_id).await?; editor.delete_row(¶ms.row_id).await?; Ok(()) } @@ -294,10 +294,10 @@ pub(crate) async fn delete_row_handler( #[tracing::instrument(level = "debug", skip(data, manager), err)] pub(crate) async fn duplicate_row_handler( data: AFPluginData, - manager: AFPluginState>, + manager: AFPluginState>, ) -> Result<(), FlowyError> { let params: RowIdParams = data.into_inner().try_into()?; - let editor = manager.get_grid_editor(¶ms.grid_id).await?; + let editor = manager.get_database_editor(¶ms.database_id).await?; editor.duplicate_row(¶ms.row_id).await?; Ok(()) } @@ -305,10 +305,10 @@ pub(crate) async fn duplicate_row_handler( #[tracing::instrument(level = "debug", skip(data, manager), err)] pub(crate) async fn move_row_handler( data: AFPluginData, - manager: AFPluginState>, + manager: AFPluginState>, ) -> Result<(), FlowyError> { let params: MoveRowParams = data.into_inner().try_into()?; - let editor = manager.get_grid_editor(¶ms.view_id).await?; + let editor = manager.get_database_editor(¶ms.view_id).await?; editor.move_row(params).await?; Ok(()) } @@ -316,10 +316,10 @@ pub(crate) async fn move_row_handler( #[tracing::instrument(level = "debug", skip(data, manager), err)] pub(crate) async fn create_table_row_handler( data: AFPluginData, - manager: AFPluginState>, + manager: AFPluginState>, ) -> DataResult { let params: CreateRowParams = data.into_inner().try_into()?; - let editor = manager.get_grid_editor(params.grid_id.as_ref()).await?; + let editor = manager.get_database_editor(params.database_id.as_ref()).await?; let row = editor.create_row(params).await?; data_result(row) } @@ -327,10 +327,10 @@ pub(crate) async fn create_table_row_handler( #[tracing::instrument(level = "trace", skip_all, err)] pub(crate) async fn get_cell_handler( data: AFPluginData, - manager: AFPluginState>, + manager: AFPluginState>, ) -> DataResult { let params: CellPathParams = data.into_inner().try_into()?; - let editor = manager.get_grid_editor(¶ms.view_id).await?; + let editor = manager.get_database_editor(¶ms.database_id).await?; match editor.get_cell(¶ms).await { None => data_result(CellPB::empty(¶ms.field_id, ¶ms.row_id)), Some(cell) => data_result(cell), @@ -340,10 +340,10 @@ pub(crate) async fn get_cell_handler( #[tracing::instrument(level = "trace", skip_all, err)] pub(crate) async fn update_cell_handler( data: AFPluginData, - manager: AFPluginState>, + manager: AFPluginState>, ) -> Result<(), FlowyError> { let changeset: CellChangesetPB = data.into_inner(); - let editor = manager.get_grid_editor(&changeset.grid_id).await?; + let editor = manager.get_database_editor(&changeset.database_id).await?; editor .update_cell_with_changeset(&changeset.row_id, &changeset.field_id, changeset.type_cell_data) .await?; @@ -353,10 +353,10 @@ pub(crate) async fn update_cell_handler( #[tracing::instrument(level = "trace", skip_all, err)] pub(crate) async fn new_select_option_handler( data: AFPluginData, - manager: AFPluginState>, + manager: AFPluginState>, ) -> DataResult { let params: CreateSelectOptionParams = data.into_inner().try_into()?; - let editor = manager.get_grid_editor(¶ms.grid_id).await?; + let editor = manager.get_database_editor(¶ms.database_id).await?; match editor.get_field_rev(¶ms.field_id).await { None => Err(ErrorCode::InvalidData.into()), Some(field_rev) => { @@ -370,10 +370,10 @@ pub(crate) async fn new_select_option_handler( #[tracing::instrument(level = "trace", skip_all, err)] pub(crate) async fn update_select_option_handler( data: AFPluginData, - manager: AFPluginState>, + manager: AFPluginState>, ) -> Result<(), FlowyError> { let changeset: SelectOptionChangeset = data.into_inner().try_into()?; - let editor = manager.get_grid_editor(&changeset.cell_path.view_id).await?; + let editor = manager.get_database_editor(&changeset.cell_path.database_id).await?; let field_id = changeset.cell_path.field_id.clone(); editor .modify_field_rev(&field_id, |field_rev| { @@ -430,10 +430,10 @@ pub(crate) async fn update_select_option_handler( #[tracing::instrument(level = "trace", skip(data, manager), err)] pub(crate) async fn get_select_option_handler( data: AFPluginData, - manager: AFPluginState>, + manager: AFPluginState>, ) -> DataResult { let params: CellPathParams = data.into_inner().try_into()?; - let editor = manager.get_grid_editor(¶ms.view_id).await?; + let editor = manager.get_database_editor(¶ms.database_id).await?; match editor.get_field_rev(¶ms.field_id).await { None => { tracing::error!("Can't find the select option field with id: {}", params.field_id); @@ -460,10 +460,10 @@ 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, - manager: AFPluginState>, + manager: AFPluginState>, ) -> Result<(), FlowyError> { let params: SelectOptionCellChangesetParams = data.into_inner().try_into()?; - let editor = manager.get_grid_editor(¶ms.cell_identifier.view_id).await?; + let editor = manager.get_database_editor(¶ms.cell_identifier.database_id).await?; let changeset = SelectOptionCellChangeset { insert_option_ids: params.insert_option_ids, delete_option_ids: params.delete_option_ids, @@ -482,7 +482,7 @@ pub(crate) async fn update_select_option_cell_handler( #[tracing::instrument(level = "trace", skip_all, err)] pub(crate) async fn update_date_cell_handler( data: AFPluginData, - manager: AFPluginState>, + manager: AFPluginState>, ) -> Result<(), FlowyError> { let data = data.into_inner(); let cell_path: CellPathParams = data.cell_path.try_into()?; @@ -492,7 +492,7 @@ pub(crate) async fn update_date_cell_handler( is_utc: data.is_utc, }; - let editor = manager.get_grid_editor(&cell_path.view_id).await?; + let editor = manager.get_database_editor(&cell_path.database_id).await?; editor .update_cell(cell_path.row_id, cell_path.field_id, cell_changeset) .await?; @@ -501,11 +501,11 @@ pub(crate) async fn update_date_cell_handler( #[tracing::instrument(level = "trace", skip_all, err)] pub(crate) async fn get_groups_handler( - data: AFPluginData, - manager: AFPluginState>, + data: AFPluginData, + manager: AFPluginState>, ) -> DataResult { - let params: GridIdPB = data.into_inner(); - let editor = manager.get_grid_editor(¶ms.value).await?; + let params: DatabaseIdPB = data.into_inner(); + let editor = manager.get_database_editor(¶ms.value).await?; let group = editor.load_groups().await?; data_result(group) } @@ -513,10 +513,10 @@ pub(crate) async fn get_groups_handler( #[tracing::instrument(level = "debug", skip(data, manager), err)] pub(crate) async fn create_board_card_handler( data: AFPluginData, - manager: AFPluginState>, + manager: AFPluginState>, ) -> DataResult { let params: CreateRowParams = data.into_inner().try_into()?; - let editor = manager.get_grid_editor(params.grid_id.as_ref()).await?; + let editor = manager.get_database_editor(params.database_id.as_ref()).await?; let row = editor.create_row(params).await?; data_result(row) } @@ -524,10 +524,10 @@ pub(crate) async fn create_board_card_handler( #[tracing::instrument(level = "debug", skip(data, manager), err)] pub(crate) async fn move_group_handler( data: AFPluginData, - manager: AFPluginState>, + manager: AFPluginState>, ) -> FlowyResult<()> { let params: MoveGroupParams = data.into_inner().try_into()?; - let editor = manager.get_grid_editor(params.view_id.as_ref()).await?; + let editor = manager.get_database_editor(params.view_id.as_ref()).await?; editor.move_group(params).await?; Ok(()) } @@ -535,10 +535,10 @@ 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, - manager: AFPluginState>, + manager: AFPluginState>, ) -> FlowyResult<()> { let params: MoveGroupRowParams = data.into_inner().try_into()?; - let editor = manager.get_grid_editor(params.view_id.as_ref()).await?; + let editor = manager.get_database_editor(params.view_id.as_ref()).await?; editor.move_group_row(params).await?; Ok(()) } diff --git a/frontend/rust-lib/flowy-grid/src/event_map.rs b/frontend/rust-lib/flowy-database/src/event_map.rs similarity index 63% rename from frontend/rust-lib/flowy-grid/src/event_map.rs rename to frontend/rust-lib/flowy-database/src/event_map.rs index 056c27e80e..312eaf2ad6 100644 --- a/frontend/rust-lib/flowy-grid/src/event_map.rs +++ b/frontend/rust-lib/flowy-database/src/event_map.rs @@ -1,89 +1,92 @@ use crate::event_handler::*; -use crate::manager::GridManager; +use crate::manager::DatabaseManager; use flowy_derive::{Flowy_Event, ProtoBuf_Enum}; use lib_dispatch::prelude::*; use std::sync::Arc; use strum_macros::Display; -pub fn init(grid_manager: Arc) -> AFPlugin { - let mut plugin = AFPlugin::new().name(env!("CARGO_PKG_NAME")).state(grid_manager); +pub fn init(database_manager: Arc) -> AFPlugin { + let mut plugin = AFPlugin::new().name(env!("CARGO_PKG_NAME")).state(database_manager); plugin = plugin - .event(GridEvent::GetGrid, get_grid_handler) + .event(DatabaseEvent::GetDatabase, get_database_data_handler) // .event(GridEvent::GetGridBlocks, get_grid_blocks_handler) - .event(GridEvent::GetGridSetting, get_grid_setting_handler) - .event(GridEvent::UpdateGridSetting, update_grid_setting_handler) - .event(GridEvent::GetAllFilters, get_all_filters_handler) - .event(GridEvent::GetAllSorts, get_all_sorts_handler) - .event(GridEvent::DeleteAllSorts, delete_all_sorts_handler) + .event(DatabaseEvent::GetDatabaseSetting, get_database_setting_handler) + .event(DatabaseEvent::UpdateDatabaseSetting, update_database_setting_handler) + .event(DatabaseEvent::GetAllFilters, get_all_filters_handler) + .event(DatabaseEvent::GetAllSorts, get_all_sorts_handler) + .event(DatabaseEvent::DeleteAllSorts, delete_all_sorts_handler) // Field - .event(GridEvent::GetFields, get_fields_handler) - .event(GridEvent::UpdateField, update_field_handler) - .event(GridEvent::UpdateFieldTypeOption, update_field_type_option_handler) - .event(GridEvent::DeleteField, delete_field_handler) - .event(GridEvent::SwitchToField, switch_to_field_handler) - .event(GridEvent::DuplicateField, duplicate_field_handler) - .event(GridEvent::MoveField, move_field_handler) - .event(GridEvent::GetFieldTypeOption, get_field_type_option_data_handler) - .event(GridEvent::CreateFieldTypeOption, create_field_type_option_data_handler) + .event(DatabaseEvent::GetFields, get_fields_handler) + .event(DatabaseEvent::UpdateField, update_field_handler) + .event(DatabaseEvent::UpdateFieldTypeOption, update_field_type_option_handler) + .event(DatabaseEvent::DeleteField, delete_field_handler) + .event(DatabaseEvent::SwitchToField, switch_to_field_handler) + .event(DatabaseEvent::DuplicateField, duplicate_field_handler) + .event(DatabaseEvent::MoveField, move_field_handler) + .event(DatabaseEvent::GetFieldTypeOption, get_field_type_option_data_handler) + .event( + DatabaseEvent::CreateFieldTypeOption, + create_field_type_option_data_handler, + ) // Row - .event(GridEvent::CreateTableRow, create_table_row_handler) - .event(GridEvent::GetRow, get_row_handler) - .event(GridEvent::DeleteRow, delete_row_handler) - .event(GridEvent::DuplicateRow, duplicate_row_handler) - .event(GridEvent::MoveRow, move_row_handler) + .event(DatabaseEvent::CreateTableRow, create_table_row_handler) + .event(DatabaseEvent::GetRow, get_row_handler) + .event(DatabaseEvent::DeleteRow, delete_row_handler) + .event(DatabaseEvent::DuplicateRow, duplicate_row_handler) + .event(DatabaseEvent::MoveRow, move_row_handler) // Cell - .event(GridEvent::GetCell, get_cell_handler) - .event(GridEvent::UpdateCell, update_cell_handler) + .event(DatabaseEvent::GetCell, get_cell_handler) + .event(DatabaseEvent::UpdateCell, update_cell_handler) // SelectOption - .event(GridEvent::NewSelectOption, new_select_option_handler) - .event(GridEvent::UpdateSelectOption, update_select_option_handler) - .event(GridEvent::GetSelectOptionCellData, get_select_option_handler) - .event(GridEvent::UpdateSelectOptionCell, update_select_option_cell_handler) + .event(DatabaseEvent::NewSelectOption, new_select_option_handler) + .event(DatabaseEvent::UpdateSelectOption, update_select_option_handler) + .event(DatabaseEvent::GetSelectOptionCellData, get_select_option_handler) + .event(DatabaseEvent::UpdateSelectOptionCell, update_select_option_cell_handler) // Date - .event(GridEvent::UpdateDateCell, update_date_cell_handler) + .event(DatabaseEvent::UpdateDateCell, update_date_cell_handler) // Group - .event(GridEvent::CreateBoardCard, create_board_card_handler) - .event(GridEvent::MoveGroup, move_group_handler) - .event(GridEvent::MoveGroupRow, move_group_row_handler) - .event(GridEvent::GetGroup, get_groups_handler); + .event(DatabaseEvent::CreateBoardCard, create_board_card_handler) + .event(DatabaseEvent::MoveGroup, move_group_handler) + .event(DatabaseEvent::MoveGroupRow, move_group_row_handler) + .event(DatabaseEvent::GetGroup, get_groups_handler); plugin } -/// [GridEvent] defines events that are used to interact with the Grid. You could check [this](https://appflowy.gitbook.io/docs/essential-documentation/contribute-to-appflowy/architecture/backend/protobuf) +/// [DatabaseEvent] defines events that are used to interact with the Grid. You could check [this](https://appflowy.gitbook.io/docs/essential-documentation/contribute-to-appflowy/architecture/backend/protobuf) /// out, it includes how to use these annotations: input, output, etc. #[derive(Clone, Copy, PartialEq, Eq, Debug, Display, Hash, ProtoBuf_Enum, Flowy_Event)] #[event_err = "FlowyError"] -pub enum GridEvent { - /// [GetGrid] event is used to get the [GridPB] +pub enum DatabaseEvent { + /// [GetDatabase] event is used to get the [DatabasePB] /// - /// The event handler accepts a [GridIdPB] and returns a [GridPB] if there are no errors. - #[event(input = "GridIdPB", output = "GridPB")] - GetGrid = 0, + /// The event handler accepts a [DatabaseIdPB] and returns a [DatabasePB] if there are no errors. + #[event(input = "DatabaseIdPB", output = "DatabasePB")] + GetDatabase = 0, - /// [GetGridSetting] event is used to get the grid's settings. + /// [GetDatabaseSetting] event is used to get the database's settings. /// - /// The event handler accepts [GridIdPB] and return [GridSettingPB] + /// The event handler accepts [DatabaseIdPB] and return [DatabaseViewSettingPB] /// if there is no errors. - #[event(input = "GridIdPB", output = "GridSettingPB")] - GetGridSetting = 2, + #[event(input = "DatabaseIdPB", output = "DatabaseViewSettingPB")] + GetDatabaseSetting = 2, - /// [UpdateGridSetting] event is used to update the grid's settings. + /// [UpdateDatabaseSetting] event is used to update the database's settings. /// - /// The event handler accepts [GridSettingChangesetPB] and return errors if failed to modify the grid's settings. - #[event(input = "GridSettingChangesetPB")] - UpdateGridSetting = 3, + /// The event handler accepts [DatabaseSettingChangesetPB] and return errors if failed to modify the grid's settings. + #[event(input = "DatabaseSettingChangesetPB")] + UpdateDatabaseSetting = 3, - #[event(input = "GridIdPB", output = "RepeatedFilterPB")] + #[event(input = "DatabaseIdPB", output = "RepeatedFilterPB")] GetAllFilters = 4, - #[event(input = "GridIdPB", output = "RepeatedSortPB")] + #[event(input = "DatabaseIdPB", output = "RepeatedSortPB")] GetAllSorts = 5, - #[event(input = "GridIdPB")] + #[event(input = "DatabaseIdPB")] DeleteAllSorts = 6, - /// [GetFields] event is used to get the grid's settings. + /// [GetFields] event is used to get the database's settings. /// /// The event handler accepts a [GetFieldPayloadPB] and returns a [RepeatedFieldPB] /// if there are no errors. @@ -111,13 +114,13 @@ pub enum GridEvent { UpdateFieldTypeOption = 12, /// [DeleteField] event is used to delete a Field. [DeleteFieldPayloadPB] is the context that - /// is used to delete the field from the Grid. + /// is used to delete the field from the Database. #[event(input = "DeleteFieldPayloadPB")] DeleteField = 14, /// [SwitchToField] event is used to update the current Field's type. /// It will insert a new FieldTypeOptionData if the new FieldType doesn't exist before, otherwise - /// reuse the existing FieldTypeOptionData. You could check the [GridRevisionPad] for more details. + /// reuse the existing FieldTypeOptionData. You could check the [DatabaseRevisionPad] for more details. #[event(input = "EditFieldChangesetPB")] SwitchToField = 20, @@ -162,8 +165,8 @@ pub enum GridEvent { /// [UpdateSelectOption] event is used to update a FieldTypeOptionData whose field_type is /// FieldType::SingleSelect or FieldType::MultiSelect. /// - /// This event may trigger the GridNotification::DidUpdateCell event. - /// For example, GridNotification::DidUpdateCell will be triggered if the [SelectOptionChangesetPB] + /// This event may trigger the DatabaseNotification::DidUpdateCell event. + /// For example, DatabaseNotification::DidUpdateCell will be triggered if the [SelectOptionChangesetPB] /// carries a change that updates the name of the option. #[event(input = "SelectOptionChangesetPB")] UpdateSelectOption = 32, @@ -213,7 +216,7 @@ pub enum GridEvent { #[event(input = "DateChangesetPB")] UpdateDateCell = 80, - #[event(input = "GridIdPB", output = "RepeatedGroupPB")] + #[event(input = "DatabaseIdPB", output = "RepeatedGroupPB")] GetGroup = 100, #[event(input = "CreateBoardCardPayloadPB", output = "RowPB")] diff --git a/frontend/rust-lib/flowy-database/src/lib.rs b/frontend/rust-lib/flowy-database/src/lib.rs index 6a7f94fbae..977330d5cd 100644 --- a/frontend/rust-lib/flowy-database/src/lib.rs +++ b/frontend/rust-lib/flowy-database/src/lib.rs @@ -1,55 +1,14 @@ -pub use diesel::*; -pub use diesel_derives::*; -use diesel_migrations::*; -use std::{fmt::Debug, io, path::Path}; -pub mod kv; -mod sqlite; - -use crate::sqlite::PoolConfig; -pub use crate::sqlite::{ConnectionPool, DBConnection, Database}; - -pub mod schema; +extern crate core; #[macro_use] -pub mod macros; +mod macros; -#[macro_use] -extern crate diesel; -#[macro_use] -extern crate diesel_derives; -#[macro_use] -extern crate diesel_migrations; +mod event_handler; +pub mod event_map; +pub mod manager; -pub type Error = diesel::result::Error; -pub mod prelude { - pub use super::UserDatabaseConnection; - pub use crate::*; - pub use diesel::SqliteConnection; - pub use diesel::{query_dsl::*, BelongingToDsl, ExpressionMethods, RunQueryDsl}; -} - -embed_migrations!("../flowy-database/migrations/"); -pub const DB_NAME: &str = "flowy-database.db"; - -pub fn init(storage_path: &str) -> Result { - if !Path::new(storage_path).exists() { - std::fs::create_dir_all(storage_path)?; - } - let pool_config = PoolConfig::default(); - let database = Database::new(storage_path, DB_NAME, pool_config).map_err(as_io_error)?; - let conn = database.get_connection().map_err(as_io_error)?; - embedded_migrations::run(&*conn).map_err(as_io_error)?; - Ok(database) -} - -fn as_io_error(e: E) -> io::Error -where - E: Into + Debug, -{ - let msg = format!("{:?}", e); - io::Error::new(io::ErrorKind::NotConnected, msg) -} - -pub trait UserDatabaseConnection: Send + Sync { - fn get_connection(&self) -> Result; -} +pub mod entities; +mod notification; +mod protobuf; +pub mod services; +pub mod util; diff --git a/frontend/rust-lib/flowy-database/src/macros.rs b/frontend/rust-lib/flowy-database/src/macros.rs index bee1958a9b..72018725a7 100644 --- a/frontend/rust-lib/flowy-database/src/macros.rs +++ b/frontend/rust-lib/flowy-database/src/macros.rs @@ -1,212 +1,91 @@ -#[rustfmt::skip] -/* -diesel master support on_conflict on sqlite but not 1.4.7 version. Workaround for this - -match dsl::workspace_table - .filter(workspace_table::id.eq(table.id.clone())) - .count() - .get_result(conn) - .unwrap_or(0) -{ - 0 => diesel::insert_into(workspace_table::table).values(table) - .on_conflict(workspace_table::id) - .do_update() - .set(WorkspaceTableChangeset::from_table(workspace_table)) - .execute(conn)?, - _ => { - let changeset = WorkspaceTableChangeset::from_table(table); - let filter = dsl::workspace_table.filter(workspace_table::id.eq(changeset.id.clone())); - diesel::update(filter).set(changeset).execute(conn)?; - }, -} - -is equivalent to: - -match diesel_record_count!(workspace_table, &table.id, conn) { - 0 => diesel_insert_table!(workspace_table, table, conn), - _ => diesel_update_table!(workspace_table, WorkspaceTableChangeset::from_table(table), &*conn), -} -*/ - #[macro_export] -macro_rules! diesel_insert_table { - ( - $table_name:ident, - $table:expr, - $connection:expr - ) => { - { - let _ = diesel::insert_into($table_name::table) - .values($table) - // .on_conflict($table_name::dsl::id) - // .do_update() - // .set(WorkspaceTableChangeset::from_table(workspace_table)) - .execute($connection)?; - } - }; -} - -#[macro_export] -macro_rules! diesel_record_count { - ( - $table_name:ident, - $id:expr, - $connection:expr - ) => { - $table_name::dsl::$table_name - .filter($table_name::dsl::id.eq($id.clone())) - .count() - .get_result($connection) - .unwrap_or(0); - }; -} - -#[macro_export] -macro_rules! diesel_revision_record_count { - ( - $table_name:expr, - $filter:expr, - $connection:expr - ) => { - $table_name - .filter($table_name::dsl::id.eq($id)) - .count() - .get_result($connection) - .unwrap_or(0); - }; -} - -#[macro_export] -macro_rules! diesel_update_table { - ( - $table_name:ident, - $changeset:expr, - $connection:expr - ) => {{ - let filter = $table_name::dsl::$table_name.filter($table_name::dsl::id.eq($changeset.id.clone())); - let affected_row = diesel::update(filter).set($changeset).execute($connection)?; - debug_assert_eq!(affected_row, 1); - }}; -} - -#[macro_export] -macro_rules! diesel_delete_table { - ( - $table_name:ident, - $id:ident, - $connection:ident - ) => { - let filter = $table_name::dsl::$table_name.filter($table_name::dsl::id.eq($id)); - let affected_row = diesel::delete(filter).execute(&*$connection)?; - debug_assert_eq!(affected_row, 1); - }; -} - -#[macro_export] -macro_rules! impl_sql_binary_expression { - ($target:ident) => { - impl diesel::serialize::ToSql for $target { - fn to_sql( - &self, - out: &mut diesel::serialize::Output, - ) -> diesel::serialize::Result { - let bytes: Vec = self.try_into().map_err(|e| format!("{:?}", e))?; - diesel::serialize::ToSql::::to_sql(&bytes, out) +macro_rules! impl_into_box_type_option_builder { + ($target: ident) => { + impl std::convert::From<$target> for BoxTypeOptionBuilder { + fn from(target: $target) -> BoxTypeOptionBuilder { + Box::new(target) } } - // https://docs.diesel.rs/src/diesel/sqlite/types/mod.rs.html#30-33 - // impl FromSql for *const [u8] { - // fn from_sql(bytes: Option<&SqliteValue>) -> deserialize::Result { - // let bytes = not_none!(bytes).read_blob(); - // Ok(bytes as *const _) - // } - // } - impl diesel::deserialize::FromSql for $target - where - DB: diesel::backend::Backend, - *const [u8]: diesel::deserialize::FromSql, - { - fn from_sql(bytes: Option<&DB::RawValue>) -> diesel::deserialize::Result { - let slice_ptr = - <*const [u8] as diesel::deserialize::FromSql>::from_sql(bytes)?; - let bytes = unsafe { &*slice_ptr }; + }; +} - match $target::try_from(bytes) { - Ok(object) => Ok(object), +macro_rules! impl_builder_from_json_str_and_from_bytes { + ($target: ident,$type_option: ident) => { + impl $target { + pub fn from_protobuf_bytes(bytes: Bytes) -> $target { + let type_option = $type_option::from_protobuf_bytes(bytes); + $target(type_option) + } + + pub fn from_json_str(s: &str) -> $target { + let type_option = $type_option::from_json_str(s); + $target(type_option) + } + } + }; +} + +#[macro_export] +macro_rules! impl_type_option { + ($target: ident, $field_type:expr) => { + impl std::convert::From<&FieldRevision> for $target { + fn from(field_rev: &FieldRevision) -> $target { + match field_rev.get_type_option::<$target>($field_type.into()) { + None => $target::default(), + Some(target) => target, + } + } + } + + impl std::convert::From<&std::sync::Arc> for $target { + fn from(field_rev: &std::sync::Arc) -> $target { + match field_rev.get_type_option::<$target>($field_type.into()) { + None => $target::default(), + Some(target) => target, + } + } + } + + impl std::convert::From<$target> for String { + fn from(type_option: $target) -> String { + type_option.json_str() + } + } + + impl TypeOptionDataSerializer for $target { + fn json_str(&self) -> String { + match serde_json::to_string(&self) { + Ok(s) => s, Err(e) => { - log::error!( - "{:?} deserialize from bytes fail. {:?}", - std::any::type_name::<$target>(), - e + tracing::error!("Field type data serialize to json fail, error: {:?}", e); + serde_json::to_string(&$target::default()).unwrap() + } + } + } + + fn protobuf_bytes(&self) -> Bytes { + self.clone().try_into().unwrap() + } + } + + impl TypeOptionDataDeserializer for $target { + fn from_json_str(s: &str) -> $target { + match serde_json::from_str(s) { + Ok(obj) => obj, + Err(err) => { + tracing::error!( + "{} type option deserialize from {} failed, {:?}", + stringify!($target), + s, + err ); - panic!(); + $target::default() } } } - } - }; -} -#[macro_export] -macro_rules! impl_sql_integer_expression { - ($target:ident) => { - impl diesel::serialize::ToSql for $target - where - DB: diesel::backend::Backend, - i32: diesel::serialize::ToSql, - { - fn to_sql( - &self, - out: &mut diesel::serialize::Output, - ) -> diesel::serialize::Result { - (*self as i32).to_sql(out) - } - } - - impl diesel::deserialize::FromSql for $target - where - DB: diesel::backend::Backend, - i32: diesel::deserialize::FromSql, - { - fn from_sql(bytes: Option<&DB::RawValue>) -> diesel::deserialize::Result { - let smaill_int = i32::from_sql(bytes)?; - Ok($target::from(smaill_int)) - } - } - }; -} - -#[macro_export] -macro_rules! impl_rev_state_map { - ($target:ident) => { - impl std::convert::From for $target { - fn from(value: i32) -> Self { - match value { - 0 => $target::Sync, - 1 => $target::Ack, - o => { - tracing::error!("Unsupported rev state {}, fallback to RevState::Local", o); - $target::Sync - } - } - } - } - - impl std::convert::From<$target> for RevisionState { - fn from(s: $target) -> Self { - match s { - $target::Sync => RevisionState::Sync, - $target::Ack => RevisionState::Ack, - } - } - } - - impl std::convert::From for $target { - fn from(s: RevisionState) -> Self { - match s { - RevisionState::Sync => $target::Sync, - RevisionState::Ack => $target::Ack, - } + fn from_protobuf_bytes(bytes: Bytes) -> $target { + $target::try_from(bytes).unwrap_or($target::default()) } } }; diff --git a/frontend/rust-lib/flowy-database/src/manager.rs b/frontend/rust-lib/flowy-database/src/manager.rs new file mode 100644 index 0000000000..c1d4014a6e --- /dev/null +++ b/frontend/rust-lib/flowy-database/src/manager.rs @@ -0,0 +1,247 @@ +use crate::entities::DatabaseViewLayout; +use crate::services::grid_editor::{DatabaseRevisionEditor, GridRevisionMergeable}; +use crate::services::persistence::block_index::BlockIndexCache; +use crate::services::persistence::kv::DatabaseKVPersistence; +use crate::services::persistence::migration::DatabaseMigration; +use crate::services::persistence::rev_sqlite::{ + SQLiteDatabaseRevisionPersistence, SQLiteDatabaseRevisionSnapshotPersistence, +}; +use crate::services::persistence::GridDatabase; +use crate::services::view_editor::make_database_view_rev_manager; +use bytes::Bytes; +use flowy_client_sync::client_database::{ + make_database_block_operations, make_database_operations, make_grid_view_operations, +}; +use flowy_error::{FlowyError, FlowyResult}; +use flowy_revision::{RevisionManager, RevisionPersistence, RevisionPersistenceConfiguration, RevisionWebSocket}; +use flowy_sqlite::ConnectionPool; +use grid_model::{BuildDatabaseContext, DatabaseRevision, DatabaseViewRevision}; +use lib_infra::async_trait::async_trait; +use lib_infra::ref_map::{RefCountHashMap, RefCountValue}; +use revision_model::Revision; + +use crate::services::block_manager::make_database_block_rev_manager; +use flowy_task::TaskDispatcher; +use std::sync::Arc; +use tokio::sync::RwLock; + +pub trait DatabaseUser: Send + Sync { + fn user_id(&self) -> Result; + fn token(&self) -> Result; + fn db_pool(&self) -> Result, FlowyError>; +} + +pub struct DatabaseManager { + database_editors: RwLock>>, + database_user: Arc, + block_index_cache: Arc, + #[allow(dead_code)] + kv_persistence: Arc, + task_scheduler: Arc>, + migration: DatabaseMigration, +} + +impl DatabaseManager { + pub fn new( + grid_user: Arc, + _rev_web_socket: Arc, + task_scheduler: Arc>, + database: Arc, + ) -> Self { + let grid_editors = RwLock::new(RefCountHashMap::new()); + let kv_persistence = Arc::new(DatabaseKVPersistence::new(database.clone())); + let block_index_cache = Arc::new(BlockIndexCache::new(database.clone())); + let migration = DatabaseMigration::new(grid_user.clone(), database); + Self { + database_editors: grid_editors, + database_user: grid_user, + kv_persistence, + block_index_cache, + task_scheduler, + migration, + } + } + + pub async fn initialize_with_new_user(&self, _user_id: &str, _token: &str) -> FlowyResult<()> { + Ok(()) + } + + pub async fn initialize(&self, _user_id: &str, _token: &str) -> FlowyResult<()> { + Ok(()) + } + + #[tracing::instrument(level = "debug", skip_all, err)] + pub async fn create_database>(&self, database_id: T, revisions: Vec) -> FlowyResult<()> { + let database_id = database_id.as_ref(); + let db_pool = self.database_user.db_pool()?; + let rev_manager = self.make_database_rev_manager(database_id, db_pool)?; + rev_manager.reset_object(revisions).await?; + + Ok(()) + } + + #[tracing::instrument(level = "debug", skip_all, err)] + async fn create_database_view>(&self, view_id: T, revisions: Vec) -> FlowyResult<()> { + let view_id = view_id.as_ref(); + let rev_manager = make_database_view_rev_manager(&self.database_user, view_id).await?; + rev_manager.reset_object(revisions).await?; + Ok(()) + } + + #[tracing::instrument(level = "debug", skip_all, err)] + pub async fn create_database_block>(&self, block_id: T, revisions: Vec) -> FlowyResult<()> { + let block_id = block_id.as_ref(); + let rev_manager = make_database_block_rev_manager(&self.database_user, block_id)?; + rev_manager.reset_object(revisions).await?; + Ok(()) + } + + pub async fn open_database>(&self, database_id: T) -> FlowyResult> { + let database_id = database_id.as_ref(); + let _ = self.migration.run_v1_migration(database_id).await; + self.get_or_create_database_editor(database_id).await + } + + #[tracing::instrument(level = "debug", skip_all, fields(database_id), err)] + pub async fn close_database>(&self, database_id: T) -> FlowyResult<()> { + let database_id = database_id.as_ref(); + tracing::Span::current().record("database_id", database_id); + self.database_editors.write().await.remove(database_id).await; + Ok(()) + } + + // #[tracing::instrument(level = "debug", skip(self), err)] + pub async fn get_database_editor(&self, database_id: &str) -> FlowyResult> { + let read_guard = self.database_editors.read().await; + let editor = read_guard.get(database_id); + match editor { + None => { + // Drop the read_guard ASAP in case of the following read/write lock + drop(read_guard); + self.open_database(database_id).await + } + Some(editor) => Ok(editor), + } + } + + async fn get_or_create_database_editor(&self, database_id: &str) -> FlowyResult> { + if let Some(editor) = self.database_editors.read().await.get(database_id) { + return Ok(editor); + } + + let mut database_editors = self.database_editors.write().await; + let db_pool = self.database_user.db_pool()?; + let editor = self.make_database_rev_editor(database_id, db_pool).await?; + tracing::trace!("Open database: {}", database_id); + database_editors.insert(database_id.to_string(), editor.clone()); + Ok(editor) + } + + #[tracing::instrument(level = "trace", skip(self, pool), err)] + async fn make_database_rev_editor( + &self, + database_id: &str, + pool: Arc, + ) -> Result, FlowyError> { + let user = self.database_user.clone(); + let rev_manager = self.make_database_rev_manager(database_id, pool.clone())?; + let database_editor = DatabaseRevisionEditor::new( + database_id, + user, + rev_manager, + self.block_index_cache.clone(), + self.task_scheduler.clone(), + ) + .await?; + Ok(database_editor) + } + + #[tracing::instrument(level = "trace", skip(self, pool), err)] + pub fn make_database_rev_manager( + &self, + database_id: &str, + pool: Arc, + ) -> FlowyResult>> { + let user_id = self.database_user.user_id()?; + + // Create revision persistence + let disk_cache = SQLiteDatabaseRevisionPersistence::new(&user_id, pool.clone()); + let configuration = RevisionPersistenceConfiguration::new(6, false); + let rev_persistence = RevisionPersistence::new(&user_id, database_id, disk_cache, configuration); + + // Create snapshot persistence + let snapshot_object_id = format!("grid:{}", database_id); + let snapshot_persistence = SQLiteDatabaseRevisionSnapshotPersistence::new(&snapshot_object_id, pool); + + let rev_compress = GridRevisionMergeable(); + let rev_manager = RevisionManager::new( + &user_id, + database_id, + rev_persistence, + rev_compress, + snapshot_persistence, + ); + Ok(rev_manager) + } +} + +pub async fn make_database_view_data( + _user_id: &str, + view_id: &str, + layout: DatabaseViewLayout, + database_manager: Arc, + build_context: BuildDatabaseContext, +) -> FlowyResult { + let BuildDatabaseContext { + field_revs, + block_metas, + blocks, + grid_view_revision_data, + } = build_context; + + for block_meta_data in &blocks { + let block_id = &block_meta_data.block_id; + // Indexing the block's rows + block_meta_data.rows.iter().for_each(|row| { + let _ = database_manager.block_index_cache.insert(&row.block_id, &row.id); + }); + + // Create grid's block + let grid_block_delta = make_database_block_operations(block_meta_data); + let block_delta_data = grid_block_delta.json_bytes(); + let revision = Revision::initial_revision(block_id, block_delta_data); + database_manager + .create_database_block(&block_id, vec![revision]) + .await?; + } + + // Will replace the grid_id with the value returned by the gen_grid_id() + let grid_id = view_id.to_owned(); + let grid_rev = DatabaseRevision::from_build_context(&grid_id, field_revs, block_metas); + + // Create grid + let grid_rev_delta = make_database_operations(&grid_rev); + let grid_rev_delta_bytes = grid_rev_delta.json_bytes(); + let revision = Revision::initial_revision(&grid_id, grid_rev_delta_bytes.clone()); + database_manager.create_database(&grid_id, vec![revision]).await?; + + // Create grid view + let grid_view = if grid_view_revision_data.is_empty() { + DatabaseViewRevision::new(grid_id, view_id.to_owned(), layout.into()) + } else { + DatabaseViewRevision::from_json(grid_view_revision_data)? + }; + let grid_view_delta = make_grid_view_operations(&grid_view); + let grid_view_delta_bytes = grid_view_delta.json_bytes(); + let revision = Revision::initial_revision(view_id, grid_view_delta_bytes); + database_manager.create_database_view(view_id, vec![revision]).await?; + + Ok(grid_rev_delta_bytes) +} + +#[async_trait] +impl RefCountValue for DatabaseRevisionEditor { + async fn did_remove(&self) { + self.close().await; + } +} diff --git a/frontend/rust-lib/flowy-grid/src/notification.rs b/frontend/rust-lib/flowy-database/src/notification.rs similarity index 57% rename from frontend/rust-lib/flowy-grid/src/notification.rs rename to frontend/rust-lib/flowy-database/src/notification.rs index 3954f03985..c02a081c4c 100644 --- a/frontend/rust-lib/flowy-grid/src/notification.rs +++ b/frontend/rust-lib/flowy-database/src/notification.rs @@ -3,12 +3,12 @@ use flowy_notification::NotificationBuilder; const OBSERVABLE_CATEGORY: &str = "Grid"; #[derive(ProtoBuf_Enum, Debug)] -pub enum GridNotification { +pub enum DatabaseNotification { Unknown = 0, DidCreateBlock = 11, - DidUpdateGridViewRows = 20, - DidUpdateGridViewRowsVisibility = 21, - DidUpdateGridFields = 22, + DidUpdateDatabaseViewRows = 20, + DidUpdateDatabaseViewRowsVisibility = 21, + DidUpdateDatabaseFields = 22, DidUpdateRow = 30, DidUpdateCell = 40, DidUpdateField = 50, @@ -19,22 +19,22 @@ pub enum GridNotification { DidUpdateSort = 64, DidReorderRows = 65, DidReorderSingleRow = 66, - DidUpdateGridSetting = 70, + DidUpdateDatabaseSetting = 70, } -impl std::default::Default for GridNotification { +impl std::default::Default for DatabaseNotification { fn default() -> Self { - GridNotification::Unknown + DatabaseNotification::Unknown } } -impl std::convert::From for i32 { - fn from(notification: GridNotification) -> Self { +impl std::convert::From for i32 { + fn from(notification: DatabaseNotification) -> Self { notification as i32 } } #[tracing::instrument(level = "trace")] -pub fn send_notification(id: &str, ty: GridNotification) -> NotificationBuilder { +pub fn send_notification(id: &str, ty: DatabaseNotification) -> NotificationBuilder { NotificationBuilder::new(id, ty, OBSERVABLE_CATEGORY) } diff --git a/frontend/rust-lib/flowy-grid/src/services/block_editor.rs b/frontend/rust-lib/flowy-database/src/services/block_editor.rs similarity index 90% rename from frontend/rust-lib/flowy-grid/src/services/block_editor.rs rename to frontend/rust-lib/flowy-database/src/services/block_editor.rs index 69b4b0d3bb..0d4bed6b97 100644 --- a/frontend/rust-lib/flowy-grid/src/services/block_editor.rs +++ b/frontend/rust-lib/flowy-database/src/services/block_editor.rs @@ -1,12 +1,12 @@ use bytes::Bytes; -use flowy_client_sync::client_grid::{GridBlockRevisionChangeset, GridBlockRevisionPad}; +use flowy_client_sync::client_database::{GridBlockRevisionChangeset, GridBlockRevisionPad}; use flowy_client_sync::make_operations_from_revisions; -use flowy_database::ConnectionPool; use flowy_error::{FlowyError, FlowyResult}; use flowy_revision::{ RevisionCloudService, RevisionManager, RevisionMergeable, RevisionObjectDeserializer, RevisionObjectSerializer, }; -use grid_model::{CellRevision, GridBlockRevision, RowChangeset, RowRevision}; +use flowy_sqlite::ConnectionPool; +use grid_model::{CellRevision, DatabaseBlockRevision, RowChangeset, RowRevision}; use lib_infra::future::FutureResult; use lib_ot::core::EmptyAttributes; use revision_model::Revision; @@ -14,7 +14,7 @@ use std::borrow::Cow; use std::sync::Arc; use tokio::sync::RwLock; -pub struct GridBlockRevisionEditor { +pub struct DatabaseBlockRevisionEditor { #[allow(dead_code)] user_id: String, pub block_id: String, @@ -22,7 +22,7 @@ pub struct GridBlockRevisionEditor { rev_manager: Arc>>, } -impl GridBlockRevisionEditor { +impl DatabaseBlockRevisionEditor { pub async fn new( user_id: &str, token: &str, @@ -32,7 +32,9 @@ impl GridBlockRevisionEditor { let cloud = Arc::new(GridBlockRevisionCloudService { token: token.to_owned(), }); - let block_revision_pad = rev_manager.initialize::(Some(cloud)).await?; + let block_revision_pad = rev_manager + .initialize::(Some(cloud)) + .await?; let pad = Arc::new(RwLock::new(block_revision_pad)); let rev_manager = Arc::new(rev_manager); let user_id = user_id.to_owned(); @@ -50,7 +52,7 @@ impl GridBlockRevisionEditor { self.rev_manager.close().await; } - pub async fn duplicate_block(&self, duplicated_block_id: &str) -> GridBlockRevision { + pub async fn duplicate_block(&self, duplicated_block_id: &str) -> DatabaseBlockRevision { self.pad.read().await.duplicate_data(duplicated_block_id).await } @@ -174,8 +176,8 @@ impl RevisionCloudService for GridBlockRevisionCloudService { } } -struct GridBlockRevisionSerde(); -impl RevisionObjectDeserializer for GridBlockRevisionSerde { +struct DatabaseBlockRevisionSerde(); +impl RevisionObjectDeserializer for DatabaseBlockRevisionSerde { type Output = GridBlockRevisionPad; fn deserialize_revisions(object_id: &str, revisions: Vec) -> FlowyResult { @@ -188,7 +190,7 @@ impl RevisionObjectDeserializer for GridBlockRevisionSerde { } } -impl RevisionObjectSerializer for GridBlockRevisionSerde { +impl RevisionObjectSerializer for DatabaseBlockRevisionSerde { fn combine_revisions(revisions: Vec) -> FlowyResult { let operations = make_operations_from_revisions::(revisions)?; Ok(operations.json_bytes()) @@ -198,6 +200,6 @@ impl RevisionObjectSerializer for GridBlockRevisionSerde { pub struct GridBlockRevisionMergeable(); impl RevisionMergeable for GridBlockRevisionMergeable { fn combine_revisions(&self, revisions: Vec) -> FlowyResult { - GridBlockRevisionSerde::combine_revisions(revisions) + DatabaseBlockRevisionSerde::combine_revisions(revisions) } } diff --git a/frontend/rust-lib/flowy-grid/src/services/block_manager.rs b/frontend/rust-lib/flowy-database/src/services/block_manager.rs similarity index 78% rename from frontend/rust-lib/flowy-grid/src/services/block_manager.rs rename to frontend/rust-lib/flowy-database/src/services/block_manager.rs index d811da4688..53c559d4a8 100644 --- a/frontend/rust-lib/flowy-grid/src/services/block_manager.rs +++ b/frontend/rust-lib/flowy-database/src/services/block_manager.rs @@ -1,16 +1,16 @@ use crate::entities::{CellChangesetPB, InsertedRowPB, UpdatedRowPB}; -use crate::manager::GridUser; -use crate::notification::{send_notification, GridNotification}; -use crate::services::block_editor::{GridBlockRevisionEditor, GridBlockRevisionMergeable}; +use crate::manager::DatabaseUser; +use crate::notification::{send_notification, DatabaseNotification}; +use crate::services::block_editor::{DatabaseBlockRevisionEditor, GridBlockRevisionMergeable}; use crate::services::persistence::block_index::BlockIndexCache; use crate::services::persistence::rev_sqlite::{ - SQLiteGridBlockRevisionPersistence, SQLiteGridRevisionSnapshotPersistence, + SQLiteDatabaseBlockRevisionPersistence, SQLiteDatabaseRevisionSnapshotPersistence, }; -use crate::services::row::{make_row_from_row_rev, GridBlockRow, GridBlockRowRevision}; +use crate::services::row::{make_row_from_row_rev, DatabaseBlockRow, DatabaseBlockRowRevision}; use dashmap::DashMap; -use flowy_database::ConnectionPool; use flowy_error::FlowyResult; use flowy_revision::{RevisionManager, RevisionPersistence, RevisionPersistenceConfiguration}; +use flowy_sqlite::ConnectionPool; use grid_model::{GridBlockMetaRevision, GridBlockMetaRevisionChangeset, RowChangeset, RowRevision}; use std::borrow::Cow; use std::collections::HashMap; @@ -18,7 +18,7 @@ use std::sync::Arc; use tokio::sync::broadcast; #[derive(Debug, Clone)] -pub enum GridBlockEvent { +pub enum DatabaseBlockEvent { InsertRow { block_id: String, row: InsertedRowPB, @@ -39,19 +39,19 @@ pub enum GridBlockEvent { } type BlockId = String; -pub(crate) struct GridBlockManager { - user: Arc, +pub(crate) struct DatabaseBlockManager { + user: Arc, persistence: Arc, - block_editors: DashMap>, - event_notifier: broadcast::Sender, + block_editors: DashMap>, + event_notifier: broadcast::Sender, } -impl GridBlockManager { +impl DatabaseBlockManager { pub(crate) async fn new( - user: &Arc, + user: &Arc, block_meta_revs: Vec>, persistence: Arc, - event_notifier: broadcast::Sender, + event_notifier: broadcast::Sender, ) -> FlowyResult { let block_editors = make_block_editors(user, block_meta_revs).await?; let user = user.clone(); @@ -71,12 +71,12 @@ impl GridBlockManager { } // #[tracing::instrument(level = "trace", skip(self))] - pub(crate) async fn get_block_editor(&self, block_id: &str) -> FlowyResult> { + pub(crate) async fn get_block_editor(&self, block_id: &str) -> FlowyResult> { debug_assert!(!block_id.is_empty()); match self.block_editors.get(block_id) { None => { tracing::error!("This is a fatal error, block with id:{} is not exist", block_id); - let editor = Arc::new(make_grid_block_editor(&self.user, block_id).await?); + let editor = Arc::new(make_database_block_editor(&self.user, block_id).await?); self.block_editors.insert(block_id.to_owned(), editor.clone()); Ok(editor) } @@ -84,7 +84,7 @@ impl GridBlockManager { } } - pub(crate) async fn get_editor_from_row_id(&self, row_id: &str) -> FlowyResult> { + pub(crate) async fn get_editor_from_row_id(&self, row_id: &str) -> FlowyResult> { let block_id = self.persistence.get_block_id(row_id)?; self.get_block_editor(&block_id).await } @@ -99,7 +99,9 @@ impl GridBlockManager { let (number_of_rows, index) = editor.create_row(row_rev, start_row_id).await?; row.index = index; - let _ = self.event_notifier.send(GridBlockEvent::InsertRow { block_id, row }); + let _ = self + .event_notifier + .send(DatabaseBlockEvent::InsertRow { block_id, row }); Ok(number_of_rows) } @@ -114,7 +116,7 @@ impl GridBlockManager { self.persistence.insert(&row_rev.block_id, &row_rev.id)?; let mut row = InsertedRowPB::from(&row_rev); row.index = editor.create_row(row_rev, None).await?.1; - let _ = self.event_notifier.send(GridBlockEvent::InsertRow { + let _ = self.event_notifier.send(DatabaseBlockEvent::InsertRow { block_id: block_id.clone(), row, }); @@ -140,7 +142,7 @@ impl GridBlockManager { field_ids: changed_field_ids, }; - let _ = self.event_notifier.send(GridBlockEvent::UpdateRow { + let _ = self.event_notifier.send(DatabaseBlockEvent::UpdateRow { block_id: editor.block_id.clone(), row, }); @@ -158,7 +160,7 @@ impl GridBlockManager { None => Ok(None), Some((_, row_rev)) => { let _ = editor.delete_rows(vec![Cow::Borrowed(&row_id)]).await?; - let _ = self.event_notifier.send(GridBlockEvent::DeleteRow { + let _ = self.event_notifier.send(DatabaseBlockEvent::DeleteRow { block_id: editor.block_id.clone(), row_id: row_rev.id.clone(), }); @@ -170,7 +172,7 @@ impl GridBlockManager { pub(crate) async fn delete_rows( &self, - block_rows: Vec, + block_rows: Vec, ) -> FlowyResult> { let mut changesets = vec![]; for block_row in block_rows { @@ -199,7 +201,7 @@ impl GridBlockManager { is_new: false, }; - let _ = self.event_notifier.send(GridBlockEvent::Move { + let _ = self.event_notifier.send(DatabaseBlockEvent::Move { block_id: editor.block_id.clone(), deleted_row_id: delete_row_id, inserted_row: insert_row, @@ -238,7 +240,10 @@ impl GridBlockManager { Ok(row_revs) } - pub(crate) async fn get_blocks(&self, block_ids: Option>) -> FlowyResult> { + pub(crate) async fn get_blocks( + &self, + block_ids: Option>, + ) -> FlowyResult> { let mut blocks = vec![]; match block_ids { None => { @@ -246,14 +251,14 @@ impl GridBlockManager { let editor = iter.value(); let block_id = editor.block_id.clone(); let row_revs = editor.get_row_revs::<&str>(None).await?; - blocks.push(GridBlockRowRevision { block_id, row_revs }); + blocks.push(DatabaseBlockRowRevision { block_id, row_revs }); } } Some(block_ids) => { for block_id in block_ids { let editor = self.get_block_editor(&block_id).await?; let row_revs = editor.get_row_revs::<&str>(None).await?; - blocks.push(GridBlockRowRevision { block_id, row_revs }); + blocks.push(DatabaseBlockRowRevision { block_id, row_revs }); } } } @@ -262,48 +267,51 @@ impl GridBlockManager { async fn notify_did_update_cell(&self, changeset: CellChangesetPB) -> FlowyResult<()> { let id = format!("{}:{}", changeset.row_id, changeset.field_id); - send_notification(&id, GridNotification::DidUpdateCell).send(); + send_notification(&id, DatabaseNotification::DidUpdateCell).send(); Ok(()) } } /// Initialize each block editor async fn make_block_editors( - user: &Arc, + user: &Arc, block_meta_revs: Vec>, -) -> FlowyResult>> { +) -> FlowyResult>> { let editor_map = DashMap::new(); for block_meta_rev in block_meta_revs { - let editor = make_grid_block_editor(user, &block_meta_rev.block_id).await?; + let editor = make_database_block_editor(user, &block_meta_rev.block_id).await?; editor_map.insert(block_meta_rev.block_id.clone(), Arc::new(editor)); } Ok(editor_map) } -async fn make_grid_block_editor(user: &Arc, block_id: &str) -> FlowyResult { +async fn make_database_block_editor( + user: &Arc, + block_id: &str, +) -> FlowyResult { tracing::trace!("Open block:{} editor", block_id); let token = user.token()?; let user_id = user.user_id()?; - let rev_manager = make_grid_block_rev_manager(user, block_id)?; - GridBlockRevisionEditor::new(&user_id, &token, block_id, rev_manager).await + let rev_manager = make_database_block_rev_manager(user, block_id)?; + DatabaseBlockRevisionEditor::new(&user_id, &token, block_id, rev_manager).await } -pub fn make_grid_block_rev_manager( - user: &Arc, +pub fn make_database_block_rev_manager( + user: &Arc, block_id: &str, ) -> FlowyResult>> { let user_id = user.user_id()?; // Create revision persistence let pool = user.db_pool()?; - let disk_cache = SQLiteGridBlockRevisionPersistence::new(&user_id, pool.clone()); + let disk_cache = SQLiteDatabaseBlockRevisionPersistence::new(&user_id, pool.clone()); let configuration = RevisionPersistenceConfiguration::new(4, false); let rev_persistence = RevisionPersistence::new(&user_id, block_id, disk_cache, configuration); // Create snapshot persistence let snapshot_object_id = format!("grid_block:{}", block_id); - let snapshot_persistence = SQLiteGridRevisionSnapshotPersistence::new(&snapshot_object_id, pool); + let snapshot_persistence = SQLiteDatabaseRevisionSnapshotPersistence::new(&snapshot_object_id, pool); let rev_compress = GridBlockRevisionMergeable(); let rev_manager = RevisionManager::new(&user_id, block_id, rev_persistence, rev_compress, snapshot_persistence); diff --git a/frontend/rust-lib/flowy-grid/src/services/cell/cell_data_cache.rs b/frontend/rust-lib/flowy-database/src/services/cell/cell_data_cache.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/cell/cell_data_cache.rs rename to frontend/rust-lib/flowy-database/src/services/cell/cell_data_cache.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/cell/cell_operation.rs b/frontend/rust-lib/flowy-database/src/services/cell/cell_operation.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/cell/cell_operation.rs rename to frontend/rust-lib/flowy-database/src/services/cell/cell_operation.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/cell/mod.rs b/frontend/rust-lib/flowy-database/src/services/cell/mod.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/cell/mod.rs rename to frontend/rust-lib/flowy-database/src/services/cell/mod.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/cell/type_cell_data.rs b/frontend/rust-lib/flowy-database/src/services/cell/type_cell_data.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/cell/type_cell_data.rs rename to frontend/rust-lib/flowy-database/src/services/cell/type_cell_data.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/field_builder.rs b/frontend/rust-lib/flowy-database/src/services/field/field_builder.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/field_builder.rs rename to frontend/rust-lib/flowy-database/src/services/field/field_builder.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/field_operation.rs b/frontend/rust-lib/flowy-database/src/services/field/field_operation.rs similarity index 81% rename from frontend/rust-lib/flowy-grid/src/services/field/field_operation.rs rename to frontend/rust-lib/flowy-database/src/services/field/field_operation.rs index 0c79e84166..3001849a74 100644 --- a/frontend/rust-lib/flowy-grid/src/services/field/field_operation.rs +++ b/frontend/rust-lib/flowy-database/src/services/field/field_operation.rs @@ -1,12 +1,12 @@ use crate::services::field::{MultiSelectTypeOptionPB, SingleSelectTypeOptionPB}; -use crate::services::grid_editor::GridRevisionEditor; +use crate::services::grid_editor::DatabaseRevisionEditor; use flowy_error::FlowyResult; use grid_model::{TypeOptionDataDeserializer, TypeOptionDataSerializer}; use std::sync::Arc; pub async fn edit_field_type_option( field_id: &str, - editor: Arc, + editor: Arc, action: impl FnOnce(&mut T), ) -> FlowyResult<()> where @@ -23,7 +23,7 @@ where action(&mut type_option); let bytes = type_option.protobuf_bytes().to_vec(); editor - .update_field_type_option(&editor.grid_id, field_id, bytes, old_field_rev) + .update_field_type_option(&editor.database_id, field_id, bytes, old_field_rev) .await?; } @@ -32,7 +32,7 @@ where pub async fn edit_single_select_type_option( field_id: &str, - editor: Arc, + editor: Arc, action: impl FnOnce(&mut SingleSelectTypeOptionPB), ) -> FlowyResult<()> { edit_field_type_option(field_id, editor, action).await @@ -40,7 +40,7 @@ pub async fn edit_single_select_type_option( pub async fn edit_multi_select_type_option( field_id: &str, - editor: Arc, + editor: Arc, action: impl FnOnce(&mut MultiSelectTypeOptionPB), ) -> FlowyResult<()> { edit_field_type_option(field_id, editor, action).await diff --git a/frontend/rust-lib/flowy-grid/src/services/field/mod.rs b/frontend/rust-lib/flowy-database/src/services/field/mod.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/mod.rs rename to frontend/rust-lib/flowy-database/src/services/field/mod.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_option_builder.rs b/frontend/rust-lib/flowy-database/src/services/field/type_option_builder.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_option_builder.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_option_builder.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/checkbox_type_option/checkbox_filter.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/checkbox_type_option/checkbox_filter.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/checkbox_type_option/checkbox_filter.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/checkbox_type_option/checkbox_filter.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/checkbox_type_option/checkbox_tests.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/checkbox_type_option/checkbox_tests.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/checkbox_type_option/checkbox_tests.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/checkbox_type_option/checkbox_tests.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/checkbox_type_option/checkbox_type_option.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/checkbox_type_option/checkbox_type_option.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/checkbox_type_option/checkbox_type_option.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/checkbox_type_option/checkbox_type_option.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/checkbox_type_option/checkbox_type_option_entities.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/checkbox_type_option/checkbox_type_option_entities.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/checkbox_type_option/checkbox_type_option_entities.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/checkbox_type_option/checkbox_type_option_entities.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/checkbox_type_option/mod.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/checkbox_type_option/mod.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/checkbox_type_option/mod.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/checkbox_type_option/mod.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/date_type_option/date_filter.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/date_type_option/date_filter.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/date_type_option/date_filter.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/date_type_option/date_filter.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/date_type_option/date_tests.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/date_type_option/date_tests.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/date_type_option/date_tests.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/date_type_option/date_tests.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/date_type_option/date_type_option.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/date_type_option/date_type_option.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/date_type_option/date_type_option.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/date_type_option/date_type_option.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/date_type_option/date_type_option_entities.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/date_type_option/date_type_option_entities.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/date_type_option/date_type_option_entities.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/date_type_option/date_type_option_entities.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/date_type_option/mod.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/date_type_option/mod.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/date_type_option/mod.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/date_type_option/mod.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/mod.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/mod.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/mod.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/mod.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/number_type_option/format.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/number_type_option/format.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/number_type_option/format.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/number_type_option/format.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/number_type_option/mod.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/number_type_option/mod.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/number_type_option/mod.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/number_type_option/mod.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/number_type_option/number_filter.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/number_type_option/number_filter.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/number_type_option/number_filter.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/number_type_option/number_filter.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/number_type_option/number_tests.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/number_type_option/number_tests.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/number_type_option/number_tests.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/number_type_option/number_tests.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/number_type_option/number_type_option.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/number_type_option/number_type_option.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/number_type_option/number_type_option.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/number_type_option/number_type_option.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/number_type_option/number_type_option_entities.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/number_type_option/number_type_option_entities.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/number_type_option/number_type_option_entities.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/number_type_option/number_type_option_entities.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/selection_type_option/checklist_filter.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/selection_type_option/checklist_filter.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/selection_type_option/checklist_filter.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/selection_type_option/checklist_filter.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/selection_type_option/checklist_type_option.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/selection_type_option/checklist_type_option.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/selection_type_option/checklist_type_option.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/selection_type_option/checklist_type_option.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/selection_type_option/mod.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/selection_type_option/mod.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/selection_type_option/mod.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/selection_type_option/mod.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/selection_type_option/multi_select_type_option.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/selection_type_option/multi_select_type_option.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/selection_type_option/multi_select_type_option.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/selection_type_option/multi_select_type_option.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/selection_type_option/select_filter.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/selection_type_option/select_filter.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/selection_type_option/select_filter.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/selection_type_option/select_filter.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/selection_type_option/select_type_option.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/selection_type_option/select_type_option.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/selection_type_option/select_type_option.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/selection_type_option/select_type_option.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/selection_type_option/single_select_type_option.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/selection_type_option/single_select_type_option.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/selection_type_option/single_select_type_option.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/selection_type_option/single_select_type_option.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/selection_type_option/type_option_transform.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/selection_type_option/type_option_transform.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/selection_type_option/type_option_transform.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/selection_type_option/type_option_transform.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/text_type_option/mod.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/text_type_option/mod.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/text_type_option/mod.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/text_type_option/mod.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/text_type_option/text_filter.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/text_type_option/text_filter.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/text_type_option/text_filter.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/text_type_option/text_filter.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/text_type_option/text_tests.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/text_type_option/text_tests.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/text_type_option/text_tests.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/text_type_option/text_tests.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/text_type_option/text_type_option.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/text_type_option/text_type_option.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/text_type_option/text_type_option.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/text_type_option/text_type_option.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/type_option.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/type_option.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/type_option.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/type_option.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/type_option_cell.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/type_option_cell.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/type_option_cell.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/type_option_cell.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/url_type_option/mod.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/url_type_option/mod.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/url_type_option/mod.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/url_type_option/mod.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/url_type_option/url_tests.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/url_type_option/url_tests.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/url_type_option/url_tests.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/url_type_option/url_tests.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/url_type_option/url_type_option.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/url_type_option/url_type_option.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/url_type_option/url_type_option.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/url_type_option/url_type_option.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/field/type_options/url_type_option/url_type_option_entities.rs b/frontend/rust-lib/flowy-database/src/services/field/type_options/url_type_option/url_type_option_entities.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/field/type_options/url_type_option/url_type_option_entities.rs rename to frontend/rust-lib/flowy-database/src/services/field/type_options/url_type_option/url_type_option_entities.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/filter/controller.rs b/frontend/rust-lib/flowy-database/src/services/filter/controller.rs similarity index 99% rename from frontend/rust-lib/flowy-grid/src/services/filter/controller.rs rename to frontend/rust-lib/flowy-database/src/services/filter/controller.rs index 65bbbe5daa..11c758b2c5 100644 --- a/frontend/rust-lib/flowy-grid/src/services/filter/controller.rs +++ b/frontend/rust-lib/flowy-database/src/services/filter/controller.rs @@ -3,7 +3,7 @@ use crate::entities::{FieldType, InsertedRowPB, RowPB}; use crate::services::cell::{AnyTypeCache, AtomicCellDataCache, AtomicCellFilterCache, TypeCellData}; use crate::services::field::*; use crate::services::filter::{FilterChangeset, FilterResult, FilterResultNotification, FilterType}; -use crate::services::row::GridBlockRowRevision; +use crate::services::row::DatabaseBlockRowRevision; use crate::services::view_editor::{GridViewChanged, GridViewChangedNotifier}; use flowy_error::FlowyResult; use flowy_task::{QualityOfService, Task, TaskContent, TaskDispatcher}; @@ -20,7 +20,7 @@ pub trait FilterDelegate: Send + Sync + 'static { fn get_filter_rev(&self, filter_type: FilterType) -> Fut>>; fn get_field_rev(&self, field_id: &str) -> Fut>>; fn get_field_revs(&self, field_ids: Option>) -> Fut>>; - fn get_blocks(&self) -> Fut>; + fn get_blocks(&self) -> Fut>; fn get_row_rev(&self, rows_id: &str) -> Fut)>>; } diff --git a/frontend/rust-lib/flowy-grid/src/services/filter/entities.rs b/frontend/rust-lib/flowy-database/src/services/filter/entities.rs similarity index 92% rename from frontend/rust-lib/flowy-grid/src/services/filter/entities.rs rename to frontend/rust-lib/flowy-database/src/services/filter/entities.rs index f685d114ac..dd9362977a 100644 --- a/frontend/rust-lib/flowy-grid/src/services/filter/entities.rs +++ b/frontend/rust-lib/flowy-database/src/services/filter/entities.rs @@ -1,4 +1,6 @@ -use crate::entities::{AlterFilterParams, DeleteFilterParams, FieldType, GridSettingChangesetParams, InsertedRowPB}; +use crate::entities::{ + AlterFilterParams, DatabaseSettingChangesetParams, DeleteFilterParams, FieldType, InsertedRowPB, +}; use grid_model::{FieldRevision, FieldTypeRevision}; use std::sync::Arc; @@ -46,8 +48,8 @@ impl FilterChangeset { } } -impl std::convert::From<&GridSettingChangesetParams> for FilterChangeset { - fn from(params: &GridSettingChangesetParams) -> Self { +impl std::convert::From<&DatabaseSettingChangesetParams> for FilterChangeset { + fn from(params: &DatabaseSettingChangesetParams) -> Self { let insert_filter = params.insert_filter.as_ref().map(|insert_filter_params| FilterType { field_id: insert_filter_params.field_id.clone(), field_type: insert_filter_params.field_type.into(), diff --git a/frontend/rust-lib/flowy-grid/src/services/filter/mod.rs b/frontend/rust-lib/flowy-database/src/services/filter/mod.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/filter/mod.rs rename to frontend/rust-lib/flowy-database/src/services/filter/mod.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/filter/task.rs b/frontend/rust-lib/flowy-database/src/services/filter/task.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/filter/task.rs rename to frontend/rust-lib/flowy-database/src/services/filter/task.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/grid_editor.rs b/frontend/rust-lib/flowy-database/src/services/grid_editor.rs similarity index 87% rename from frontend/rust-lib/flowy-grid/src/services/grid_editor.rs rename to frontend/rust-lib/flowy-database/src/services/grid_editor.rs index bc2b2b3451..7070976553 100644 --- a/frontend/rust-lib/flowy-grid/src/services/grid_editor.rs +++ b/frontend/rust-lib/flowy-database/src/services/grid_editor.rs @@ -1,8 +1,8 @@ use crate::entities::CellPathParams; use crate::entities::*; -use crate::manager::GridUser; -use crate::notification::{send_notification, GridNotification}; -use crate::services::block_manager::GridBlockManager; +use crate::manager::DatabaseUser; +use crate::notification::{send_notification, DatabaseNotification}; +use crate::services::block_manager::DatabaseBlockManager; use crate::services::cell::{ apply_cell_data_changeset, decode_type_cell_data, stringify_cell_data, AnyTypeCache, AtomicCellDataCache, CellProtobufBlob, ToCellChangesetString, TypeCellData, @@ -15,16 +15,16 @@ use crate::services::field::{ use crate::services::filter::FilterType; use crate::services::grid_editor_trait_impl::GridViewEditorDelegateImpl; use crate::services::persistence::block_index::BlockIndexCache; -use crate::services::row::{GridBlockRow, GridBlockRowRevision, RowRevisionBuilder}; -use crate::services::view_editor::{GridViewChanged, GridViewManager}; +use crate::services::row::{DatabaseBlockRow, DatabaseBlockRowRevision, RowRevisionBuilder}; +use crate::services::view_editor::{DatabaseViewManager, GridViewChanged}; use bytes::Bytes; -use flowy_client_sync::client_grid::{GridRevisionChangeset, GridRevisionPad, JsonDeserializer}; +use flowy_client_sync::client_database::{DatabaseRevisionChangeset, DatabaseRevisionPad, JsonDeserializer}; use flowy_client_sync::errors::{SyncError, SyncResult}; -use flowy_database::ConnectionPool; use flowy_error::{FlowyError, FlowyResult}; use flowy_revision::{ RevisionCloudService, RevisionManager, RevisionMergeable, RevisionObjectDeserializer, RevisionObjectSerializer, }; +use flowy_sqlite::ConnectionPool; use flowy_task::TaskDispatcher; use grid_model::*; use lib_infra::future::{to_fut, FutureResult}; @@ -36,44 +36,45 @@ use flowy_client_sync::make_operations_from_revisions; use std::sync::Arc; use tokio::sync::{broadcast, RwLock}; -pub struct GridRevisionEditor { - pub grid_id: String, +pub struct DatabaseRevisionEditor { + pub database_id: String, #[allow(dead_code)] - user: Arc, - grid_pad: Arc>, - view_manager: Arc, + user: Arc, + database_pad: Arc>, + view_manager: Arc, rev_manager: Arc>>, - block_manager: Arc, + block_manager: Arc, cell_data_cache: AtomicCellDataCache, } -impl Drop for GridRevisionEditor { +impl Drop for DatabaseRevisionEditor { fn drop(&mut self) { tracing::trace!("Drop GridRevisionEditor"); } } -impl GridRevisionEditor { +impl DatabaseRevisionEditor { pub async fn new( - grid_id: &str, - user: Arc, + database_id: &str, + user: Arc, mut rev_manager: RevisionManager>, persistence: Arc, task_scheduler: Arc>, ) -> FlowyResult> { let token = user.token()?; let cloud = Arc::new(GridRevisionCloudService { token }); - let grid_pad = rev_manager.initialize::(Some(cloud)).await?; + let database_pad = rev_manager.initialize::(Some(cloud)).await?; let rev_manager = Arc::new(rev_manager); - let grid_pad = Arc::new(RwLock::new(grid_pad)); + let database_pad = Arc::new(RwLock::new(database_pad)); let cell_data_cache = AnyTypeCache::::new(); // Block manager let (block_event_tx, block_event_rx) = broadcast::channel(100); - let block_meta_revs = grid_pad.read().await.get_block_meta_revs(); - let block_manager = Arc::new(GridBlockManager::new(&user, block_meta_revs, persistence, block_event_tx).await?); + let block_meta_revs = database_pad.read().await.get_block_meta_revs(); + let block_manager = + Arc::new(DatabaseBlockManager::new(&user, block_meta_revs, persistence, block_event_tx).await?); let delegate = Arc::new(GridViewEditorDelegateImpl { - pad: grid_pad.clone(), + pad: database_pad.clone(), block_manager: block_manager.clone(), task_scheduler, cell_data_cache: cell_data_cache.clone(), @@ -81,8 +82,8 @@ impl GridRevisionEditor { // View manager let view_manager = Arc::new( - GridViewManager::new( - grid_id.to_owned(), + DatabaseViewManager::new( + database_id.to_owned(), user.clone(), delegate, cell_data_cache.clone(), @@ -92,9 +93,9 @@ impl GridRevisionEditor { ); let editor = Arc::new(Self { - grid_id: grid_id.to_owned(), + database_id: database_id.to_owned(), user, - grid_pad, + database_pad, rev_manager, block_manager, view_manager, @@ -109,10 +110,10 @@ impl GridRevisionEditor { self.block_manager.close().await; self.rev_manager.generate_snapshot().await; self.rev_manager.close().await; - self.view_manager.close(&self.grid_id).await; + self.view_manager.close(&self.database_id).await; } - /// Save the type-option data to disk and send a `GridNotification::DidUpdateField` notification + /// Save the type-option data to disk and send a `DatabaseNotification::DidUpdateField` notification /// to dart side. /// /// It will do nothing if the passed-in type_option_data is empty @@ -162,7 +163,7 @@ impl GridRevisionEditor { } pub async fn next_field_rev(&self, field_type: &FieldType) -> FlowyResult { - let name = format!("Property {}", self.grid_pad.read().await.get_fields().len() + 1); + let name = format!("Property {}", self.database_pad.read().await.get_fields().len() + 1); let field_rev = FieldBuilder::from_field_type(field_type).name(&name).build(); Ok(field_rev) } @@ -193,7 +194,7 @@ impl GridRevisionEditor { } pub async fn contain_field(&self, field_id: &str) -> bool { - self.grid_pad.read().await.contain_field(field_id) + self.database_pad.read().await.contain_field(field_id) } pub async fn update_field(&self, params: FieldChangesetParams) -> FlowyResult<()> { @@ -259,7 +260,7 @@ impl GridRevisionEditor { pub async fn delete_field(&self, field_id: &str) -> FlowyResult<()> { self.modify(|grid_pad| Ok(grid_pad.delete_field_rev(field_id)?)).await?; let field_order = FieldIdPB::from(field_id); - let notified_changeset = GridFieldChangesetPB::delete(&self.grid_id, vec![field_order]); + let notified_changeset = DatabaseFieldChangesetPB::delete(&self.database_id, vec![field_order]); self.notify_did_update_grid(notified_changeset).await?; Ok(()) } @@ -319,19 +320,19 @@ impl GridRevisionEditor { } pub async fn get_field_rev(&self, field_id: &str) -> Option> { - let field_rev = self.grid_pad.read().await.get_field_rev(field_id)?.1.clone(); + let field_rev = self.database_pad.read().await.get_field_rev(field_id)?.1.clone(); Some(field_rev) } pub async fn get_field_revs(&self, field_ids: Option>) -> FlowyResult>> { if field_ids.is_none() { - let field_revs = self.grid_pad.read().await.get_field_revs(None)?; + let field_revs = self.database_pad.read().await.get_field_revs(None)?; return Ok(field_revs); } let field_ids = field_ids.unwrap_or_default(); let expected_len = field_ids.len(); - let field_revs = self.grid_pad.read().await.get_field_revs(Some(field_ids))?; + let field_revs = self.database_pad.read().await.get_field_revs(Some(field_ids))?; if expected_len != 0 && field_revs.len() != expected_len { tracing::error!( "This is a bug. The len of the field_revs should equal to {}", @@ -510,7 +511,7 @@ impl GridRevisionEditor { field_id: &str, cell_changeset: T, ) -> FlowyResult<()> { - match self.grid_pad.read().await.get_field_rev(field_id) { + match self.database_pad.read().await.get_field_rev(field_id) { None => { let msg = format!("Field:{} not found", &field_id); Err(FlowyError::internal().context(msg)) @@ -522,7 +523,7 @@ impl GridRevisionEditor { let type_cell_data = apply_cell_data_changeset(cell_changeset, cell_rev, field_rev, Some(self.cell_data_cache.clone()))?; let cell_changeset = CellChangesetPB { - grid_id: self.grid_id.clone(), + database_id: self.database_id.clone(), row_id: row_id.to_owned(), field_id: field_id.to_owned(), type_cell_data, @@ -546,14 +547,14 @@ impl GridRevisionEditor { } pub async fn get_block_meta_revs(&self) -> FlowyResult>> { - let block_meta_revs = self.grid_pad.read().await.get_block_meta_revs(); + let block_meta_revs = self.database_pad.read().await.get_block_meta_revs(); Ok(block_meta_revs) } - pub async fn get_blocks(&self, block_ids: Option>) -> FlowyResult> { + pub async fn get_blocks(&self, block_ids: Option>) -> FlowyResult> { let block_ids = match block_ids { None => self - .grid_pad + .database_pad .read() .await .get_block_meta_revs() @@ -566,7 +567,7 @@ impl GridRevisionEditor { Ok(blocks) } - pub async fn delete_rows(&self, block_rows: Vec) -> FlowyResult<()> { + pub async fn delete_rows(&self, block_rows: Vec) -> FlowyResult<()> { let changesets = self.block_manager.delete_rows(block_rows).await?; for changeset in changesets { self.update_block(changeset).await?; @@ -574,8 +575,8 @@ impl GridRevisionEditor { Ok(()) } - pub async fn get_grid(&self, view_id: &str) -> FlowyResult { - let pad = self.grid_pad.read().await; + pub async fn get_database(&self, view_id: &str) -> FlowyResult { + let pad = self.database_pad.read().await; let fields = pad.get_field_revs(None)?.iter().map(FieldIdPB::from).collect(); let mut all_rows = vec![]; for block_rev in pad.get_block_meta_revs() { @@ -584,14 +585,14 @@ impl GridRevisionEditor { } } - Ok(GridPB { - id: self.grid_id.clone(), + Ok(DatabasePB { + id: self.database_id.clone(), fields, rows: all_rows, }) } - pub async fn get_setting(&self) -> FlowyResult { + pub async fn get_setting(&self) -> FlowyResult { self.view_manager.get_setting().await } @@ -699,7 +700,7 @@ impl GridRevisionEditor { .cell_by_field_id .into_iter() .map(|(field_id, cell_rev)| CellChangesetPB { - grid_id: view_id.clone(), + database_id: view_id.clone(), row_id: row_changeset.row_id.clone(), field_id, type_cell_data: cell_rev.type_cell_data, @@ -722,7 +723,7 @@ impl GridRevisionEditor { pub async fn move_field(&self, params: MoveFieldParams) -> FlowyResult<()> { let MoveFieldParams { - grid_id: _, + view_id: _, field_id, from_index, to_index, @@ -730,11 +731,11 @@ impl GridRevisionEditor { self.modify(|grid_pad| Ok(grid_pad.move_field(&field_id, from_index as usize, to_index as usize)?)) .await?; - if let Some((index, field_rev)) = self.grid_pad.read().await.get_field_rev(&field_id) { + if let Some((index, field_rev)) = self.database_pad.read().await.get_field_rev(&field_id) { let delete_field_order = FieldIdPB::from(field_id); let insert_field = IndexFieldPB::from_field_rev(field_rev, index); - let notified_changeset = GridFieldChangesetPB { - grid_id: self.grid_id.clone(), + let notified_changeset = DatabaseFieldChangesetPB { + database_id: self.database_id.clone(), inserted_fields: vec![insert_field], deleted_fields: vec![delete_field_order], updated_fields: vec![], @@ -745,9 +746,9 @@ impl GridRevisionEditor { Ok(()) } - pub async fn duplicate_grid(&self) -> FlowyResult { - let grid_pad = self.grid_pad.read().await; - let grid_view_revision_data = self.view_manager.duplicate_grid_view().await?; + pub async fn duplicate_grid(&self) -> FlowyResult { + let grid_pad = self.database_pad.read().await; + let grid_view_revision_data = self.view_manager.duplicate_database_view().await?; let original_blocks = grid_pad.get_block_meta_revs(); let (duplicated_fields, duplicated_blocks) = grid_pad.duplicate_grid_block_meta().await; @@ -769,7 +770,7 @@ impl GridRevisionEditor { } drop(grid_pad); - Ok(BuildGridContext { + Ok(BuildDatabaseContext { field_revs: duplicated_fields.into_iter().map(Arc::new).collect(), block_metas: duplicated_blocks, blocks: blocks_meta_data, @@ -783,7 +784,7 @@ impl GridRevisionEditor { } async fn create_row_rev(&self) -> FlowyResult { - let field_revs = self.grid_pad.read().await.get_field_revs(None)?; + let field_revs = self.database_pad.read().await.get_field_revs(None)?; let block_id = self.block_id().await?; // insert empty row below the row whose id is upper_row_id @@ -806,24 +807,24 @@ impl GridRevisionEditor { async fn modify(&self, f: F) -> FlowyResult<()> where - F: for<'a> FnOnce(&'a mut GridRevisionPad) -> FlowyResult>, + F: for<'a> FnOnce(&'a mut DatabaseRevisionPad) -> FlowyResult>, { - let mut write_guard = self.grid_pad.write().await; + let mut write_guard = self.database_pad.write().await; if let Some(changeset) = f(&mut write_guard)? { self.apply_change(changeset).await?; } Ok(()) } - async fn apply_change(&self, change: GridRevisionChangeset) -> FlowyResult<()> { - let GridRevisionChangeset { operations: delta, md5 } = change; + async fn apply_change(&self, change: DatabaseRevisionChangeset) -> FlowyResult<()> { + let DatabaseRevisionChangeset { operations: delta, md5 } = change; let data = delta.json_bytes(); let _ = self.rev_manager.add_local_revision(data, md5).await?; Ok(()) } async fn block_id(&self) -> FlowyResult { - match self.grid_pad.read().await.get_block_meta_revs().last() { + match self.database_pad.read().await.get_block_meta_revs().last() { None => Err(FlowyError::internal().context("There is no grid block in this grid")), Some(grid_block) => Ok(grid_block.block_id.clone()), } @@ -831,9 +832,9 @@ impl GridRevisionEditor { #[tracing::instrument(level = "trace", skip_all, err)] async fn notify_did_insert_grid_field(&self, field_id: &str) -> FlowyResult<()> { - if let Some((index, field_rev)) = self.grid_pad.read().await.get_field_rev(field_id) { + if let Some((index, field_rev)) = self.database_pad.read().await.get_field_rev(field_id) { let index_field = IndexFieldPB::from_field_rev(field_rev, index); - let notified_changeset = GridFieldChangesetPB::insert(&self.grid_id, vec![index_field]); + let notified_changeset = DatabaseFieldChangesetPB::insert(&self.database_id, vec![index_field]); self.notify_did_update_grid(notified_changeset).await?; } Ok(()) @@ -842,17 +843,17 @@ impl GridRevisionEditor { #[tracing::instrument(level = "trace", skip_all, err)] async fn notify_did_update_grid_field(&self, field_id: &str) -> FlowyResult<()> { if let Some((_, field_rev)) = self - .grid_pad + .database_pad .read() .await .get_field_rev(field_id) .map(|(index, field)| (index, field.clone())) { let updated_field = FieldPB::from(field_rev); - let notified_changeset = GridFieldChangesetPB::update(&self.grid_id, vec![updated_field.clone()]); + let notified_changeset = DatabaseFieldChangesetPB::update(&self.database_id, vec![updated_field.clone()]); self.notify_did_update_grid(notified_changeset).await?; - send_notification(field_id, GridNotification::DidUpdateField) + send_notification(field_id, DatabaseNotification::DidUpdateField) .payload(updated_field) .send(); } @@ -860,8 +861,8 @@ impl GridRevisionEditor { Ok(()) } - async fn notify_did_update_grid(&self, changeset: GridFieldChangesetPB) -> FlowyResult<()> { - send_notification(&self.grid_id, GridNotification::DidUpdateGridFields) + async fn notify_did_update_grid(&self, changeset: DatabaseFieldChangesetPB) -> FlowyResult<()> { + send_notification(&self.database_id, DatabaseNotification::DidUpdateDatabaseFields) .payload(changeset) .send(); Ok(()) @@ -869,22 +870,22 @@ impl GridRevisionEditor { } #[cfg(feature = "flowy_unit_test")] -impl GridRevisionEditor { +impl DatabaseRevisionEditor { pub fn rev_manager(&self) -> Arc>> { self.rev_manager.clone() } - pub fn grid_pad(&self) -> Arc> { - self.grid_pad.clone() + pub fn grid_pad(&self) -> Arc> { + self.database_pad.clone() } } pub struct GridRevisionSerde(); impl RevisionObjectDeserializer for GridRevisionSerde { - type Output = GridRevisionPad; + type Output = DatabaseRevisionPad; fn deserialize_revisions(_object_id: &str, revisions: Vec) -> FlowyResult { - let pad = GridRevisionPad::from_revisions(revisions)?; + let pad = DatabaseRevisionPad::from_revisions(revisions)?; Ok(pad) } diff --git a/frontend/rust-lib/flowy-grid/src/services/grid_editor_trait_impl.rs b/frontend/rust-lib/flowy-database/src/services/grid_editor_trait_impl.rs similarity index 86% rename from frontend/rust-lib/flowy-grid/src/services/grid_editor_trait_impl.rs rename to frontend/rust-lib/flowy-database/src/services/grid_editor_trait_impl.rs index 950e640494..66b054fdd8 100644 --- a/frontend/rust-lib/flowy-grid/src/services/grid_editor_trait_impl.rs +++ b/frontend/rust-lib/flowy-database/src/services/grid_editor_trait_impl.rs @@ -1,11 +1,11 @@ use crate::entities::FieldType; -use crate::services::block_manager::GridBlockManager; +use crate::services::block_manager::DatabaseBlockManager; use crate::services::cell::AtomicCellDataCache; use crate::services::field::{TypeOptionCellDataHandler, TypeOptionCellExt}; -use crate::services::row::GridBlockRowRevision; -use crate::services::view_editor::GridViewEditorDelegate; +use crate::services::row::DatabaseBlockRowRevision; +use crate::services::view_editor::DatabaseViewEditorDelegate; -use flowy_client_sync::client_grid::GridRevisionPad; +use flowy_client_sync::client_database::DatabaseRevisionPad; use flowy_task::TaskDispatcher; use grid_model::{FieldRevision, RowRevision}; use lib_infra::future::{to_fut, Fut}; @@ -13,13 +13,13 @@ use std::sync::Arc; use tokio::sync::RwLock; pub(crate) struct GridViewEditorDelegateImpl { - pub(crate) pad: Arc>, - pub(crate) block_manager: Arc, + pub(crate) pad: Arc>, + pub(crate) block_manager: Arc, pub(crate) task_scheduler: Arc>, pub(crate) cell_data_cache: AtomicCellDataCache, } -impl GridViewEditorDelegate for GridViewEditorDelegateImpl { +impl DatabaseViewEditorDelegate for GridViewEditorDelegateImpl { fn get_field_revs(&self, field_ids: Option>) -> Fut>> { let pad = self.pad.clone(); to_fut(async move { @@ -71,7 +71,7 @@ impl GridViewEditorDelegate for GridViewEditorDelegateImpl { // pub async fn get_cells_for_field(&self, field_id: &str) -> FlowyResult> { // } - fn get_blocks(&self) -> Fut> { + fn get_blocks(&self) -> Fut> { let block_manager = self.block_manager.clone(); to_fut(async move { block_manager.get_blocks(None).await.unwrap_or_default() }) } diff --git a/frontend/rust-lib/flowy-grid/src/services/group/action.rs b/frontend/rust-lib/flowy-database/src/services/group/action.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/group/action.rs rename to frontend/rust-lib/flowy-database/src/services/group/action.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/group/configuration.rs b/frontend/rust-lib/flowy-database/src/services/group/configuration.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/group/configuration.rs rename to frontend/rust-lib/flowy-database/src/services/group/configuration.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/group/controller.rs b/frontend/rust-lib/flowy-database/src/services/group/controller.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/group/controller.rs rename to frontend/rust-lib/flowy-database/src/services/group/controller.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/group/controller_impls/checkbox_controller.rs b/frontend/rust-lib/flowy-database/src/services/group/controller_impls/checkbox_controller.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/group/controller_impls/checkbox_controller.rs rename to frontend/rust-lib/flowy-database/src/services/group/controller_impls/checkbox_controller.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/group/controller_impls/default_controller.rs b/frontend/rust-lib/flowy-database/src/services/group/controller_impls/default_controller.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/group/controller_impls/default_controller.rs rename to frontend/rust-lib/flowy-database/src/services/group/controller_impls/default_controller.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/group/controller_impls/mod.rs b/frontend/rust-lib/flowy-database/src/services/group/controller_impls/mod.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/group/controller_impls/mod.rs rename to frontend/rust-lib/flowy-database/src/services/group/controller_impls/mod.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/group/controller_impls/select_option_controller/mod.rs b/frontend/rust-lib/flowy-database/src/services/group/controller_impls/select_option_controller/mod.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/group/controller_impls/select_option_controller/mod.rs rename to frontend/rust-lib/flowy-database/src/services/group/controller_impls/select_option_controller/mod.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/group/controller_impls/select_option_controller/multi_select_controller.rs b/frontend/rust-lib/flowy-database/src/services/group/controller_impls/select_option_controller/multi_select_controller.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/group/controller_impls/select_option_controller/multi_select_controller.rs rename to frontend/rust-lib/flowy-database/src/services/group/controller_impls/select_option_controller/multi_select_controller.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/group/controller_impls/select_option_controller/single_select_controller.rs b/frontend/rust-lib/flowy-database/src/services/group/controller_impls/select_option_controller/single_select_controller.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/group/controller_impls/select_option_controller/single_select_controller.rs rename to frontend/rust-lib/flowy-database/src/services/group/controller_impls/select_option_controller/single_select_controller.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/group/controller_impls/select_option_controller/util.rs b/frontend/rust-lib/flowy-database/src/services/group/controller_impls/select_option_controller/util.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/group/controller_impls/select_option_controller/util.rs rename to frontend/rust-lib/flowy-database/src/services/group/controller_impls/select_option_controller/util.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/group/controller_impls/url_controller.rs b/frontend/rust-lib/flowy-database/src/services/group/controller_impls/url_controller.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/group/controller_impls/url_controller.rs rename to frontend/rust-lib/flowy-database/src/services/group/controller_impls/url_controller.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/group/entities.rs b/frontend/rust-lib/flowy-database/src/services/group/entities.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/group/entities.rs rename to frontend/rust-lib/flowy-database/src/services/group/entities.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/group/group_util.rs b/frontend/rust-lib/flowy-database/src/services/group/group_util.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/group/group_util.rs rename to frontend/rust-lib/flowy-database/src/services/group/group_util.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/group/mod.rs b/frontend/rust-lib/flowy-database/src/services/group/mod.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/group/mod.rs rename to frontend/rust-lib/flowy-database/src/services/group/mod.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/mod.rs b/frontend/rust-lib/flowy-database/src/services/mod.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/mod.rs rename to frontend/rust-lib/flowy-database/src/services/mod.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/persistence/block_index.rs b/frontend/rust-lib/flowy-database/src/services/persistence/block_index.rs similarity index 98% rename from frontend/rust-lib/flowy-grid/src/services/persistence/block_index.rs rename to frontend/rust-lib/flowy-database/src/services/persistence/block_index.rs index 798819fb98..00bd6da3ae 100644 --- a/frontend/rust-lib/flowy-grid/src/services/persistence/block_index.rs +++ b/frontend/rust-lib/flowy-database/src/services/persistence/block_index.rs @@ -1,10 +1,10 @@ use crate::services::persistence::GridDatabase; use diesel::{ExpressionMethods, QueryDsl, RunQueryDsl}; -use flowy_database::{ +use flowy_error::FlowyResult; +use flowy_sqlite::{ prelude::*, schema::{grid_block_index_table, grid_block_index_table::dsl}, }; -use flowy_error::FlowyResult; use std::sync::Arc; /// Allow getting the block id from row id. diff --git a/frontend/rust-lib/flowy-grid/src/services/persistence/kv.rs b/frontend/rust-lib/flowy-database/src/services/persistence/kv.rs similarity index 97% rename from frontend/rust-lib/flowy-grid/src/services/persistence/kv.rs rename to frontend/rust-lib/flowy-database/src/services/persistence/kv.rs index 62d7122150..06c6a33313 100644 --- a/frontend/rust-lib/flowy-grid/src/services/persistence/kv.rs +++ b/frontend/rust-lib/flowy-database/src/services/persistence/kv.rs @@ -2,11 +2,11 @@ use crate::services::persistence::GridDatabase; use ::diesel::{query_dsl::*, ExpressionMethods}; use bytes::Bytes; use diesel::SqliteConnection; -use flowy_database::{ +use flowy_error::{FlowyError, FlowyResult}; +use flowy_sqlite::{ prelude::*, schema::{kv_table, kv_table::dsl}, }; -use flowy_error::{FlowyError, FlowyResult}; use std::sync::Arc; #[derive(PartialEq, Eq, Clone, Debug, Queryable, Identifiable, Insertable, Associations)] @@ -28,11 +28,11 @@ pub trait KVTransaction { fn batch_remove(&self, keys: Vec) -> FlowyResult<()>; } -pub struct GridKVPersistence { +pub struct DatabaseKVPersistence { database: Arc, } -impl GridKVPersistence { +impl DatabaseKVPersistence { pub fn new(database: Arc) -> Self { Self { database } } @@ -49,7 +49,7 @@ impl GridKVPersistence { } } -impl KVTransaction for GridKVPersistence { +impl KVTransaction for DatabaseKVPersistence { fn get>(&self, key: &str) -> FlowyResult> { self.begin_transaction(|transaction| transaction.get(key)) } diff --git a/frontend/rust-lib/flowy-grid/src/services/persistence/migration.rs b/frontend/rust-lib/flowy-database/src/services/persistence/migration.rs similarity index 70% rename from frontend/rust-lib/flowy-grid/src/services/persistence/migration.rs rename to frontend/rust-lib/flowy-database/src/services/persistence/migration.rs index c9e730e7b7..ccb53e1918 100644 --- a/frontend/rust-lib/flowy-grid/src/services/persistence/migration.rs +++ b/frontend/rust-lib/flowy-database/src/services/persistence/migration.rs @@ -1,25 +1,25 @@ -use crate::manager::GridUser; -use crate::services::persistence::rev_sqlite::SQLiteGridRevisionPersistence; +use crate::manager::DatabaseUser; +use crate::services::persistence::rev_sqlite::SQLiteDatabaseRevisionPersistence; use crate::services::persistence::GridDatabase; use bytes::Bytes; -use flowy_client_sync::client_grid::{make_grid_rev_json_str, GridOperationsBuilder, GridRevisionPad}; -use flowy_database::kv::KV; +use flowy_client_sync::client_database::{make_database_rev_json_str, DatabaseOperationsBuilder, DatabaseRevisionPad}; use flowy_error::FlowyResult; use flowy_revision::reset::{RevisionResettable, RevisionStructReset}; -use grid_model::GridRevision; +use flowy_sqlite::kv::KV; +use grid_model::DatabaseRevision; use lib_infra::util::md5; use revision_model::Revision; use std::sync::Arc; const V1_MIGRATION: &str = "GRID_V1_MIGRATION"; -pub(crate) struct GridMigration { - user: Arc, +pub(crate) struct DatabaseMigration { + user: Arc, database: Arc, } -impl GridMigration { - pub fn new(user: Arc, database: Arc) -> Self { +impl DatabaseMigration { + pub fn new(user: Arc, database: Arc) -> Self { Self { user, database } } @@ -41,7 +41,7 @@ impl GridMigration { }; let user_id = self.user.user_id()?; let pool = self.database.db_pool()?; - let disk_cache = SQLiteGridRevisionPersistence::new(&user_id, pool); + let disk_cache = SQLiteDatabaseRevisionPersistence::new(&user_id, pool); let reset = RevisionStructReset::new(&user_id, object, Arc::new(disk_cache)); reset.run().await } @@ -61,15 +61,15 @@ impl RevisionResettable for GridRevisionResettable { } fn reset_data(&self, revisions: Vec) -> FlowyResult { - let pad = GridRevisionPad::from_revisions(revisions)?; + let pad = DatabaseRevisionPad::from_revisions(revisions)?; let json = pad.json_str()?; - let bytes = GridOperationsBuilder::new().insert(&json).build().json_bytes(); + let bytes = DatabaseOperationsBuilder::new().insert(&json).build().json_bytes(); Ok(bytes) } fn default_target_rev_str(&self) -> FlowyResult { - let grid_rev = GridRevision::default(); - let json = make_grid_rev_json_str(&grid_rev)?; + let grid_rev = DatabaseRevision::default(); + let json = make_database_rev_json_str(&grid_rev)?; Ok(json) } diff --git a/frontend/rust-lib/flowy-grid/src/services/persistence/mod.rs b/frontend/rust-lib/flowy-database/src/services/persistence/mod.rs similarity index 89% rename from frontend/rust-lib/flowy-grid/src/services/persistence/mod.rs rename to frontend/rust-lib/flowy-database/src/services/persistence/mod.rs index 5b3f7d1271..6f9db8e7f8 100644 --- a/frontend/rust-lib/flowy-grid/src/services/persistence/mod.rs +++ b/frontend/rust-lib/flowy-database/src/services/persistence/mod.rs @@ -1,5 +1,5 @@ -use flowy_database::{ConnectionPool, DBConnection}; use flowy_error::FlowyError; +use flowy_sqlite::{ConnectionPool, DBConnection}; use std::sync::Arc; pub mod block_index; diff --git a/frontend/rust-lib/flowy-grid/src/services/persistence/rev_sqlite/grid_block_sqlite_impl.rs b/frontend/rust-lib/flowy-database/src/services/persistence/rev_sqlite/grid_block_sqlite_impl.rs similarity index 97% rename from frontend/rust-lib/flowy-grid/src/services/persistence/rev_sqlite/grid_block_sqlite_impl.rs rename to frontend/rust-lib/flowy-database/src/services/persistence/rev_sqlite/grid_block_sqlite_impl.rs index b3f18d9a53..379de332e0 100644 --- a/frontend/rust-lib/flowy-grid/src/services/persistence/rev_sqlite/grid_block_sqlite_impl.rs +++ b/frontend/rust-lib/flowy-database/src/services/persistence/rev_sqlite/grid_block_sqlite_impl.rs @@ -1,23 +1,23 @@ use bytes::Bytes; use diesel::{sql_types::Integer, update, SqliteConnection}; -use flowy_database::{ +use flowy_error::{internal_error, FlowyError, FlowyResult}; +use flowy_revision_persistence::{RevisionChangeset, RevisionDiskCache, RevisionState, SyncRecord}; +use flowy_sqlite::{ impl_sql_integer_expression, insert_or_ignore_into, prelude::*, schema::{grid_meta_rev_table, grid_meta_rev_table::dsl}, ConnectionPool, }; -use flowy_error::{internal_error, FlowyError, FlowyResult}; -use flowy_revision_persistence::{RevisionChangeset, RevisionDiskCache, RevisionState, SyncRecord}; use lib_infra::util::md5; use revision_model::{Revision, RevisionRange}; use std::sync::Arc; -pub struct SQLiteGridBlockRevisionPersistence { +pub struct SQLiteDatabaseBlockRevisionPersistence { user_id: String, pub(crate) pool: Arc, } -impl RevisionDiskCache> for SQLiteGridBlockRevisionPersistence { +impl RevisionDiskCache> for SQLiteDatabaseBlockRevisionPersistence { type Error = FlowyError; fn create_revision_records(&self, revision_records: Vec) -> Result<(), Self::Error> { @@ -82,7 +82,7 @@ impl RevisionDiskCache> for SQLiteGridBlockRevisionPersisten } } -impl SQLiteGridBlockRevisionPersistence { +impl SQLiteDatabaseBlockRevisionPersistence { pub fn new(user_id: &str, pool: Arc) -> Self { Self { user_id: user_id.to_owned(), diff --git a/frontend/rust-lib/flowy-grid/src/services/persistence/rev_sqlite/grid_snapshot.rs b/frontend/rust-lib/flowy-database/src/services/persistence/rev_sqlite/grid_snapshot.rs similarity index 95% rename from frontend/rust-lib/flowy-grid/src/services/persistence/rev_sqlite/grid_snapshot.rs rename to frontend/rust-lib/flowy-database/src/services/persistence/rev_sqlite/grid_snapshot.rs index baacfd3011..07325d5d78 100644 --- a/frontend/rust-lib/flowy-grid/src/services/persistence/rev_sqlite/grid_snapshot.rs +++ b/frontend/rust-lib/flowy-database/src/services/persistence/rev_sqlite/grid_snapshot.rs @@ -1,21 +1,21 @@ #![allow(clippy::unused_unit)] use bytes::Bytes; -use flowy_database::{ +use flowy_error::{internal_error, FlowyResult}; +use flowy_revision::{RevisionSnapshot, RevisionSnapshotDiskCache}; +use flowy_sqlite::{ prelude::*, schema::{grid_rev_snapshot, grid_rev_snapshot::dsl}, ConnectionPool, }; -use flowy_error::{internal_error, FlowyResult}; -use flowy_revision::{RevisionSnapshot, RevisionSnapshotDiskCache}; use lib_infra::util::timestamp; use std::sync::Arc; -pub struct SQLiteGridRevisionSnapshotPersistence { +pub struct SQLiteDatabaseRevisionSnapshotPersistence { object_id: String, pool: Arc, } -impl SQLiteGridRevisionSnapshotPersistence { +impl SQLiteDatabaseRevisionSnapshotPersistence { pub fn new(object_id: &str, pool: Arc) -> Self { Self { object_id: object_id.to_string(), @@ -28,7 +28,7 @@ impl SQLiteGridRevisionSnapshotPersistence { } } -impl RevisionSnapshotDiskCache for SQLiteGridRevisionSnapshotPersistence { +impl RevisionSnapshotDiskCache for SQLiteDatabaseRevisionSnapshotPersistence { fn write_snapshot(&self, rev_id: i64, data: Vec) -> FlowyResult<()> { let conn = self.pool.get().map_err(internal_error)?; let snapshot_id = self.gen_snapshot_id(rev_id); diff --git a/frontend/rust-lib/flowy-grid/src/services/persistence/rev_sqlite/grid_sqlite_impl.rs b/frontend/rust-lib/flowy-database/src/services/persistence/rev_sqlite/grid_sqlite_impl.rs similarity index 97% rename from frontend/rust-lib/flowy-grid/src/services/persistence/rev_sqlite/grid_sqlite_impl.rs rename to frontend/rust-lib/flowy-database/src/services/persistence/rev_sqlite/grid_sqlite_impl.rs index de6a7b8daf..93ec18b9b5 100644 --- a/frontend/rust-lib/flowy-grid/src/services/persistence/rev_sqlite/grid_sqlite_impl.rs +++ b/frontend/rust-lib/flowy-database/src/services/persistence/rev_sqlite/grid_sqlite_impl.rs @@ -1,23 +1,23 @@ use bytes::Bytes; use diesel::{sql_types::Integer, update, SqliteConnection}; -use flowy_database::{ +use flowy_error::{internal_error, FlowyError, FlowyResult}; +use flowy_revision_persistence::{RevisionChangeset, RevisionDiskCache, RevisionState, SyncRecord}; +use flowy_sqlite::{ impl_sql_integer_expression, insert_or_ignore_into, prelude::*, schema::{grid_rev_table, grid_rev_table::dsl}, ConnectionPool, }; -use flowy_error::{internal_error, FlowyError, FlowyResult}; -use flowy_revision_persistence::{RevisionChangeset, RevisionDiskCache, RevisionState, SyncRecord}; use lib_infra::util::md5; use revision_model::{Revision, RevisionRange}; use std::sync::Arc; -pub struct SQLiteGridRevisionPersistence { +pub struct SQLiteDatabaseRevisionPersistence { user_id: String, pub(crate) pool: Arc, } -impl RevisionDiskCache> for SQLiteGridRevisionPersistence { +impl RevisionDiskCache> for SQLiteDatabaseRevisionPersistence { type Error = FlowyError; fn create_revision_records(&self, revision_records: Vec) -> Result<(), Self::Error> { @@ -82,7 +82,7 @@ impl RevisionDiskCache> for SQLiteGridRevisionPersistence { } } -impl SQLiteGridRevisionPersistence { +impl SQLiteDatabaseRevisionPersistence { pub fn new(user_id: &str, pool: Arc) -> Self { Self { user_id: user_id.to_owned(), diff --git a/frontend/rust-lib/flowy-grid/src/services/persistence/rev_sqlite/grid_view_sqlite_impl.rs b/frontend/rust-lib/flowy-database/src/services/persistence/rev_sqlite/grid_view_sqlite_impl.rs similarity index 99% rename from frontend/rust-lib/flowy-grid/src/services/persistence/rev_sqlite/grid_view_sqlite_impl.rs rename to frontend/rust-lib/flowy-database/src/services/persistence/rev_sqlite/grid_view_sqlite_impl.rs index f8534510cf..5081951e30 100644 --- a/frontend/rust-lib/flowy-grid/src/services/persistence/rev_sqlite/grid_view_sqlite_impl.rs +++ b/frontend/rust-lib/flowy-database/src/services/persistence/rev_sqlite/grid_view_sqlite_impl.rs @@ -1,13 +1,13 @@ use bytes::Bytes; use diesel::{sql_types::Integer, update, SqliteConnection}; -use flowy_database::{ +use flowy_error::{internal_error, FlowyError, FlowyResult}; +use flowy_revision_persistence::{RevisionChangeset, RevisionDiskCache, RevisionState, SyncRecord}; +use flowy_sqlite::{ impl_sql_integer_expression, insert_or_ignore_into, prelude::*, schema::{grid_view_rev_table, grid_view_rev_table::dsl}, ConnectionPool, }; -use flowy_error::{internal_error, FlowyError, FlowyResult}; -use flowy_revision_persistence::{RevisionChangeset, RevisionDiskCache, RevisionState, SyncRecord}; use lib_infra::util::md5; use revision_model::{Revision, RevisionRange}; use std::sync::Arc; diff --git a/frontend/rust-lib/flowy-grid/src/services/persistence/rev_sqlite/mod.rs b/frontend/rust-lib/flowy-database/src/services/persistence/rev_sqlite/mod.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/persistence/rev_sqlite/mod.rs rename to frontend/rust-lib/flowy-database/src/services/persistence/rev_sqlite/mod.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/row/mod.rs b/frontend/rust-lib/flowy-database/src/services/row/mod.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/row/mod.rs rename to frontend/rust-lib/flowy-database/src/services/row/mod.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/row/row_builder.rs b/frontend/rust-lib/flowy-database/src/services/row/row_builder.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/row/row_builder.rs rename to frontend/rust-lib/flowy-database/src/services/row/row_builder.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/row/row_loader.rs b/frontend/rust-lib/flowy-database/src/services/row/row_loader.rs similarity index 89% rename from frontend/rust-lib/flowy-grid/src/services/row/row_loader.rs rename to frontend/rust-lib/flowy-database/src/services/row/row_loader.rs index a5d5e35d98..26874a5910 100644 --- a/frontend/rust-lib/flowy-grid/src/services/row/row_loader.rs +++ b/frontend/rust-lib/flowy-database/src/services/row/row_loader.rs @@ -3,17 +3,17 @@ use grid_model::RowRevision; use std::sync::Arc; -pub struct GridBlockRowRevision { +pub struct DatabaseBlockRowRevision { pub(crate) block_id: String, pub row_revs: Vec>, } -pub struct GridBlockRow { +pub struct DatabaseBlockRow { pub block_id: String, pub row_ids: Vec, } -impl GridBlockRow { +impl DatabaseBlockRow { pub fn new(block_id: String, row_ids: Vec) -> Self { Self { block_id, row_ids } } diff --git a/frontend/rust-lib/flowy-grid/src/services/setting/mod.rs b/frontend/rust-lib/flowy-database/src/services/setting/mod.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/setting/mod.rs rename to frontend/rust-lib/flowy-database/src/services/setting/mod.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/setting/setting_builder.rs b/frontend/rust-lib/flowy-database/src/services/setting/setting_builder.rs similarity index 63% rename from frontend/rust-lib/flowy-grid/src/services/setting/setting_builder.rs rename to frontend/rust-lib/flowy-database/src/services/setting/setting_builder.rs index bc57dcff3b..7892d90ab1 100644 --- a/frontend/rust-lib/flowy-grid/src/services/setting/setting_builder.rs +++ b/frontend/rust-lib/flowy-database/src/services/setting/setting_builder.rs @@ -1,13 +1,13 @@ -use crate::entities::{AlterFilterParams, DeleteFilterParams, GridLayout, GridSettingChangesetParams}; +use crate::entities::{AlterFilterParams, DatabaseSettingChangesetParams, DatabaseViewLayout, DeleteFilterParams}; pub struct GridSettingChangesetBuilder { - params: GridSettingChangesetParams, + params: DatabaseSettingChangesetParams, } impl GridSettingChangesetBuilder { - pub fn new(grid_id: &str, layout_type: &GridLayout) -> Self { - let params = GridSettingChangesetParams { - grid_id: grid_id.to_string(), + pub fn new(grid_id: &str, layout_type: &DatabaseViewLayout) -> Self { + let params = DatabaseSettingChangesetParams { + database_id: grid_id.to_string(), layout_type: layout_type.clone().into(), insert_filter: None, delete_filter: None, @@ -29,7 +29,7 @@ impl GridSettingChangesetBuilder { self } - pub fn build(self) -> GridSettingChangesetParams { + pub fn build(self) -> DatabaseSettingChangesetParams { self.params } } diff --git a/frontend/rust-lib/flowy-grid/src/services/sort/controller.rs b/frontend/rust-lib/flowy-database/src/services/sort/controller.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/sort/controller.rs rename to frontend/rust-lib/flowy-database/src/services/sort/controller.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/sort/entities.rs b/frontend/rust-lib/flowy-database/src/services/sort/entities.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/sort/entities.rs rename to frontend/rust-lib/flowy-database/src/services/sort/entities.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/sort/mod.rs b/frontend/rust-lib/flowy-database/src/services/sort/mod.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/sort/mod.rs rename to frontend/rust-lib/flowy-database/src/services/sort/mod.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/sort/task.rs b/frontend/rust-lib/flowy-database/src/services/sort/task.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/sort/task.rs rename to frontend/rust-lib/flowy-database/src/services/sort/task.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/util.rs b/frontend/rust-lib/flowy-database/src/services/util.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/util.rs rename to frontend/rust-lib/flowy-database/src/services/util.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/view_editor/changed_notifier.rs b/frontend/rust-lib/flowy-database/src/services/view_editor/changed_notifier.rs similarity index 80% rename from frontend/rust-lib/flowy-grid/src/services/view_editor/changed_notifier.rs rename to frontend/rust-lib/flowy-database/src/services/view_editor/changed_notifier.rs index 55de2b5b47..4f8e2bb29f 100644 --- a/frontend/rust-lib/flowy-grid/src/services/view_editor/changed_notifier.rs +++ b/frontend/rust-lib/flowy-database/src/services/view_editor/changed_notifier.rs @@ -1,5 +1,5 @@ -use crate::entities::{GridRowsVisibilityChangesetPB, ReorderAllRowsPB, ReorderSingleRowPB}; -use crate::notification::{send_notification, GridNotification}; +use crate::entities::{ReorderAllRowsPB, ReorderSingleRowPB, ViewRowsVisibilityChangesetPB}; +use crate::notification::{send_notification, DatabaseNotification}; use crate::services::filter::FilterResultNotification; use crate::services::sort::{ReorderAllRowsResult, ReorderSingleRowResult}; use async_stream::stream; @@ -31,21 +31,24 @@ impl GridViewChangedReceiverRunner { .for_each(|changed| async { match changed { GridViewChanged::FilterNotification(notification) => { - let changeset = GridRowsVisibilityChangesetPB { + let changeset = ViewRowsVisibilityChangesetPB { view_id: notification.view_id, visible_rows: notification.visible_rows, invisible_rows: notification.invisible_rows, }; - send_notification(&changeset.view_id, GridNotification::DidUpdateGridViewRowsVisibility) - .payload(changeset) - .send() + send_notification( + &changeset.view_id, + DatabaseNotification::DidUpdateDatabaseViewRowsVisibility, + ) + .payload(changeset) + .send() } GridViewChanged::ReorderAllRowsNotification(notification) => { let row_orders = ReorderAllRowsPB { row_orders: notification.row_orders, }; - send_notification(¬ification.view_id, GridNotification::DidReorderRows) + send_notification(¬ification.view_id, DatabaseNotification::DidReorderRows) .payload(row_orders) .send() } @@ -55,7 +58,7 @@ impl GridViewChangedReceiverRunner { old_index: notification.old_index as i32, new_index: notification.new_index as i32, }; - send_notification(¬ification.view_id, GridNotification::DidReorderSingleRow) + send_notification(¬ification.view_id, DatabaseNotification::DidReorderSingleRow) .payload(reorder_row) .send() } diff --git a/frontend/rust-lib/flowy-grid/src/services/view_editor/editor.rs b/frontend/rust-lib/flowy-database/src/services/view_editor/editor.rs similarity index 92% rename from frontend/rust-lib/flowy-grid/src/services/view_editor/editor.rs rename to frontend/rust-lib/flowy-database/src/services/view_editor/editor.rs index db93b5f10c..ec6f1ed89e 100644 --- a/frontend/rust-lib/flowy-grid/src/services/view_editor/editor.rs +++ b/frontend/rust-lib/flowy-database/src/services/view_editor/editor.rs @@ -1,6 +1,6 @@ use crate::entities::*; -use crate::notification::{send_notification, GridNotification}; -use crate::services::block_manager::GridBlockEvent; +use crate::notification::{send_notification, DatabaseNotification}; +use crate::services::block_manager::DatabaseBlockEvent; use crate::services::cell::{AtomicCellDataCache, TypeCellData}; use crate::services::field::{RowSingleCellData, TypeOptionCellDataHandler}; use crate::services::filter::{FilterChangeset, FilterController, FilterTaskHandler, FilterType, UpdatedFilterType}; @@ -8,15 +8,15 @@ use crate::services::group::{ default_group_configuration, find_group_field, make_group_controller, Group, GroupConfigurationReader, GroupController, MoveGroupRowContext, }; -use crate::services::row::GridBlockRowRevision; +use crate::services::row::DatabaseBlockRowRevision; use crate::services::sort::{DeletedSortType, SortChangeset, SortController, SortTaskHandler, SortType}; use crate::services::view_editor::changed_notifier::GridViewChangedNotifier; use crate::services::view_editor::trait_impl::*; use crate::services::view_editor::GridViewChangedReceiverRunner; -use flowy_client_sync::client_grid::{make_grid_view_operations, GridViewRevisionChangeset, GridViewRevisionPad}; -use flowy_database::ConnectionPool; +use flowy_client_sync::client_database::{make_grid_view_operations, GridViewRevisionChangeset, GridViewRevisionPad}; use flowy_error::FlowyResult; use flowy_revision::RevisionManager; +use flowy_sqlite::ConnectionPool; use flowy_task::TaskDispatcher; use grid_model::{ gen_grid_filter_id, gen_grid_sort_id, FieldRevision, FieldTypeRevision, FilterRevision, LayoutRevision, @@ -32,7 +32,7 @@ use std::future::Future; use std::sync::Arc; use tokio::sync::{broadcast, RwLock}; -pub trait GridViewEditorDelegate: Send + Sync + 'static { +pub trait DatabaseViewEditorDelegate: Send + Sync + 'static { /// If the field_ids is None, then it will return all the field revisions fn get_field_revs(&self, field_ids: Option>) -> Fut>>; @@ -55,7 +55,7 @@ pub trait GridViewEditorDelegate: Send + Sync + 'static { /// Get all the blocks that the current Grid has. /// One grid has a list of blocks - fn get_blocks(&self) -> Fut>; + fn get_blocks(&self) -> Fut>; /// Returns a `TaskDispatcher` used to poll a `Task` fn get_task_scheduler(&self) -> Arc>; @@ -67,25 +67,25 @@ pub trait GridViewEditorDelegate: Send + Sync + 'static { ) -> Option>; } -pub struct GridViewRevisionEditor { +pub struct DatabaseViewRevisionEditor { user_id: String, view_id: String, pad: Arc>, rev_manager: Arc>>, - delegate: Arc, + delegate: Arc, group_controller: Arc>>, filter_controller: Arc>, sort_controller: Arc>, pub notifier: GridViewChangedNotifier, } -impl GridViewRevisionEditor { +impl DatabaseViewRevisionEditor { #[tracing::instrument(level = "trace", skip_all, err)] pub async fn new( user_id: &str, token: &str, view_id: String, - delegate: Arc, + delegate: Arc, cell_data_cache: AtomicCellDataCache, mut rev_manager: RevisionManager>, ) -> FlowyResult { @@ -100,7 +100,7 @@ impl GridViewRevisionEditor { Err(err) => { // It shouldn't be here, because the snapshot should come to recue. tracing::error!("Deserialize grid view revisions failed: {}", err); - let view = GridViewRevisionPad::new(view_id.to_owned(), view_id.to_owned(), LayoutRevision::Table); + let view = GridViewRevisionPad::new(view_id.to_owned(), view_id.to_owned(), LayoutRevision::Grid); let bytes = make_grid_view_operations(&view).json_bytes(); let reset_revision = Revision::initial_revision(&view_id, bytes); let _ = rev_manager.reset_object(vec![reset_revision]).await; @@ -160,31 +160,31 @@ impl GridViewRevisionEditor { self.sort_controller.read().await.close().await; } - pub async fn handle_block_event(&self, event: Cow<'_, GridBlockEvent>) { + pub async fn handle_block_event(&self, event: Cow<'_, DatabaseBlockEvent>) { let changeset = match event.into_owned() { - GridBlockEvent::InsertRow { block_id: _, row } => { + DatabaseBlockEvent::InsertRow { block_id: _, row } => { // - GridViewRowsChangesetPB::from_insert(self.view_id.clone(), vec![row]) + ViewRowsChangesetPB::from_insert(self.view_id.clone(), vec![row]) } - GridBlockEvent::UpdateRow { block_id: _, row } => { + DatabaseBlockEvent::UpdateRow { block_id: _, row } => { // - GridViewRowsChangesetPB::from_update(self.view_id.clone(), vec![row]) + ViewRowsChangesetPB::from_update(self.view_id.clone(), vec![row]) } - GridBlockEvent::DeleteRow { block_id: _, row_id } => { + DatabaseBlockEvent::DeleteRow { block_id: _, row_id } => { // - GridViewRowsChangesetPB::from_delete(self.view_id.clone(), vec![row_id]) + ViewRowsChangesetPB::from_delete(self.view_id.clone(), vec![row_id]) } - GridBlockEvent::Move { + DatabaseBlockEvent::Move { block_id: _, deleted_row_id, inserted_row, } => { // - GridViewRowsChangesetPB::from_move(self.view_id.clone(), vec![deleted_row_id], vec![inserted_row]) + ViewRowsChangesetPB::from_move(self.view_id.clone(), vec![deleted_row_id], vec![inserted_row]) } }; - send_notification(&self.view_id, GridNotification::DidUpdateGridViewRows) + send_notification(&self.view_id, DatabaseNotification::DidUpdateDatabaseViewRows) .payload(changeset) .send(); } @@ -374,7 +374,7 @@ impl GridViewRevisionEditor { .await } - pub async fn get_view_setting(&self) -> GridSettingPB { + pub async fn get_view_setting(&self) -> DatabaseViewSettingPB { let field_revs = self.delegate.get_field_revs(None).await; make_grid_setting(&*self.pad.read().await, &field_revs) } @@ -616,7 +616,7 @@ impl GridViewRevisionEditor { debug_assert!(!changeset.is_empty()); if !changeset.is_empty() { - send_notification(&changeset.view_id, GridNotification::DidGroupByNewField) + send_notification(&changeset.view_id, DatabaseNotification::DidGroupByNewField) .payload(changeset) .send(); } @@ -630,33 +630,33 @@ impl GridViewRevisionEditor { async fn notify_did_update_setting(&self) { let setting = self.get_view_setting().await; - send_notification(&self.view_id, GridNotification::DidUpdateGridSetting) + send_notification(&self.view_id, DatabaseNotification::DidUpdateDatabaseSetting) .payload(setting) .send(); } pub async fn notify_did_update_group_rows(&self, payload: GroupRowsNotificationPB) { - send_notification(&payload.group_id, GridNotification::DidUpdateGroup) + send_notification(&payload.group_id, DatabaseNotification::DidUpdateGroup) .payload(payload) .send(); } pub async fn notify_did_update_filter(&self, notification: FilterChangesetNotificationPB) { - send_notification(¬ification.view_id, GridNotification::DidUpdateFilter) + send_notification(¬ification.view_id, DatabaseNotification::DidUpdateFilter) .payload(notification) .send(); } pub async fn notify_did_update_sort(&self, notification: SortChangesetNotificationPB) { if !notification.is_empty() { - send_notification(¬ification.view_id, GridNotification::DidUpdateSort) + send_notification(¬ification.view_id, DatabaseNotification::DidUpdateSort) .payload(notification) .send(); } } async fn notify_did_update_view(&self, changeset: GroupViewChangesetPB) { - send_notification(&self.view_id, GridNotification::DidUpdateGroupView) + send_notification(&self.view_id, DatabaseNotification::DidUpdateGroupView) .payload(changeset) .send(); } @@ -707,7 +707,7 @@ impl GridViewRevisionEditor { } /// Returns the list of cells corresponding to the given field. pub(crate) async fn get_cells_for_field( - delegate: Arc, + delegate: Arc, field_id: &str, ) -> FlowyResult> { let row_revs = delegate.get_row_revs(None).await; @@ -734,7 +734,7 @@ pub(crate) async fn get_cells_for_field( } #[async_trait] -impl RefCountValue for GridViewRevisionEditor { +impl RefCountValue for DatabaseViewRevisionEditor { async fn did_remove(&self) { self.close().await; } @@ -745,7 +745,7 @@ async fn new_group_controller( view_id: String, view_rev_pad: Arc>, rev_manager: Arc>>, - delegate: Arc, + delegate: Arc, ) -> FlowyResult> { let configuration_reader = GroupConfigurationReaderImpl { pad: view_rev_pad.clone(), @@ -799,7 +799,7 @@ async fn new_group_controller_with_field_rev( async fn make_filter_controller( view_id: &str, - delegate: Arc, + delegate: Arc, notifier: GridViewChangedNotifier, cell_data_cache: AtomicCellDataCache, pad: Arc>, @@ -832,7 +832,7 @@ async fn make_filter_controller( async fn make_sort_controller( view_id: &str, - delegate: Arc, + delegate: Arc, notifier: GridViewChangedNotifier, filter_controller: Arc>, pad: Arc>, @@ -870,14 +870,14 @@ fn gen_handler_id() -> String { #[cfg(test)] mod tests { - use flowy_client_sync::client_grid::GridOperations; + use flowy_client_sync::client_database::DatabaseOperations; #[test] fn test() { let s1 = r#"[{"insert":"{\"view_id\":\"fTURELffPr\",\"grid_id\":\"fTURELffPr\",\"layout\":0,\"filters\":[],\"groups\":[]}"}]"#; - let _delta_1 = GridOperations::from_json(s1).unwrap(); + let _delta_1 = DatabaseOperations::from_json(s1).unwrap(); let s2 = r#"[{"retain":195},{"insert":"{\\\"group_id\\\":\\\"wD9i\\\",\\\"visible\\\":true},{\\\"group_id\\\":\\\"xZtv\\\",\\\"visible\\\":true},{\\\"group_id\\\":\\\"tFV2\\\",\\\"visible\\\":true}"},{"retain":10}]"#; - let _delta_2 = GridOperations::from_json(s2).unwrap(); + let _delta_2 = DatabaseOperations::from_json(s2).unwrap(); } } diff --git a/frontend/rust-lib/flowy-grid/src/services/view_editor/editor_manager.rs b/frontend/rust-lib/flowy-database/src/services/view_editor/editor_manager.rs similarity index 84% rename from frontend/rust-lib/flowy-grid/src/services/view_editor/editor_manager.rs rename to frontend/rust-lib/flowy-database/src/services/view_editor/editor_manager.rs index da85f8967e..c3a25fc895 100644 --- a/frontend/rust-lib/flowy-grid/src/services/view_editor/editor_manager.rs +++ b/frontend/rust-lib/flowy-database/src/services/view_editor/editor_manager.rs @@ -1,20 +1,20 @@ use crate::entities::{ - AlterFilterParams, AlterSortParams, CreateRowParams, DeleteFilterParams, DeleteGroupParams, DeleteSortParams, - GridSettingPB, InsertGroupParams, MoveGroupParams, RepeatedGroupPB, RowPB, + AlterFilterParams, AlterSortParams, CreateRowParams, DatabaseViewSettingPB, DeleteFilterParams, DeleteGroupParams, + DeleteSortParams, InsertGroupParams, MoveGroupParams, RepeatedGroupPB, RowPB, }; -use crate::manager::GridUser; -use crate::services::block_manager::GridBlockEvent; +use crate::manager::DatabaseUser; +use crate::services::block_manager::DatabaseBlockEvent; use crate::services::cell::AtomicCellDataCache; use crate::services::filter::FilterType; use crate::services::persistence::rev_sqlite::{ - SQLiteGridRevisionSnapshotPersistence, SQLiteGridViewRevisionPersistence, + SQLiteDatabaseRevisionSnapshotPersistence, SQLiteGridViewRevisionPersistence, }; use crate::services::view_editor::changed_notifier::*; use crate::services::view_editor::trait_impl::GridViewRevisionMergeable; -use crate::services::view_editor::{GridViewEditorDelegate, GridViewRevisionEditor}; -use flowy_database::ConnectionPool; +use crate::services::view_editor::{DatabaseViewEditorDelegate, DatabaseViewRevisionEditor}; use flowy_error::FlowyResult; use flowy_revision::{RevisionManager, RevisionPersistence, RevisionPersistenceConfiguration}; +use flowy_sqlite::ConnectionPool; use grid_model::{FieldRevision, FilterRevision, RowChangeset, RowRevision, SortRevision}; use lib_infra::future::Fut; use lib_infra::ref_map::RefCountHashMap; @@ -22,26 +22,26 @@ use std::borrow::Cow; use std::sync::Arc; use tokio::sync::{broadcast, RwLock}; -pub struct GridViewManager { - grid_id: String, - user: Arc, - delegate: Arc, - view_editors: Arc>>>, +pub struct DatabaseViewManager { + view_id: String, + user: Arc, + delegate: Arc, + view_editors: Arc>>>, cell_data_cache: AtomicCellDataCache, } -impl GridViewManager { +impl DatabaseViewManager { pub async fn new( - grid_id: String, - user: Arc, - delegate: Arc, + view_id: String, + user: Arc, + delegate: Arc, cell_data_cache: AtomicCellDataCache, - block_event_rx: broadcast::Receiver, + block_event_rx: broadcast::Receiver, ) -> FlowyResult { let view_editors = Arc::new(RwLock::new(RefCountHashMap::default())); - listen_on_grid_block_event(block_event_rx, view_editors.clone()); + listen_on_database_block_event(block_event_rx, view_editors.clone()); Ok(Self { - grid_id, + view_id, user, delegate, cell_data_cache, @@ -67,7 +67,7 @@ impl GridViewManager { Ok(row_revs) } - pub async fn duplicate_grid_view(&self) -> FlowyResult { + pub async fn duplicate_database_view(&self) -> FlowyResult { let editor = self.get_default_view_editor().await?; let view_data = editor.duplicate_view_data().await?; Ok(view_data) @@ -113,7 +113,7 @@ impl GridViewManager { } } - pub async fn get_setting(&self) -> FlowyResult { + pub async fn get_setting(&self) -> FlowyResult { let view_editor = self.get_default_view_editor().await?; Ok(view_editor.get_view_setting().await) } @@ -231,7 +231,7 @@ impl GridViewManager { Ok(()) } - pub async fn get_view_editor(&self, view_id: &str) -> FlowyResult> { + pub async fn get_view_editor(&self, view_id: &str) -> FlowyResult> { debug_assert!(!view_id.is_empty()); if let Some(editor) = self.view_editors.read().await.get(view_id) { return Ok(editor); @@ -243,17 +243,17 @@ impl GridViewManager { Ok(editor) } - async fn get_default_view_editor(&self) -> FlowyResult> { - self.get_view_editor(&self.grid_id).await + async fn get_default_view_editor(&self) -> FlowyResult> { + self.get_view_editor(&self.view_id).await } - async fn make_view_editor(&self, view_id: &str) -> FlowyResult { - let rev_manager = make_grid_view_rev_manager(&self.user, view_id).await?; + async fn make_view_editor(&self, view_id: &str) -> FlowyResult { + let rev_manager = make_database_view_rev_manager(&self.user, view_id).await?; let user_id = self.user.user_id()?; let token = self.user.token()?; let view_id = view_id.to_owned(); - GridViewRevisionEditor::new( + DatabaseViewRevisionEditor::new( &user_id, &token, view_id, @@ -265,9 +265,9 @@ impl GridViewManager { } } -fn listen_on_grid_block_event( - mut block_event_rx: broadcast::Receiver, - view_editors: Arc>>>, +fn listen_on_database_block_event( + mut block_event_rx: broadcast::Receiver, + view_editors: Arc>>>, ) { tokio::spawn(async move { loop { @@ -286,8 +286,8 @@ fn listen_on_grid_block_event( } }); } -pub async fn make_grid_view_rev_manager( - user: &Arc, +pub async fn make_database_view_rev_manager( + user: &Arc, view_id: &str, ) -> FlowyResult>> { let user_id = user.user_id()?; @@ -300,7 +300,7 @@ pub async fn make_grid_view_rev_manager( // Create snapshot persistence let snapshot_object_id = format!("grid_view:{}", view_id); - let snapshot_persistence = SQLiteGridRevisionSnapshotPersistence::new(&snapshot_object_id, pool); + let snapshot_persistence = SQLiteDatabaseRevisionSnapshotPersistence::new(&snapshot_object_id, pool); let rev_compress = GridViewRevisionMergeable(); Ok(RevisionManager::new( diff --git a/frontend/rust-lib/flowy-grid/src/services/view_editor/mod.rs b/frontend/rust-lib/flowy-database/src/services/view_editor/mod.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/src/services/view_editor/mod.rs rename to frontend/rust-lib/flowy-database/src/services/view_editor/mod.rs diff --git a/frontend/rust-lib/flowy-grid/src/services/view_editor/trait_impl.rs b/frontend/rust-lib/flowy-database/src/services/view_editor/trait_impl.rs similarity index 90% rename from frontend/rust-lib/flowy-grid/src/services/view_editor/trait_impl.rs rename to frontend/rust-lib/flowy-database/src/services/view_editor/trait_impl.rs index 1076322d1b..e3ba647e52 100644 --- a/frontend/rust-lib/flowy-grid/src/services/view_editor/trait_impl.rs +++ b/frontend/rust-lib/flowy-database/src/services/view_editor/trait_impl.rs @@ -1,18 +1,18 @@ -use crate::entities::{GridLayout, GridLayoutPB, GridSettingPB}; +use crate::entities::{DatabaseViewLayout, DatabaseViewSettingPB, ViewLayoutConfigPB}; use crate::services::field::RowSingleCellData; use crate::services::filter::{FilterController, FilterDelegate, FilterType}; use crate::services::group::{GroupConfigurationReader, GroupConfigurationWriter}; -use crate::services::row::GridBlockRowRevision; +use crate::services::row::DatabaseBlockRowRevision; use crate::services::sort::{SortDelegate, SortType}; -use crate::services::view_editor::{get_cells_for_field, GridViewEditorDelegate}; +use crate::services::view_editor::{get_cells_for_field, DatabaseViewEditorDelegate}; use bytes::Bytes; -use flowy_client_sync::client_grid::{GridViewRevisionChangeset, GridViewRevisionPad}; +use flowy_client_sync::client_database::{GridViewRevisionChangeset, GridViewRevisionPad}; use flowy_client_sync::make_operations_from_revisions; -use flowy_database::ConnectionPool; use flowy_error::{FlowyError, FlowyResult}; use flowy_revision::{ RevisionCloudService, RevisionManager, RevisionMergeable, RevisionObjectDeserializer, RevisionObjectSerializer, }; +use flowy_sqlite::ConnectionPool; use grid_model::{ FieldRevision, FieldTypeRevision, FilterRevision, GroupConfigurationRevision, RowRevision, SortRevision, }; @@ -63,7 +63,7 @@ impl RevisionMergeable for GridViewRevisionMergeable { pub(crate) struct GroupConfigurationReaderImpl { pub(crate) pad: Arc>, - pub(crate) view_editor_delegate: Arc, + pub(crate) view_editor_delegate: Arc, } impl GroupConfigurationReader for GroupConfigurationReaderImpl { @@ -131,13 +131,13 @@ pub(crate) async fn apply_change( Ok(()) } -pub fn make_grid_setting(view_pad: &GridViewRevisionPad, field_revs: &[Arc]) -> GridSettingPB { - let layout_type: GridLayout = view_pad.layout.clone().into(); +pub fn make_grid_setting(view_pad: &GridViewRevisionPad, field_revs: &[Arc]) -> DatabaseViewSettingPB { + let layout_type: DatabaseViewLayout = view_pad.layout.clone().into(); let filters = view_pad.get_all_filters(field_revs); let group_configurations = view_pad.get_groups_by_field_revs(field_revs); let sorts = view_pad.get_all_sorts(field_revs); - GridSettingPB { - layouts: GridLayoutPB::all(), + DatabaseViewSettingPB { + layouts: ViewLayoutConfigPB::all(), layout_type, filters: filters.into(), sorts: sorts.into(), @@ -146,7 +146,7 @@ pub fn make_grid_setting(view_pad: &GridViewRevisionPad, field_revs: &[Arc, + pub(crate) editor_delegate: Arc, pub(crate) view_revision_pad: Arc>, } @@ -173,7 +173,7 @@ impl FilterDelegate for GridViewFilterDelegateImpl { self.editor_delegate.get_field_revs(field_ids) } - fn get_blocks(&self) -> Fut> { + fn get_blocks(&self) -> Fut> { self.editor_delegate.get_blocks() } @@ -183,7 +183,7 @@ impl FilterDelegate for GridViewFilterDelegateImpl { } pub(crate) struct GridViewSortDelegateImpl { - pub(crate) editor_delegate: Arc, + pub(crate) editor_delegate: Arc, pub(crate) view_revision_pad: Arc>, pub(crate) filter_controller: Arc>, } diff --git a/frontend/rust-lib/flowy-grid/src/util.rs b/frontend/rust-lib/flowy-database/src/util.rs similarity index 79% rename from frontend/rust-lib/flowy-grid/src/util.rs rename to frontend/rust-lib/flowy-database/src/util.rs index 84f321916d..5243432204 100644 --- a/frontend/rust-lib/flowy-grid/src/util.rs +++ b/frontend/rust-lib/flowy-database/src/util.rs @@ -1,39 +1,39 @@ use crate::entities::FieldType; use crate::services::field::*; use crate::services::row::RowRevisionBuilder; -use flowy_client_sync::client_grid::GridBuilder; -use grid_model::BuildGridContext; +use flowy_client_sync::client_database::DatabaseBuilder; +use grid_model::BuildDatabaseContext; -pub fn make_default_grid() -> BuildGridContext { - let mut grid_builder = GridBuilder::new(); +pub fn make_default_grid() -> BuildDatabaseContext { + let mut database_builder = DatabaseBuilder::new(); // text let text_field = FieldBuilder::new(RichTextTypeOptionBuilder::default()) .name("Name") .visibility(true) .primary(true) .build(); - grid_builder.add_field(text_field); + database_builder.add_field(text_field); // single select let single_select = SingleSelectTypeOptionBuilder::default(); let single_select_field = FieldBuilder::new(single_select).name("Type").visibility(true).build(); - grid_builder.add_field(single_select_field); + database_builder.add_field(single_select_field); // checkbox let checkbox_field = FieldBuilder::from_field_type(&FieldType::Checkbox) .name("Done") .visibility(true) .build(); - grid_builder.add_field(checkbox_field); + database_builder.add_field(checkbox_field); - grid_builder.add_empty_row(); - grid_builder.add_empty_row(); - grid_builder.add_empty_row(); - grid_builder.build() + database_builder.add_empty_row(); + database_builder.add_empty_row(); + database_builder.add_empty_row(); + database_builder.build() } -pub fn make_default_board() -> BuildGridContext { - let mut grid_builder = GridBuilder::new(); +pub fn make_default_board() -> BuildDatabaseContext { + let mut database_builder = DatabaseBuilder::new(); // text let text_field = FieldBuilder::new(RichTextTypeOptionBuilder::default()) .name("Description") @@ -41,7 +41,7 @@ pub fn make_default_board() -> BuildGridContext { .primary(true) .build(); let text_field_id = text_field.id.clone(); - grid_builder.add_field(text_field); + database_builder.add_field(text_field); // single select let to_do_option = SelectOptionPB::with_color("To Do", SelectOptionColorPB::Purple); @@ -56,29 +56,29 @@ pub fn make_default_board() -> BuildGridContext { .visibility(true) .build(); let single_select_field_id = single_select_field.id.clone(); - grid_builder.add_field(single_select_field); + database_builder.add_field(single_select_field); for i in 0..3 { - let mut row_builder = RowRevisionBuilder::new(grid_builder.block_id(), grid_builder.field_revs()); + let mut row_builder = RowRevisionBuilder::new(database_builder.block_id(), database_builder.field_revs()); row_builder.insert_select_option_cell(&single_select_field_id, vec![to_do_option.id.clone()]); let data = format!("Card {}", i + 1); row_builder.insert_text_cell(&text_field_id, data); let row = row_builder.build(); - grid_builder.add_row(row); + database_builder.add_row(row); } - grid_builder.build() + database_builder.build() } -pub fn make_default_calendar() -> BuildGridContext { - let mut grid_builder = GridBuilder::new(); +pub fn make_default_calendar() -> BuildDatabaseContext { + let mut database_builder = DatabaseBuilder::new(); // text let text_field = FieldBuilder::new(RichTextTypeOptionBuilder::default()) .name("Description") .visibility(true) .primary(true) .build(); - grid_builder.add_field(text_field); + database_builder.add_field(text_field); // date let date_type_option = DateTypeOptionBuilder::default(); @@ -86,7 +86,7 @@ pub fn make_default_calendar() -> BuildGridContext { .name("Date") .visibility(true) .build(); - grid_builder.add_field(date_field); + database_builder.add_field(date_field); // single select let multi_select_type_option = MultiSelectTypeOptionBuilder::default(); @@ -94,13 +94,13 @@ pub fn make_default_calendar() -> BuildGridContext { .name("Tags") .visibility(true) .build(); - grid_builder.add_field(multi_select_field); - grid_builder.build() + database_builder.add_field(multi_select_field); + database_builder.build() } #[allow(dead_code)] -pub fn make_default_board_2() -> BuildGridContext { - let mut grid_builder = GridBuilder::new(); +pub fn make_default_board_2() -> BuildDatabaseContext { + let mut database_builder = DatabaseBuilder::new(); // text let text_field = FieldBuilder::new(RichTextTypeOptionBuilder::default()) .name("Description") @@ -108,7 +108,7 @@ pub fn make_default_board_2() -> BuildGridContext { .primary(true) .build(); let text_field_id = text_field.id.clone(); - grid_builder.add_field(text_field); + database_builder.add_field(text_field); // single select let to_do_option = SelectOptionPB::with_color("To Do", SelectOptionColorPB::Purple); @@ -123,7 +123,7 @@ pub fn make_default_board_2() -> BuildGridContext { .visibility(true) .build(); let single_select_field_id = single_select_field.id.clone(); - grid_builder.add_field(single_select_field); + database_builder.add_field(single_select_field); // MultiSelect let work_option = SelectOptionPB::with_color("Work", SelectOptionColorPB::Aqua); @@ -140,10 +140,10 @@ pub fn make_default_board_2() -> BuildGridContext { .visibility(true) .build(); let multi_select_field_id = multi_select_field.id.clone(); - grid_builder.add_field(multi_select_field); + database_builder.add_field(multi_select_field); for i in 0..3 { - let mut row_builder = RowRevisionBuilder::new(grid_builder.block_id(), grid_builder.field_revs()); + let mut row_builder = RowRevisionBuilder::new(database_builder.block_id(), database_builder.field_revs()); row_builder.insert_select_option_cell(&single_select_field_id, vec![to_do_option.id.clone()]); match i { 0 => { @@ -165,11 +165,11 @@ pub fn make_default_board_2() -> BuildGridContext { _ => {} } let row = row_builder.build(); - grid_builder.add_row(row); + database_builder.add_row(row); } for i in 0..3 { - let mut row_builder = RowRevisionBuilder::new(grid_builder.block_id(), grid_builder.field_revs()); + let mut row_builder = RowRevisionBuilder::new(database_builder.block_id(), database_builder.field_revs()); row_builder.insert_select_option_cell(&single_select_field_id, vec![doing_option.id.clone()]); match i { 0 => { @@ -191,11 +191,11 @@ pub fn make_default_board_2() -> BuildGridContext { _ => {} } let row = row_builder.build(); - grid_builder.add_row(row); + database_builder.add_row(row); } for i in 0..2 { - let mut row_builder = RowRevisionBuilder::new(grid_builder.block_id(), grid_builder.field_revs()); + let mut row_builder = RowRevisionBuilder::new(database_builder.block_id(), database_builder.field_revs()); row_builder.insert_select_option_cell(&single_select_field_id, vec![done_option.id.clone()]); match i { 0 => { @@ -213,8 +213,8 @@ pub fn make_default_board_2() -> BuildGridContext { _ => {} } let row = row_builder.build(); - grid_builder.add_row(row); + database_builder.add_row(row); } - grid_builder.build() + database_builder.build() } diff --git a/frontend/rust-lib/flowy-grid/tests/grid/block_test/block_test.rs b/frontend/rust-lib/flowy-database/tests/grid/block_test/block_test.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/tests/grid/block_test/block_test.rs rename to frontend/rust-lib/flowy-database/tests/grid/block_test/block_test.rs diff --git a/frontend/rust-lib/flowy-grid/tests/grid/block_test/mod.rs b/frontend/rust-lib/flowy-database/tests/grid/block_test/mod.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/tests/grid/block_test/mod.rs rename to frontend/rust-lib/flowy-database/tests/grid/block_test/mod.rs diff --git a/frontend/rust-lib/flowy-grid/tests/grid/block_test/row_test.rs b/frontend/rust-lib/flowy-database/tests/grid/block_test/row_test.rs similarity index 97% rename from frontend/rust-lib/flowy-grid/tests/grid/block_test/row_test.rs rename to frontend/rust-lib/flowy-database/tests/grid/block_test/row_test.rs index e26085f94a..e1d32b9f5e 100644 --- a/frontend/rust-lib/flowy-grid/tests/grid/block_test/row_test.rs +++ b/frontend/rust-lib/flowy-database/tests/grid/block_test/row_test.rs @@ -1,8 +1,8 @@ use crate::grid::block_test::script::RowScript::*; use crate::grid::block_test::script::{CreateRowScriptBuilder, GridRowTest}; use crate::grid::grid_editor::{COMPLETED, FACEBOOK, GOOGLE, PAUSED, TWITTER}; -use flowy_grid::entities::FieldType; -use flowy_grid::services::field::{SELECTION_IDS_SEPARATOR, UNCHECK}; +use flowy_database::entities::FieldType; +use flowy_database::services::field::{SELECTION_IDS_SEPARATOR, UNCHECK}; use grid_model::RowChangeset; #[tokio::test] diff --git a/frontend/rust-lib/flowy-grid/tests/grid/block_test/script.rs b/frontend/rust-lib/flowy-database/tests/grid/block_test/script.rs similarity index 95% rename from frontend/rust-lib/flowy-grid/tests/grid/block_test/script.rs rename to frontend/rust-lib/flowy-database/tests/grid/block_test/script.rs index b01e96c707..a76309574e 100644 --- a/frontend/rust-lib/flowy-grid/tests/grid/block_test/script.rs +++ b/frontend/rust-lib/flowy-database/tests/grid/block_test/script.rs @@ -1,9 +1,9 @@ use crate::grid::block_test::script::RowScript::{AssertCell, CreateRow}; use crate::grid::block_test::util::GridRowTestBuilder; use crate::grid::grid_editor::GridEditorTest; -use flowy_grid::entities::{CellPathParams, CreateRowParams, FieldType, GridLayout, RowPB}; -use flowy_grid::services::field::*; -use flowy_grid::services::row::GridBlockRow; +use flowy_database::entities::{CellPathParams, CreateRowParams, DatabaseViewLayout, FieldType, RowPB}; +use flowy_database::services::field::*; +use flowy_database::services::row::DatabaseBlockRow; use grid_model::{GridBlockMetaRevision, GridBlockMetaRevisionChangeset, RowChangeset, RowRevision}; use std::collections::HashMap; use std::sync::Arc; @@ -76,10 +76,10 @@ impl GridRowTest { match script { RowScript::CreateEmptyRow => { let params = CreateRowParams { - grid_id: self.editor.grid_id.clone(), + database_id: self.editor.database_id.clone(), start_row_id: None, group_id: None, - layout: GridLayout::Table, + layout: DatabaseViewLayout::Grid, }; let row_order = self.editor.create_row(params).await.unwrap(); self.row_by_row_id.insert(row_order.row_id().to_owned(), row_order); @@ -113,7 +113,7 @@ impl GridRowTest { expected, } => { let id = CellPathParams { - view_id: self.view_id.clone(), + database_id: self.view_id.clone(), field_id, row_id, }; @@ -269,13 +269,13 @@ impl GridRowTest { } } -fn block_from_row_pbs(row_orders: Vec) -> Vec { - let mut map: HashMap = HashMap::new(); +fn block_from_row_pbs(row_orders: Vec) -> Vec { + let mut map: HashMap = HashMap::new(); row_orders.into_iter().for_each(|row_pb| { let block_id = row_pb.block_id().to_owned(); let cloned_block_id = block_id.clone(); map.entry(block_id) - .or_insert_with(|| GridBlockRow::new(cloned_block_id, vec![])) + .or_insert_with(|| DatabaseBlockRow::new(cloned_block_id, vec![])) .row_ids .push(row_pb.id); }); diff --git a/frontend/rust-lib/flowy-grid/tests/grid/block_test/util.rs b/frontend/rust-lib/flowy-database/tests/grid/block_test/util.rs similarity index 97% rename from frontend/rust-lib/flowy-grid/tests/grid/block_test/util.rs rename to frontend/rust-lib/flowy-database/tests/grid/block_test/util.rs index faa5229194..becb775a81 100644 --- a/frontend/rust-lib/flowy-grid/tests/grid/block_test/util.rs +++ b/frontend/rust-lib/flowy-database/tests/grid/block_test/util.rs @@ -1,8 +1,8 @@ -use flowy_grid::entities::FieldType; -use flowy_grid::services::field::{ +use flowy_database::entities::FieldType; +use flowy_database::services::field::{ ChecklistTypeOptionPB, DateCellChangeset, MultiSelectTypeOptionPB, SelectOptionPB, SingleSelectTypeOptionPB, }; -use flowy_grid::services::row::RowRevisionBuilder; +use flowy_database::services::row::RowRevisionBuilder; use grid_model::{FieldRevision, RowRevision}; use std::sync::Arc; diff --git a/frontend/rust-lib/flowy-grid/tests/grid/cell_test/mod.rs b/frontend/rust-lib/flowy-database/tests/grid/cell_test/mod.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/tests/grid/cell_test/mod.rs rename to frontend/rust-lib/flowy-database/tests/grid/cell_test/mod.rs diff --git a/frontend/rust-lib/flowy-grid/tests/grid/cell_test/script.rs b/frontend/rust-lib/flowy-database/tests/grid/cell_test/script.rs similarity index 97% rename from frontend/rust-lib/flowy-grid/tests/grid/cell_test/script.rs rename to frontend/rust-lib/flowy-database/tests/grid/cell_test/script.rs index b18b75b467..5fbee68c85 100644 --- a/frontend/rust-lib/flowy-grid/tests/grid/cell_test/script.rs +++ b/frontend/rust-lib/flowy-database/tests/grid/cell_test/script.rs @@ -1,5 +1,5 @@ use crate::grid::grid_editor::GridEditorTest; -use flowy_grid::entities::CellChangesetPB; +use flowy_database::entities::CellChangesetPB; pub enum CellScript { UpdateCell { changeset: CellChangesetPB, is_err: bool }, diff --git a/frontend/rust-lib/flowy-grid/tests/grid/cell_test/test.rs b/frontend/rust-lib/flowy-database/tests/grid/cell_test/test.rs similarity index 90% rename from frontend/rust-lib/flowy-grid/tests/grid/cell_test/test.rs rename to frontend/rust-lib/flowy-database/tests/grid/cell_test/test.rs index 490d721903..bbca00f0f7 100644 --- a/frontend/rust-lib/flowy-grid/tests/grid/cell_test/test.rs +++ b/frontend/rust-lib/flowy-database/tests/grid/cell_test/test.rs @@ -1,10 +1,10 @@ use crate::grid::cell_test::script::CellScript::*; use crate::grid::cell_test::script::GridCellTest; use crate::grid::field_test::util::make_date_cell_string; -use flowy_grid::entities::{CellChangesetPB, FieldType}; -use flowy_grid::services::cell::ToCellChangesetString; -use flowy_grid::services::field::selection_type_option::SelectOptionCellChangeset; -use flowy_grid::services::field::{ChecklistTypeOptionPB, MultiSelectTypeOptionPB, SingleSelectTypeOptionPB}; +use flowy_database::entities::{CellChangesetPB, FieldType}; +use flowy_database::services::cell::ToCellChangesetString; +use flowy_database::services::field::selection_type_option::SelectOptionCellChangeset; +use flowy_database::services::field::{ChecklistTypeOptionPB, MultiSelectTypeOptionPB, SingleSelectTypeOptionPB}; #[tokio::test] async fn grid_cell_update() { @@ -45,7 +45,7 @@ async fn grid_cell_update() { scripts.push(UpdateCell { changeset: CellChangesetPB { - grid_id: block_id.to_string(), + database_id: block_id.to_string(), row_id: row_rev.id.clone(), field_id: field_rev.id.clone(), type_cell_data: data, diff --git a/frontend/rust-lib/flowy-grid/tests/grid/field_test/mod.rs b/frontend/rust-lib/flowy-database/tests/grid/field_test/mod.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/tests/grid/field_test/mod.rs rename to frontend/rust-lib/flowy-database/tests/grid/field_test/mod.rs diff --git a/frontend/rust-lib/flowy-grid/tests/grid/field_test/script.rs b/frontend/rust-lib/flowy-database/tests/grid/field_test/script.rs similarity index 95% rename from frontend/rust-lib/flowy-grid/tests/grid/field_test/script.rs rename to frontend/rust-lib/flowy-database/tests/grid/field_test/script.rs index 6b194d67bc..690d6895de 100644 --- a/frontend/rust-lib/flowy-grid/tests/grid/field_test/script.rs +++ b/frontend/rust-lib/flowy-database/tests/grid/field_test/script.rs @@ -1,6 +1,6 @@ use crate::grid::grid_editor::GridEditorTest; -use flowy_grid::entities::{CreateFieldParams, FieldChangesetParams, FieldType}; -use flowy_grid::services::cell::{stringify_cell_data, TypeCellData}; +use flowy_database::entities::{CreateFieldParams, FieldChangesetParams, FieldType}; +use flowy_database::services::cell::{stringify_cell_data, TypeCellData}; use grid_model::FieldRevision; pub enum FieldScript { @@ -131,7 +131,7 @@ impl GridFieldTest { let field_rev = self.editor.get_field_rev(&field_id).await.unwrap(); let field_type: FieldType = field_rev.ty.into(); - let rows = self.editor.get_grid(&self.view_id()).await.unwrap().rows; + let rows = self.editor.get_database(&self.view_id()).await.unwrap().rows; let row = rows.get(row_index).unwrap(); let row_rev = self.editor.get_row_rev(&row.id).await.unwrap().unwrap(); diff --git a/frontend/rust-lib/flowy-grid/tests/grid/field_test/test.rs b/frontend/rust-lib/flowy-database/tests/grid/field_test/test.rs similarity index 97% rename from frontend/rust-lib/flowy-grid/tests/grid/field_test/test.rs rename to frontend/rust-lib/flowy-database/tests/grid/field_test/test.rs index b199bc46eb..825c9f92ed 100644 --- a/frontend/rust-lib/flowy-grid/tests/grid/field_test/test.rs +++ b/frontend/rust-lib/flowy-database/tests/grid/field_test/test.rs @@ -2,9 +2,9 @@ use crate::grid::field_test::script::FieldScript::*; use crate::grid::field_test::script::GridFieldTest; use crate::grid::field_test::util::*; use bytes::Bytes; -use flowy_grid::entities::{FieldChangesetParams, FieldType}; -use flowy_grid::services::field::selection_type_option::SelectOptionPB; -use flowy_grid::services::field::{gen_option_id, SingleSelectTypeOptionPB, CHECK, UNCHECK}; +use flowy_database::entities::{FieldChangesetParams, FieldType}; +use flowy_database::services::field::selection_type_option::SelectOptionPB; +use flowy_database::services::field::{gen_option_id, SingleSelectTypeOptionPB, CHECK, UNCHECK}; #[tokio::test] async fn grid_create_field() { @@ -55,7 +55,7 @@ async fn grid_update_field_with_empty_change() { let field_rev = (*test.field_revs.clone().pop().unwrap()).clone(); let changeset = FieldChangesetParams { field_id: field_rev.id.clone(), - grid_id: test.view_id(), + database_id: test.view_id(), ..Default::default() }; @@ -83,7 +83,7 @@ async fn grid_update_field() { let changeset = FieldChangesetParams { field_id: single_select_field.id.clone(), - grid_id: test.view_id(), + database_id: test.view_id(), frozen: Some(true), width: Some(1000), ..Default::default() @@ -198,7 +198,7 @@ async fn grid_switch_from_checkbox_to_select_option_test() { } // Test when switching the current field from Multi-select to Text test -// The build-in test data is located in `make_test_grid` method(flowy-grid/tests/grid_editor.rs). +// The build-in test data is located in `make_test_grid` method(flowy-database/tests/grid_editor.rs). // input: // option1, option2 -> "option1.name, option2.name" #[tokio::test] diff --git a/frontend/rust-lib/flowy-grid/tests/grid/field_test/util.rs b/frontend/rust-lib/flowy-database/tests/grid/field_test/util.rs similarity index 89% rename from frontend/rust-lib/flowy-grid/tests/grid/field_test/util.rs rename to frontend/rust-lib/flowy-database/tests/grid/field_test/util.rs index 07e244a345..7723c4ad03 100644 --- a/frontend/rust-lib/flowy-grid/tests/grid/field_test/util.rs +++ b/frontend/rust-lib/flowy-database/tests/grid/field_test/util.rs @@ -1,6 +1,6 @@ -use flowy_grid::entities::*; -use flowy_grid::services::field::selection_type_option::SelectOptionPB; -use flowy_grid::services::field::*; +use flowy_database::entities::*; +use flowy_database::services::field::selection_type_option::SelectOptionPB; +use flowy_database::services::field::*; use grid_model::*; pub fn create_text_field(grid_id: &str) -> (CreateFieldParams, FieldRevision) { @@ -21,7 +21,7 @@ pub fn create_text_field(grid_id: &str) -> (CreateFieldParams, FieldRevision) { field_rev.insert_type_option(type_option_builder.serializer()); let params = CreateFieldParams { - grid_id: grid_id.to_owned(), + database_id: grid_id.to_owned(), field_type: field_rev.ty.into(), type_option_data: Some(type_option_data), }; @@ -45,7 +45,7 @@ pub fn create_single_select_field(grid_id: &str) -> (CreateFieldParams, FieldRev field_rev.insert_type_option(type_option_builder.serializer()); let params = CreateFieldParams { - grid_id: grid_id.to_owned(), + database_id: grid_id.to_owned(), field_type: field_rev.ty.into(), type_option_data: Some(type_option_data), }; diff --git a/frontend/rust-lib/flowy-grid/tests/grid/filter_test/checkbox_filter_test.rs b/frontend/rust-lib/flowy-database/tests/grid/filter_test/checkbox_filter_test.rs similarity index 95% rename from frontend/rust-lib/flowy-grid/tests/grid/filter_test/checkbox_filter_test.rs rename to frontend/rust-lib/flowy-database/tests/grid/filter_test/checkbox_filter_test.rs index 3789877a08..7a13af169c 100644 --- a/frontend/rust-lib/flowy-grid/tests/grid/filter_test/checkbox_filter_test.rs +++ b/frontend/rust-lib/flowy-database/tests/grid/filter_test/checkbox_filter_test.rs @@ -1,6 +1,6 @@ use crate::grid::filter_test::script::FilterScript::*; use crate::grid::filter_test::script::{FilterRowChanged, GridFilterTest}; -use flowy_grid::entities::CheckboxFilterConditionPB; +use flowy_database::entities::CheckboxFilterConditionPB; #[tokio::test] async fn grid_filter_checkbox_is_check_test() { diff --git a/frontend/rust-lib/flowy-grid/tests/grid/filter_test/checklist_filter_test.rs b/frontend/rust-lib/flowy-database/tests/grid/filter_test/checklist_filter_test.rs similarity index 95% rename from frontend/rust-lib/flowy-grid/tests/grid/filter_test/checklist_filter_test.rs rename to frontend/rust-lib/flowy-database/tests/grid/filter_test/checklist_filter_test.rs index cab9ded005..a94adcf804 100644 --- a/frontend/rust-lib/flowy-grid/tests/grid/filter_test/checklist_filter_test.rs +++ b/frontend/rust-lib/flowy-database/tests/grid/filter_test/checklist_filter_test.rs @@ -1,6 +1,6 @@ use crate::grid::filter_test::script::FilterScript::*; use crate::grid::filter_test::script::{FilterRowChanged, GridFilterTest}; -use flowy_grid::entities::ChecklistFilterConditionPB; +use flowy_database::entities::ChecklistFilterConditionPB; #[tokio::test] async fn grid_filter_checklist_is_incomplete_test() { diff --git a/frontend/rust-lib/flowy-grid/tests/grid/filter_test/date_filter_test.rs b/frontend/rust-lib/flowy-database/tests/grid/filter_test/date_filter_test.rs similarity index 98% rename from frontend/rust-lib/flowy-grid/tests/grid/filter_test/date_filter_test.rs rename to frontend/rust-lib/flowy-database/tests/grid/filter_test/date_filter_test.rs index 1c79ac1ef3..abe2a8c5ec 100644 --- a/frontend/rust-lib/flowy-grid/tests/grid/filter_test/date_filter_test.rs +++ b/frontend/rust-lib/flowy-database/tests/grid/filter_test/date_filter_test.rs @@ -1,6 +1,6 @@ use crate::grid::filter_test::script::FilterScript::*; use crate::grid::filter_test::script::{FilterRowChanged, GridFilterTest}; -use flowy_grid::entities::DateFilterConditionPB; +use flowy_database::entities::DateFilterConditionPB; #[tokio::test] async fn grid_filter_date_is_test() { diff --git a/frontend/rust-lib/flowy-grid/tests/grid/filter_test/mod.rs b/frontend/rust-lib/flowy-database/tests/grid/filter_test/mod.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/tests/grid/filter_test/mod.rs rename to frontend/rust-lib/flowy-database/tests/grid/filter_test/mod.rs diff --git a/frontend/rust-lib/flowy-grid/tests/grid/filter_test/number_filter_test.rs b/frontend/rust-lib/flowy-database/tests/grid/filter_test/number_filter_test.rs similarity index 98% rename from frontend/rust-lib/flowy-grid/tests/grid/filter_test/number_filter_test.rs rename to frontend/rust-lib/flowy-database/tests/grid/filter_test/number_filter_test.rs index 146f6a864a..577630566e 100644 --- a/frontend/rust-lib/flowy-grid/tests/grid/filter_test/number_filter_test.rs +++ b/frontend/rust-lib/flowy-database/tests/grid/filter_test/number_filter_test.rs @@ -1,6 +1,6 @@ use crate::grid::filter_test::script::FilterScript::*; use crate::grid::filter_test::script::{FilterRowChanged, GridFilterTest}; -use flowy_grid::entities::NumberFilterConditionPB; +use flowy_database::entities::NumberFilterConditionPB; #[tokio::test] async fn grid_filter_number_is_equal_test() { diff --git a/frontend/rust-lib/flowy-grid/tests/grid/filter_test/script.rs b/frontend/rust-lib/flowy-database/tests/grid/filter_test/script.rs similarity index 92% rename from frontend/rust-lib/flowy-grid/tests/grid/filter_test/script.rs rename to frontend/rust-lib/flowy-database/tests/grid/filter_test/script.rs index 940b3d4c26..a27f389e8b 100644 --- a/frontend/rust-lib/flowy-grid/tests/grid/filter_test/script.rs +++ b/frontend/rust-lib/flowy-database/tests/grid/filter_test/script.rs @@ -7,14 +7,14 @@ use std::time::Duration; use bytes::Bytes; use futures::TryFutureExt; use tokio::sync::broadcast::Receiver; -use flowy_grid::entities::{AlterFilterParams, AlterFilterPayloadPB, DeleteFilterParams, GridLayout, GridSettingChangesetParams, GridSettingPB, RowPB, TextFilterConditionPB, FieldType, NumberFilterConditionPB, CheckboxFilterConditionPB, DateFilterConditionPB, DateFilterContentPB, SelectOptionConditionPB, TextFilterPB, NumberFilterPB, CheckboxFilterPB, DateFilterPB, SelectOptionFilterPB, CellChangesetPB, FilterPB, ChecklistFilterConditionPB, ChecklistFilterPB}; -use flowy_grid::services::field::{SelectOptionCellChangeset, SelectOptionIds}; -use flowy_grid::services::setting::GridSettingChangesetBuilder; +use flowy_database::entities::{AlterFilterParams, AlterFilterPayloadPB, DeleteFilterParams, DatabaseViewLayout, DatabaseSettingChangesetParams, DatabaseViewSettingPB, RowPB, TextFilterConditionPB, FieldType, NumberFilterConditionPB, CheckboxFilterConditionPB, DateFilterConditionPB, DateFilterContentPB, SelectOptionConditionPB, TextFilterPB, NumberFilterPB, CheckboxFilterPB, DateFilterPB, SelectOptionFilterPB, CellChangesetPB, FilterPB, ChecklistFilterConditionPB, ChecklistFilterPB}; +use flowy_database::services::field::{SelectOptionCellChangeset, SelectOptionIds}; +use flowy_database::services::setting::GridSettingChangesetBuilder; use grid_model::{FieldRevision, FieldTypeRevision}; -use flowy_database::schema::view_table::dsl::view_table; -use flowy_grid::services::cell::insert_select_option_cell; -use flowy_grid::services::filter::FilterType; -use flowy_grid::services::view_editor::GridViewChanged; +use flowy_sqlite::schema::view_table::dsl::view_table; +use flowy_database::services::cell::insert_select_option_cell; +use flowy_database::services::filter::FilterType; +use flowy_database::services::view_editor::GridViewChanged; use crate::grid::grid_editor::GridEditorTest; pub struct FilterRowChanged { @@ -94,7 +94,7 @@ pub enum FilterScript { }, #[allow(dead_code)] AssertGridSetting { - expected_setting: GridSettingPB, + expected_setting: DatabaseViewSettingPB, }, Wait { millisecond: u64 } } @@ -258,7 +258,7 @@ impl GridFilterTest { assert_eq!(expected_setting, setting); } FilterScript::AssertNumberOfVisibleRows { expected } => { - let grid = self.editor.get_grid(&self.view_id()).await.unwrap(); + let grid = self.editor.get_database(&self.view_id()).await.unwrap(); assert_eq!(grid.rows.len(), expected); } FilterScript::Wait { millisecond } => { diff --git a/frontend/rust-lib/flowy-grid/tests/grid/filter_test/select_option_filter_test.rs b/frontend/rust-lib/flowy-database/tests/grid/filter_test/select_option_filter_test.rs similarity index 98% rename from frontend/rust-lib/flowy-grid/tests/grid/filter_test/select_option_filter_test.rs rename to frontend/rust-lib/flowy-database/tests/grid/filter_test/select_option_filter_test.rs index 122fbd55f1..05d149575b 100644 --- a/frontend/rust-lib/flowy-grid/tests/grid/filter_test/select_option_filter_test.rs +++ b/frontend/rust-lib/flowy-database/tests/grid/filter_test/select_option_filter_test.rs @@ -1,6 +1,6 @@ use crate::grid::filter_test::script::FilterScript::*; use crate::grid::filter_test::script::{FilterRowChanged, GridFilterTest}; -use flowy_grid::entities::{FieldType, SelectOptionConditionPB}; +use flowy_database::entities::{FieldType, SelectOptionConditionPB}; #[tokio::test] async fn grid_filter_multi_select_is_empty_test() { diff --git a/frontend/rust-lib/flowy-grid/tests/grid/filter_test/text_filter_test.rs b/frontend/rust-lib/flowy-database/tests/grid/filter_test/text_filter_test.rs similarity index 97% rename from frontend/rust-lib/flowy-grid/tests/grid/filter_test/text_filter_test.rs rename to frontend/rust-lib/flowy-database/tests/grid/filter_test/text_filter_test.rs index ef2e05c30f..c6f917a012 100644 --- a/frontend/rust-lib/flowy-grid/tests/grid/filter_test/text_filter_test.rs +++ b/frontend/rust-lib/flowy-database/tests/grid/filter_test/text_filter_test.rs @@ -1,7 +1,7 @@ use crate::grid::filter_test::script::FilterScript::*; use crate::grid::filter_test::script::*; -use flowy_grid::entities::{AlterFilterPayloadPB, FieldType, TextFilterConditionPB, TextFilterPB}; -use flowy_grid::services::filter::FilterType; +use flowy_database::entities::{AlterFilterPayloadPB, FieldType, TextFilterConditionPB, TextFilterPB}; +use flowy_database::services::filter::FilterType; #[tokio::test] async fn grid_filter_text_is_empty_test() { diff --git a/frontend/rust-lib/flowy-grid/tests/grid/grid_editor.rs b/frontend/rust-lib/flowy-database/tests/grid/grid_editor.rs similarity index 95% rename from frontend/rust-lib/flowy-grid/tests/grid/grid_editor.rs rename to frontend/rust-lib/flowy-database/tests/grid/grid_editor.rs index c591ca722f..cf833bcbb2 100644 --- a/frontend/rust-lib/flowy-grid/tests/grid/grid_editor.rs +++ b/frontend/rust-lib/flowy-database/tests/grid/grid_editor.rs @@ -3,15 +3,15 @@ #![allow(unused_imports)] use crate::grid::block_test::util::GridRowTestBuilder; use bytes::Bytes; -use flowy_client_sync::client_grid::GridBuilder; +use flowy_client_sync::client_database::DatabaseBuilder; +use flowy_database::entities::*; +use flowy_database::services::cell::ToCellChangesetString; +use flowy_database::services::field::SelectOptionPB; +use flowy_database::services::field::*; +use flowy_database::services::grid_editor::{DatabaseRevisionEditor, GridRevisionSerde}; +use flowy_database::services::row::{CreateRowRevisionPayload, RowRevisionBuilder}; +use flowy_database::services::setting::GridSettingChangesetBuilder; use flowy_error::FlowyResult; -use flowy_grid::entities::*; -use flowy_grid::services::cell::ToCellChangesetString; -use flowy_grid::services::field::SelectOptionPB; -use flowy_grid::services::field::*; -use flowy_grid::services::grid_editor::{GridRevisionEditor, GridRevisionSerde}; -use flowy_grid::services::row::{CreateRowRevisionPayload, RowRevisionBuilder}; -use flowy_grid::services::setting::GridSettingChangesetBuilder; use flowy_revision::REVISION_WRITE_INTERVAL_IN_MILLIS; use flowy_test::helper::ViewTest; use flowy_test::FlowySDKTest; @@ -26,7 +26,7 @@ use tokio::time::sleep; pub struct GridEditorTest { pub sdk: FlowySDKTest, pub view_id: String, - pub editor: Arc, + pub editor: Arc, pub field_revs: Vec>, pub block_meta_revs: Vec>, pub row_revs: Vec>, @@ -36,35 +36,35 @@ pub struct GridEditorTest { impl GridEditorTest { pub async fn new_table() -> Self { - Self::new(GridLayout::Table).await + Self::new(DatabaseViewLayout::Grid).await } pub async fn new_board() -> Self { - Self::new(GridLayout::Board).await + Self::new(DatabaseViewLayout::Board).await } - pub async fn new(layout: GridLayout) -> Self { + pub async fn new(layout: DatabaseViewLayout) -> Self { let sdk = FlowySDKTest::default(); let _ = sdk.init_user().await; let test = match layout { - GridLayout::Table => { + DatabaseViewLayout::Grid => { let build_context = make_test_grid(); let view_data: Bytes = build_context.into(); ViewTest::new_grid_view(&sdk, view_data.to_vec()).await } - GridLayout::Board => { + DatabaseViewLayout::Board => { let build_context = make_test_board(); let view_data: Bytes = build_context.into(); ViewTest::new_board_view(&sdk, view_data.to_vec()).await } - GridLayout::Calendar => { + DatabaseViewLayout::Calendar => { let build_context = make_test_calendar(); let view_data: Bytes = build_context.into(); ViewTest::new_calendar_view(&sdk, view_data.to_vec()).await } }; - let editor = sdk.grid_manager.open_grid(&test.view.id).await.unwrap(); + let editor = sdk.grid_manager.open_database(&test.view.id).await.unwrap(); let field_revs = editor.get_field_revs(None).await.unwrap(); let block_meta_revs = editor.get_block_meta_revs().await.unwrap(); let row_pbs = editor.get_all_row_revs(&test.view.id).await.unwrap(); @@ -217,8 +217,8 @@ pub const THIRD_THING: &str = "Start working"; /// The build-in test data for grid. Currently, there are five rows in this grid, if you want to add /// more rows or alter the data in this grid. Some tests may fail. So you need to fix the failed tests. -fn make_test_grid() -> BuildGridContext { - let mut grid_builder = GridBuilder::new(); +fn make_test_grid() -> BuildDatabaseContext { + let mut grid_builder = DatabaseBuilder::new(); // Iterate through the FieldType to create the corresponding Field. for field_type in FieldType::iter() { let field_type: FieldType = field_type; @@ -394,8 +394,8 @@ fn make_test_grid() -> BuildGridContext { } // Kanban board unit test mock data -fn make_test_board() -> BuildGridContext { - let mut grid_builder = GridBuilder::new(); +fn make_test_board() -> BuildDatabaseContext { + let mut grid_builder = DatabaseBuilder::new(); // Iterate through the FieldType to create the corresponding Field. for field_type in FieldType::iter() { let field_type: FieldType = field_type; @@ -568,6 +568,6 @@ fn make_test_board() -> BuildGridContext { } // Calendar unit test mock data -fn make_test_calendar() -> BuildGridContext { +fn make_test_calendar() -> BuildDatabaseContext { todo!() } diff --git a/frontend/rust-lib/flowy-grid/tests/grid/grid_test.rs b/frontend/rust-lib/flowy-database/tests/grid/grid_test.rs similarity index 98% rename from frontend/rust-lib/flowy-grid/tests/grid/grid_test.rs rename to frontend/rust-lib/flowy-database/tests/grid/grid_test.rs index 87f81f7a84..0624c03b39 100644 --- a/frontend/rust-lib/flowy-grid/tests/grid/grid_test.rs +++ b/frontend/rust-lib/flowy-database/tests/grid/grid_test.rs @@ -1,11 +1,11 @@ use crate::grid::script::EditorScript::*; use crate::grid::script::*; use chrono::NaiveDateTime; -use flowy_grid::services::field::{ +use flowy_database::services::field::{ DateCellContentChangeset, DateCellData, MultiSelectTypeOptionPB, SelectOption, SelectOptionCellContentChangeset, SingleSelectTypeOption, SELECTION_IDS_SEPARATOR, }; -use flowy_grid::services::row::{decode_cell_data_from_type_option_cell_data, CreateRowMetaBuilder}; +use flowy_database::services::row::{decode_cell_data_from_type_option_cell_data, CreateRowMetaBuilder}; use grid_model::entities::{ CellChangeset, FieldChangesetParams, FieldType, GridBlockInfoChangeset, GridBlockMetaSnapshot, RowMetaChangeset, TypeOptionDataFormat, @@ -336,7 +336,7 @@ async fn grid_cell_update() { scripts.push(UpdateCell { changeset: CellChangeset { - grid_id: block_id.to_string(), + database_id: block_id.to_string(), row_id: row_meta.id.clone(), field_id: field_meta.id.clone(), cell_content_changeset: Some(data), @@ -358,7 +358,7 @@ async fn grid_cell_update() { scripts.push(UpdateCell { changeset: CellChangeset { - grid_id: block_id.to_string(), + database_id: block_id.to_string(), row_id: row_meta.id.clone(), field_id: field_meta.id.clone(), cell_content_changeset: Some(data), diff --git a/frontend/rust-lib/flowy-grid/tests/grid/group_test/mod.rs b/frontend/rust-lib/flowy-database/tests/grid/group_test/mod.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/tests/grid/group_test/mod.rs rename to frontend/rust-lib/flowy-database/tests/grid/group_test/mod.rs diff --git a/frontend/rust-lib/flowy-grid/tests/grid/group_test/script.rs b/frontend/rust-lib/flowy-database/tests/grid/group_test/script.rs similarity index 95% rename from frontend/rust-lib/flowy-grid/tests/grid/group_test/script.rs rename to frontend/rust-lib/flowy-database/tests/grid/group_test/script.rs index 9f44dffc6f..c529ae10c4 100644 --- a/frontend/rust-lib/flowy-grid/tests/grid/group_test/script.rs +++ b/frontend/rust-lib/flowy-database/tests/grid/group_test/script.rs @@ -1,9 +1,9 @@ use crate::grid::grid_editor::GridEditorTest; -use flowy_grid::entities::{ - CreateRowParams, FieldType, GridLayout, GroupPB, MoveGroupParams, MoveGroupRowParams, RowPB, +use flowy_database::entities::{ + CreateRowParams, DatabaseViewLayout, FieldType, GroupPB, MoveGroupParams, MoveGroupRowParams, RowPB, }; -use flowy_grid::services::cell::{delete_select_option_cell, insert_select_option_cell}; -use flowy_grid::services::field::{ +use flowy_database::services::cell::{delete_select_option_cell, insert_select_option_cell}; +use flowy_database::services::field::{ edit_single_select_type_option, SelectOptionPB, SelectTypeOptionSharedAction, SingleSelectTypeOptionPB, }; use grid_model::{FieldRevision, RowChangeset}; @@ -112,10 +112,10 @@ impl GridGroupTest { // let group = self.group_at_index(group_index).await; let params = CreateRowParams { - grid_id: self.editor.grid_id.clone(), + database_id: self.editor.database_id.clone(), start_row_id: None, group_id: Some(group.group_id.clone()), - layout: GridLayout::Board, + layout: DatabaseViewLayout::Board, }; let _ = self.editor.create_row(params).await.unwrap(); } @@ -172,7 +172,7 @@ impl GridGroupTest { let from_group = self.group_at_index(from_group_index).await; let to_group = self.group_at_index(to_group_index).await; let params = MoveGroupParams { - view_id: self.editor.grid_id.clone(), + view_id: self.editor.database_id.clone(), from_group_id: from_group.group_id, to_group_id: to_group.group_id, }; diff --git a/frontend/rust-lib/flowy-grid/tests/grid/group_test/test.rs b/frontend/rust-lib/flowy-database/tests/grid/group_test/test.rs similarity index 99% rename from frontend/rust-lib/flowy-grid/tests/grid/group_test/test.rs rename to frontend/rust-lib/flowy-database/tests/grid/group_test/test.rs index 7b213049f6..d89d22ea0c 100644 --- a/frontend/rust-lib/flowy-grid/tests/grid/group_test/test.rs +++ b/frontend/rust-lib/flowy-database/tests/grid/group_test/test.rs @@ -1,7 +1,7 @@ use crate::grid::group_test::script::GridGroupTest; use crate::grid::group_test::script::GroupScript::*; -use flowy_grid::services::field::SelectOptionPB; +use flowy_database::services::field::SelectOptionPB; #[tokio::test] async fn group_init_test() { diff --git a/frontend/rust-lib/flowy-grid/tests/grid/mod.rs b/frontend/rust-lib/flowy-database/tests/grid/mod.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/tests/grid/mod.rs rename to frontend/rust-lib/flowy-database/tests/grid/mod.rs diff --git a/frontend/rust-lib/flowy-grid/tests/grid/script.rs b/frontend/rust-lib/flowy-database/tests/grid/script.rs similarity index 98% rename from frontend/rust-lib/flowy-grid/tests/grid/script.rs rename to frontend/rust-lib/flowy-database/tests/grid/script.rs index 9f7ef50aaa..87107881ce 100644 --- a/frontend/rust-lib/flowy-grid/tests/grid/script.rs +++ b/frontend/rust-lib/flowy-database/tests/grid/script.rs @@ -1,8 +1,8 @@ use bytes::Bytes; use flowy_client_sync::client_grid::GridBuilder; -use flowy_grid::services::field::*; -use flowy_grid::services::grid_meta_editor::{GridMetaEditor, GridPadBuilder}; -use flowy_grid::services::row::CreateRowMetaPayload; +use flowy_database::services::field::*; +use flowy_database::services::grid_meta_editor::{GridMetaEditor, GridPadBuilder}; +use flowy_database::services::row::CreateRowMetaPayload; use flowy_revision::REVISION_WRITE_INTERVAL_IN_MILLIS; use flowy_test::helper::ViewTest; use flowy_test::FlowySDKTest; diff --git a/frontend/rust-lib/flowy-grid/tests/grid/snapshot_test/mod.rs b/frontend/rust-lib/flowy-database/tests/grid/snapshot_test/mod.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/tests/grid/snapshot_test/mod.rs rename to frontend/rust-lib/flowy-database/tests/grid/snapshot_test/mod.rs diff --git a/frontend/rust-lib/flowy-grid/tests/grid/snapshot_test/script.rs b/frontend/rust-lib/flowy-database/tests/grid/snapshot_test/script.rs similarity index 90% rename from frontend/rust-lib/flowy-grid/tests/grid/snapshot_test/script.rs rename to frontend/rust-lib/flowy-database/tests/grid/snapshot_test/script.rs index aed9c37fbd..c6e379241e 100644 --- a/frontend/rust-lib/flowy-grid/tests/grid/snapshot_test/script.rs +++ b/frontend/rust-lib/flowy-database/tests/grid/snapshot_test/script.rs @@ -1,6 +1,6 @@ use crate::grid::grid_editor::GridEditorTest; -use flowy_client_sync::client_grid::{GridOperations, GridRevisionPad}; +use flowy_client_sync::client_database::{DatabaseOperations, DatabaseRevisionPad}; use flowy_revision::{RevisionSnapshot, REVISION_WRITE_INTERVAL_IN_MILLIS}; use grid_model::FieldRevision; use revision_model::Revision; @@ -46,7 +46,7 @@ impl GridSnapshotTest { self.view_id.clone() } - pub async fn grid_pad(&self) -> GridRevisionPad { + pub async fn grid_pad(&self) -> DatabaseRevisionPad { self.editor.grid_pad().read().await.clone() } @@ -73,8 +73,8 @@ impl GridSnapshotTest { assert_eq!(snapshot, expected); } SnapshotScript::AssertSnapshotContent { snapshot, expected } => { - let operations = GridOperations::from_bytes(snapshot.data).unwrap(); - let pad = GridRevisionPad::from_operations(operations).unwrap(); + let operations = DatabaseOperations::from_bytes(snapshot.data).unwrap(); + let pad = DatabaseRevisionPad::from_operations(operations).unwrap(); assert_eq!(pad.json_str().unwrap(), expected); } SnapshotScript::CreateField { field_rev } => { diff --git a/frontend/rust-lib/flowy-grid/tests/grid/snapshot_test/test.rs b/frontend/rust-lib/flowy-database/tests/grid/snapshot_test/test.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/tests/grid/snapshot_test/test.rs rename to frontend/rust-lib/flowy-database/tests/grid/snapshot_test/test.rs diff --git a/frontend/rust-lib/flowy-grid/tests/grid/sort_test/checkbox_and_text_test.rs b/frontend/rust-lib/flowy-database/tests/grid/sort_test/checkbox_and_text_test.rs similarity index 97% rename from frontend/rust-lib/flowy-grid/tests/grid/sort_test/checkbox_and_text_test.rs rename to frontend/rust-lib/flowy-database/tests/grid/sort_test/checkbox_and_text_test.rs index 5626d5fb1e..c24fdc150f 100644 --- a/frontend/rust-lib/flowy-grid/tests/grid/sort_test/checkbox_and_text_test.rs +++ b/frontend/rust-lib/flowy-database/tests/grid/sort_test/checkbox_and_text_test.rs @@ -1,5 +1,5 @@ use crate::grid::sort_test::script::{GridSortTest, SortScript::*}; -use flowy_grid::entities::FieldType; +use flowy_database::entities::FieldType; use grid_model::SortCondition; #[tokio::test] diff --git a/frontend/rust-lib/flowy-grid/tests/grid/sort_test/mod.rs b/frontend/rust-lib/flowy-database/tests/grid/sort_test/mod.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/tests/grid/sort_test/mod.rs rename to frontend/rust-lib/flowy-database/tests/grid/sort_test/mod.rs diff --git a/frontend/rust-lib/flowy-grid/tests/grid/sort_test/multi_sort_test.rs b/frontend/rust-lib/flowy-database/tests/grid/sort_test/multi_sort_test.rs similarity index 97% rename from frontend/rust-lib/flowy-grid/tests/grid/sort_test/multi_sort_test.rs rename to frontend/rust-lib/flowy-database/tests/grid/sort_test/multi_sort_test.rs index 7b529d3b6e..dd1a287358 100644 --- a/frontend/rust-lib/flowy-grid/tests/grid/sort_test/multi_sort_test.rs +++ b/frontend/rust-lib/flowy-database/tests/grid/sort_test/multi_sort_test.rs @@ -1,6 +1,6 @@ use crate::grid::sort_test::script::GridSortTest; use crate::grid::sort_test::script::SortScript::*; -use flowy_grid::entities::FieldType; +use flowy_database::entities::FieldType; use grid_model::SortCondition; #[tokio::test] diff --git a/frontend/rust-lib/flowy-grid/tests/grid/sort_test/script.rs b/frontend/rust-lib/flowy-database/tests/grid/sort_test/script.rs similarity index 94% rename from frontend/rust-lib/flowy-grid/tests/grid/sort_test/script.rs rename to frontend/rust-lib/flowy-database/tests/grid/sort_test/script.rs index 3fd7595de5..ccc06ab599 100644 --- a/frontend/rust-lib/flowy-grid/tests/grid/sort_test/script.rs +++ b/frontend/rust-lib/flowy-database/tests/grid/sort_test/script.rs @@ -1,8 +1,8 @@ use crate::grid::grid_editor::GridEditorTest; use async_stream::stream; -use flowy_grid::entities::{AlterSortParams, CellPathParams, DeleteSortParams}; -use flowy_grid::services::sort::SortType; -use flowy_grid::services::view_editor::GridViewChanged; +use flowy_database::entities::{AlterSortParams, CellPathParams, DeleteSortParams}; +use flowy_database::services::sort::SortType; +use flowy_database::services::view_editor::GridViewChanged; use futures::stream::StreamExt; use grid_model::{FieldRevision, SortCondition, SortRevision}; use std::cmp::min; @@ -83,10 +83,10 @@ impl GridSortTest { } SortScript::AssertCellContentOrder { field_id, orders } => { let mut cells = vec![]; - let rows = self.editor.get_grid(&self.view_id).await.unwrap().rows; + let rows = self.editor.get_database(&self.view_id).await.unwrap().rows; for row in rows { let params = CellPathParams { - view_id: self.view_id.clone(), + database_id: self.view_id.clone(), field_id: field_id.clone(), row_id: row.id, }; diff --git a/frontend/rust-lib/flowy-grid/tests/grid/sort_test/single_sort_test.rs b/frontend/rust-lib/flowy-database/tests/grid/sort_test/single_sort_test.rs similarity index 99% rename from frontend/rust-lib/flowy-grid/tests/grid/sort_test/single_sort_test.rs rename to frontend/rust-lib/flowy-database/tests/grid/sort_test/single_sort_test.rs index 19476d6874..ddd52d709e 100644 --- a/frontend/rust-lib/flowy-grid/tests/grid/sort_test/single_sort_test.rs +++ b/frontend/rust-lib/flowy-database/tests/grid/sort_test/single_sort_test.rs @@ -1,5 +1,5 @@ use crate::grid::sort_test::script::{GridSortTest, SortScript::*}; -use flowy_grid::entities::FieldType; +use flowy_database::entities::FieldType; use grid_model::SortCondition; #[tokio::test] diff --git a/frontend/rust-lib/flowy-grid/tests/main.rs b/frontend/rust-lib/flowy-database/tests/main.rs similarity index 100% rename from frontend/rust-lib/flowy-grid/tests/main.rs rename to frontend/rust-lib/flowy-database/tests/main.rs diff --git a/frontend/rust-lib/flowy-document/Cargo.toml b/frontend/rust-lib/flowy-document/Cargo.toml index 7a070fc2da..47c2e3cdb2 100644 --- a/frontend/rust-lib/flowy-document/Cargo.toml +++ b/frontend/rust-lib/flowy-document/Cargo.toml @@ -17,7 +17,7 @@ lib-ws = { path = "../../../shared-lib/lib-ws" } lib-infra = { path = "../../../shared-lib/lib-infra" } lib-dispatch = { path = "../lib-dispatch" } -flowy-database = { path = "../flowy-database", optional = true } +flowy-sqlite = { path = "../flowy-sqlite", optional = true } flowy-revision = { path = "../flowy-revision" } flowy-revision-persistence = { path = "../flowy-revision-persistence" } flowy-error = { path = "../flowy-error", features = ["adaptor_sync", "adaptor_ot", "adaptor_serde", "adaptor_database", "adaptor_dispatch"] } @@ -60,7 +60,7 @@ flowy-codegen = { path = "../flowy-codegen"} [features] sync = [] cloud_sync = ["sync"] -rev-sqlite = ["flowy-database"] +rev-sqlite = ["flowy-sqlite"] flowy_unit_test = ["lib-ot/flowy_unit_test", "flowy-revision/flowy_unit_test"] dart = ["flowy-codegen/dart", "flowy-notification/dart"] ts = ["flowy-codegen/ts", "flowy-notification/ts"] diff --git a/frontend/rust-lib/flowy-document/src/editor/editor.rs b/frontend/rust-lib/flowy-document/src/editor/editor.rs index 904b558b51..fa5c7e535a 100644 --- a/frontend/rust-lib/flowy-document/src/editor/editor.rs +++ b/frontend/rust-lib/flowy-document/src/editor/editor.rs @@ -4,9 +4,9 @@ use crate::editor::make_transaction_from_revisions; use crate::editor::queue::{Command, CommandSender, DocumentQueue}; use crate::{DocumentEditor, DocumentUser}; use bytes::Bytes; -use flowy_database::ConnectionPool; use flowy_error::{internal_error, FlowyError, FlowyResult}; use flowy_revision::{RevisionCloudService, RevisionManager}; +use flowy_sqlite::ConnectionPool; use lib_infra::async_trait::async_trait; use lib_infra::future::FutureResult; use lib_ot::core::Transaction; diff --git a/frontend/rust-lib/flowy-document/src/editor/queue.rs b/frontend/rust-lib/flowy-document/src/editor/queue.rs index 95f8121517..c2ee48e11c 100644 --- a/frontend/rust-lib/flowy-document/src/editor/queue.rs +++ b/frontend/rust-lib/flowy-document/src/editor/queue.rs @@ -7,7 +7,7 @@ use flowy_revision::RevisionManager; use futures::stream::StreamExt; use lib_ot::core::Transaction; -use flowy_database::ConnectionPool; +use flowy_sqlite::ConnectionPool; use std::sync::Arc; use tokio::sync::mpsc::{Receiver, Sender}; use tokio::sync::{oneshot, RwLock}; diff --git a/frontend/rust-lib/flowy-document/src/manager.rs b/frontend/rust-lib/flowy-document/src/manager.rs index 2327151081..a52dd608c8 100644 --- a/frontend/rust-lib/flowy-document/src/manager.rs +++ b/frontend/rust-lib/flowy-document/src/manager.rs @@ -10,12 +10,12 @@ use crate::{errors::FlowyError, DocumentCloudService}; use bytes::Bytes; use document_model::document::DocumentId; use flowy_client_sync::client_document::initial_delta_document_content; -use flowy_database::ConnectionPool; use flowy_error::FlowyResult; use flowy_revision::{ PhantomSnapshotPersistence, RevisionCloudService, RevisionManager, RevisionPersistence, RevisionPersistenceConfiguration, RevisionWebSocket, }; +use flowy_sqlite::ConnectionPool; use lib_infra::async_trait::async_trait; use lib_infra::future::FutureResult; use lib_infra::ref_map::{RefCountHashMap, RefCountValue}; diff --git a/frontend/rust-lib/flowy-document/src/old_editor/editor.rs b/frontend/rust-lib/flowy-document/src/old_editor/editor.rs index 0a102c5e08..ed35a2dbcf 100644 --- a/frontend/rust-lib/flowy-document/src/old_editor/editor.rs +++ b/frontend/rust-lib/flowy-document/src/old_editor/editor.rs @@ -7,12 +7,12 @@ use bytes::Bytes; use document_model::document::DocumentInfo; use flowy_client_sync::errors::SyncResult; use flowy_client_sync::make_operations_from_revisions; -use flowy_database::ConnectionPool; use flowy_error::{internal_error, FlowyResult}; use flowy_revision::{ RevisionCloudService, RevisionManager, RevisionMergeable, RevisionObjectDeserializer, RevisionObjectSerializer, RevisionWebSocket, }; +use flowy_sqlite::ConnectionPool; use lib_infra::async_trait::async_trait; use lib_infra::future::FutureResult; use lib_ot::core::{AttributeEntry, AttributeHashMap}; diff --git a/frontend/rust-lib/flowy-document/src/old_editor/queue.rs b/frontend/rust-lib/flowy-document/src/old_editor/queue.rs index e3a00da739..2bde143ce7 100644 --- a/frontend/rust-lib/flowy-document/src/old_editor/queue.rs +++ b/frontend/rust-lib/flowy-document/src/old_editor/queue.rs @@ -5,9 +5,9 @@ use flowy_client_sync::{ client_document::{history::UndoResult, ClientDocument}, errors::SyncError, }; -use flowy_database::ConnectionPool; use flowy_error::FlowyError; use flowy_revision::{RevisionMD5, RevisionManager, TransformOperations}; +use flowy_sqlite::ConnectionPool; use futures::stream::StreamExt; use lib_ot::core::AttributeEntry; use lib_ot::{ diff --git a/frontend/rust-lib/flowy-document/src/old_editor/web_socket.rs b/frontend/rust-lib/flowy-document/src/old_editor/web_socket.rs index fa3e2600d6..f047897de2 100644 --- a/frontend/rust-lib/flowy-document/src/old_editor/web_socket.rs +++ b/frontend/rust-lib/flowy-document/src/old_editor/web_socket.rs @@ -3,9 +3,9 @@ use crate::TEXT_BLOCK_SYNC_INTERVAL_IN_MILLIS; use bytes::Bytes; use flowy_client_sync::errors::SyncResult; use flowy_client_sync::make_operations_from_revisions; -use flowy_database::ConnectionPool; use flowy_error::{internal_error, FlowyError, FlowyResult}; use flowy_revision::*; +use flowy_sqlite::ConnectionPool; use lib_infra::future::{BoxResultFuture, FutureResult}; use lib_ot::text_delta::DeltaTextOperations; use lib_ws::WSConnectState; diff --git a/frontend/rust-lib/flowy-document/src/services/migration.rs b/frontend/rust-lib/flowy-document/src/services/migration.rs index 7a32855ff8..7070387080 100644 --- a/frontend/rust-lib/flowy-document/src/services/migration.rs +++ b/frontend/rust-lib/flowy-document/src/services/migration.rs @@ -3,9 +3,9 @@ use crate::services::rev_sqlite::{DeltaRevisionSql, SQLiteDocumentRevisionPersis use crate::DocumentDatabase; use bytes::Bytes; use flowy_client_sync::make_operations_from_revisions; -use flowy_database::kv::KV; use flowy_error::FlowyResult; use flowy_revision_persistence::{RevisionDiskCache, SyncRecord}; +use flowy_sqlite::kv::KV; use lib_infra::util::md5; use revision_model::Revision; use std::sync::Arc; diff --git a/frontend/rust-lib/flowy-document/src/services/persistence/rev_sqlite/document_rev_sqlite_v0.rs b/frontend/rust-lib/flowy-document/src/services/persistence/rev_sqlite/document_rev_sqlite_v0.rs index 081f4a262c..5de1a12db8 100644 --- a/frontend/rust-lib/flowy-document/src/services/persistence/rev_sqlite/document_rev_sqlite_v0.rs +++ b/frontend/rust-lib/flowy-document/src/services/persistence/rev_sqlite/document_rev_sqlite_v0.rs @@ -1,13 +1,13 @@ use bytes::Bytes; use diesel::{sql_types::Integer, update, SqliteConnection}; -use flowy_database::{ +use flowy_error::{internal_error, FlowyError, FlowyResult}; +use flowy_revision_persistence::{RevisionChangeset, RevisionDiskCache, RevisionState, SyncRecord}; +use flowy_sqlite::{ impl_sql_integer_expression, insert_or_ignore_into, prelude::*, schema::{rev_table, rev_table::dsl}, ConnectionPool, }; -use flowy_error::{internal_error, FlowyError, FlowyResult}; -use flowy_revision_persistence::{RevisionChangeset, RevisionDiskCache, RevisionState, SyncRecord}; use lib_infra::util::md5; use revision_model::{Revision, RevisionRange}; use std::collections::HashMap; diff --git a/frontend/rust-lib/flowy-document/src/services/persistence/rev_sqlite/document_rev_sqlite_v1.rs b/frontend/rust-lib/flowy-document/src/services/persistence/rev_sqlite/document_rev_sqlite_v1.rs index fece8356fc..2c38e50aef 100644 --- a/frontend/rust-lib/flowy-document/src/services/persistence/rev_sqlite/document_rev_sqlite_v1.rs +++ b/frontend/rust-lib/flowy-document/src/services/persistence/rev_sqlite/document_rev_sqlite_v1.rs @@ -1,13 +1,13 @@ use bytes::Bytes; use diesel::{sql_types::Integer, update, SqliteConnection}; -use flowy_database::{ +use flowy_error::{internal_error, FlowyError, FlowyResult}; +use flowy_revision_persistence::{RevisionChangeset, RevisionDiskCache, RevisionState, SyncRecord}; +use flowy_sqlite::{ impl_sql_integer_expression, insert_or_ignore_into, prelude::*, schema::{document_rev_table, document_rev_table::dsl}, ConnectionPool, }; -use flowy_error::{internal_error, FlowyError, FlowyResult}; -use flowy_revision_persistence::{RevisionChangeset, RevisionDiskCache, RevisionState, SyncRecord}; use lib_infra::util::md5; use revision_model::{Revision, RevisionRange}; use std::sync::Arc; diff --git a/frontend/rust-lib/flowy-document/src/services/persistence/rev_sqlite/document_snapshot.rs b/frontend/rust-lib/flowy-document/src/services/persistence/rev_sqlite/document_snapshot.rs index 5e7a8d3791..de3c969d00 100644 --- a/frontend/rust-lib/flowy-document/src/services/persistence/rev_sqlite/document_snapshot.rs +++ b/frontend/rust-lib/flowy-document/src/services/persistence/rev_sqlite/document_snapshot.rs @@ -1,11 +1,11 @@ use bytes::Bytes; -use flowy_database::{ +use flowy_error::{internal_error, FlowyResult}; +use flowy_revision::{RevisionSnapshot, RevisionSnapshotDiskCache}; +use flowy_sqlite::{ prelude::*, schema::{document_rev_snapshot, document_rev_snapshot::dsl}, ConnectionPool, }; -use flowy_error::{internal_error, FlowyResult}; -use flowy_revision::{RevisionSnapshot, RevisionSnapshotDiskCache}; use lib_infra::util::timestamp; use std::sync::Arc; diff --git a/frontend/rust-lib/flowy-error/Cargo.toml b/frontend/rust-lib/flowy-error/Cargo.toml index 9da2e3daca..f22566fcc3 100644 --- a/frontend/rust-lib/flowy-error/Cargo.toml +++ b/frontend/rust-lib/flowy-error/Cargo.toml @@ -22,7 +22,7 @@ serde_repr = { version = "0.1" } serde = "1.0" reqwest = { version = "0.11", optional = true } http-error-code = { git = "https://github.com/AppFlowy-IO/AppFlowy-Server", branch = "refactor/appflowy_server", optional = true } -flowy-database = { path = "../flowy-database", optional = true} +flowy-sqlite = { path = "../flowy-sqlite", optional = true} r2d2 = { version = "0.8", optional = true} [features] @@ -31,7 +31,7 @@ adaptor_ot = ["lib-ot"] adaptor_dispatch = ["lib-dispatch"] adaptor_serde = ["serde_json"] adaptor_reqwest = ["reqwest"] -adaptor_database = ["flowy-database", "r2d2"] +adaptor_database = ["flowy-sqlite", "r2d2"] adaptor_ws= ["flowy-client-ws"] adaptor_user= ["user-model"] adaptor_server_error = ["http-error-code"] diff --git a/frontend/rust-lib/flowy-error/src/code.rs b/frontend/rust-lib/flowy-error/src/code.rs index c306dfdc53..f93bf9449a 100644 --- a/frontend/rust-lib/flowy-error/src/code.rs +++ b/frontend/rust-lib/flowy-error/src/code.rs @@ -101,11 +101,11 @@ pub enum ErrorCode { #[error("Text is too long")] TextTooLong = 32, - #[error("Grid id is empty")] - GridIdIsEmpty = 33, + #[error("Database id is empty")] + DatabaseIdIsEmpty = 33, #[error("Grid view id is empty")] - GridViewIdIsEmpty = 34, + DatabaseViewIdIsEmpty = 34, #[error("Grid block id is empty")] BlockIdIsEmpty = 35, diff --git a/frontend/rust-lib/flowy-error/src/ext/database.rs b/frontend/rust-lib/flowy-error/src/ext/database.rs index 56fe8d1d4d..2a5807421d 100644 --- a/frontend/rust-lib/flowy-error/src/ext/database.rs +++ b/frontend/rust-lib/flowy-error/src/ext/database.rs @@ -1,7 +1,7 @@ use crate::FlowyError; -impl std::convert::From for FlowyError { - fn from(error: flowy_database::Error) -> Self { +impl std::convert::From for FlowyError { + fn from(error: flowy_sqlite::Error) -> Self { FlowyError::internal().context(error) } } diff --git a/frontend/rust-lib/flowy-folder/Cargo.toml b/frontend/rust-lib/flowy-folder/Cargo.toml index 61fa2079a3..20ea2e4270 100644 --- a/frontend/rust-lib/flowy-folder/Cargo.toml +++ b/frontend/rust-lib/flowy-folder/Cargo.toml @@ -15,7 +15,7 @@ lib-ot = { path = "../../../shared-lib/lib-ot" } lib-infra = { path = "../../../shared-lib/lib-infra" } flowy-document = { path = "../flowy-document" } -flowy-database = { path = "../flowy-database", optional = true } +flowy-sqlite = { path = "../flowy-sqlite", optional = true } flowy-error = { path = "../flowy-error", features = ["adaptor_database", "adaptor_dispatch"]} flowy-notification = { path = "../flowy-notification" } lib-dispatch = { path = "../lib-dispatch" } @@ -51,7 +51,7 @@ flowy-codegen = { path = "../flowy-codegen"} default = [] sync = [] cloud_sync = ["sync"] -rev-sqlite = ["flowy-database", "flowy-folder/rev-sqlite"] +rev-sqlite = ["flowy-sqlite", "flowy-folder/rev-sqlite"] flowy_unit_test = ["lib-ot/flowy_unit_test", "flowy-revision/flowy_unit_test"] dart = ["flowy-codegen/dart", "flowy-notification/dart"] ts = ["flowy-codegen/ts", "flowy-notification/ts"] diff --git a/frontend/rust-lib/flowy-folder/src/event_map.rs b/frontend/rust-lib/flowy-folder/src/event_map.rs index f6addb6eb4..e657d3a0c7 100644 --- a/frontend/rust-lib/flowy-folder/src/event_map.rs +++ b/frontend/rust-lib/flowy-folder/src/event_map.rs @@ -9,8 +9,8 @@ use crate::{ manager::FolderManager, services::{app::event_handler::*, trash::event_handler::*, view::event_handler::*, workspace::event_handler::*}, }; -use flowy_database::{ConnectionPool, DBConnection}; use flowy_derive::{Flowy_Event, ProtoBuf_Enum}; +use flowy_sqlite::{ConnectionPool, DBConnection}; use folder_model::{AppRevision, TrashRevision, ViewRevision, WorkspaceRevision}; use lib_dispatch::prelude::*; use lib_infra::future::FutureResult; diff --git a/frontend/rust-lib/flowy-folder/src/lib.rs b/frontend/rust-lib/flowy-folder/src/lib.rs index 6be22b19b3..d34c6a4a2f 100644 --- a/frontend/rust-lib/flowy-folder/src/lib.rs +++ b/frontend/rust-lib/flowy-folder/src/lib.rs @@ -6,7 +6,7 @@ pub mod services; mod macros; #[macro_use] -extern crate flowy_database; +extern crate flowy_sqlite; pub mod manager; mod notification; diff --git a/frontend/rust-lib/flowy-folder/src/services/folder_editor.rs b/frontend/rust-lib/flowy-folder/src/services/folder_editor.rs index 605e349fee..9c5aa82232 100644 --- a/frontend/rust-lib/flowy-folder/src/services/folder_editor.rs +++ b/frontend/rust-lib/flowy-folder/src/services/folder_editor.rs @@ -3,12 +3,12 @@ use bytes::Bytes; use flowy_client_sync::client_folder::{FolderChangeset, FolderOperations, FolderPad}; use flowy_client_sync::make_operations_from_revisions; use flowy_client_sync::util::recover_operation_from_revisions; -use flowy_database::ConnectionPool; use flowy_error::{FlowyError, FlowyResult}; use flowy_revision::{ RevisionCloudService, RevisionManager, RevisionMergeable, RevisionObjectDeserializer, RevisionObjectSerializer, RevisionWebSocket, }; +use flowy_sqlite::ConnectionPool; use lib_infra::future::FutureResult; use lib_ot::core::EmptyAttributes; use parking_lot::RwLock; diff --git a/frontend/rust-lib/flowy-folder/src/services/persistence/migration.rs b/frontend/rust-lib/flowy-folder/src/services/persistence/migration.rs index fbe4ee1226..7554e8941e 100644 --- a/frontend/rust-lib/flowy-folder/src/services/persistence/migration.rs +++ b/frontend/rust-lib/flowy-folder/src/services/persistence/migration.rs @@ -6,9 +6,9 @@ use crate::{ use bytes::Bytes; use flowy_client_sync::client_folder::FolderPad; use flowy_client_sync::client_folder::{make_folder_rev_json_str, FolderOperationsBuilder}; -use flowy_database::kv::KV; use flowy_error::{FlowyError, FlowyResult}; use flowy_revision::reset::{RevisionResettable, RevisionStructReset}; +use flowy_sqlite::kv::KV; use folder_model::{AppRevision, FolderRevision, ViewRevision, WorkspaceRevision}; use revision_model::Revision; diff --git a/frontend/rust-lib/flowy-folder/src/services/persistence/mod.rs b/frontend/rust-lib/flowy-folder/src/services/persistence/mod.rs index 6f6dcac005..43ec69161b 100644 --- a/frontend/rust-lib/flowy-folder/src/services/persistence/mod.rs +++ b/frontend/rust-lib/flowy-folder/src/services/persistence/mod.rs @@ -10,9 +10,9 @@ use crate::{ services::{folder_editor::FolderEditor, persistence::migration::FolderMigration}, }; use flowy_client_sync::client_folder::{FolderOperationsBuilder, FolderPad}; -use flowy_database::ConnectionPool; use flowy_error::{FlowyError, FlowyResult}; use flowy_revision_persistence::{RevisionDiskCache, RevisionState, SyncRecord}; +use flowy_sqlite::ConnectionPool; use folder_model::{AppRevision, TrashRevision, ViewRevision, WorkspaceRevision}; use revision_model::Revision; use std::sync::Arc; diff --git a/frontend/rust-lib/flowy-folder/src/services/persistence/rev_sqlite/folder_rev_sqlite.rs b/frontend/rust-lib/flowy-folder/src/services/persistence/rev_sqlite/folder_rev_sqlite.rs index 3f3ceb2608..7b648e785c 100644 --- a/frontend/rust-lib/flowy-folder/src/services/persistence/rev_sqlite/folder_rev_sqlite.rs +++ b/frontend/rust-lib/flowy-folder/src/services/persistence/rev_sqlite/folder_rev_sqlite.rs @@ -1,13 +1,13 @@ use bytes::Bytes; use diesel::{sql_types::Integer, update, SqliteConnection}; -use flowy_database::{ +use flowy_error::{internal_error, FlowyError, FlowyResult}; +use flowy_revision_persistence::{RevisionChangeset, RevisionDiskCache, RevisionState, SyncRecord}; +use flowy_sqlite::{ impl_sql_integer_expression, insert_or_ignore_into, prelude::*, schema::{rev_table, rev_table::dsl}, ConnectionPool, }; -use flowy_error::{internal_error, FlowyError, FlowyResult}; -use flowy_revision_persistence::{RevisionChangeset, RevisionDiskCache, RevisionState, SyncRecord}; use lib_infra::util::md5; use revision_model::{Revision, RevisionRange}; use std::sync::Arc; diff --git a/frontend/rust-lib/flowy-folder/src/services/persistence/rev_sqlite/folder_snapshot.rs b/frontend/rust-lib/flowy-folder/src/services/persistence/rev_sqlite/folder_snapshot.rs index f64549c833..fb67cb24eb 100644 --- a/frontend/rust-lib/flowy-folder/src/services/persistence/rev_sqlite/folder_snapshot.rs +++ b/frontend/rust-lib/flowy-folder/src/services/persistence/rev_sqlite/folder_snapshot.rs @@ -1,12 +1,12 @@ #![allow(clippy::unused_unit)] use bytes::Bytes; -use flowy_database::{ +use flowy_error::{internal_error, FlowyResult}; +use flowy_revision::{RevisionSnapshot, RevisionSnapshotDiskCache}; +use flowy_sqlite::{ prelude::*, schema::{folder_rev_snapshot, folder_rev_snapshot::dsl}, ConnectionPool, }; -use flowy_error::{internal_error, FlowyResult}; -use flowy_revision::{RevisionSnapshot, RevisionSnapshotDiskCache}; use lib_infra::util::timestamp; use std::sync::Arc; diff --git a/frontend/rust-lib/flowy-folder/src/services/persistence/version_1/app_sql.rs b/frontend/rust-lib/flowy-folder/src/services/persistence/version_1/app_sql.rs index e8d8a510ea..2b28e1dd94 100644 --- a/frontend/rust-lib/flowy-folder/src/services/persistence/version_1/app_sql.rs +++ b/frontend/rust-lib/flowy-folder/src/services/persistence/version_1/app_sql.rs @@ -3,7 +3,7 @@ use crate::entities::{ trash::{TrashPB, TrashType}, }; use crate::{errors::FlowyError, services::persistence::version_1::workspace_sql::WorkspaceTable}; -use flowy_database::{ +use flowy_sqlite::{ prelude::*, schema::{app_table, app_table::dsl}, SqliteConnection, diff --git a/frontend/rust-lib/flowy-folder/src/services/persistence/version_1/trash_sql.rs b/frontend/rust-lib/flowy-folder/src/services/persistence/version_1/trash_sql.rs index 5833f3ce08..82f7063012 100644 --- a/frontend/rust-lib/flowy-folder/src/services/persistence/version_1/trash_sql.rs +++ b/frontend/rust-lib/flowy-folder/src/services/persistence/version_1/trash_sql.rs @@ -1,6 +1,6 @@ use crate::errors::FlowyError; use diesel::sql_types::Integer; -use flowy_database::{ +use flowy_sqlite::{ prelude::*, schema::{trash_table, trash_table::dsl}, SqliteConnection, diff --git a/frontend/rust-lib/flowy-folder/src/services/persistence/version_1/v1_impl.rs b/frontend/rust-lib/flowy-folder/src/services/persistence/version_1/v1_impl.rs index 099cdc2cca..08c8277f61 100644 --- a/frontend/rust-lib/flowy-folder/src/services/persistence/version_1/v1_impl.rs +++ b/frontend/rust-lib/flowy-folder/src/services/persistence/version_1/v1_impl.rs @@ -6,8 +6,8 @@ use crate::services::persistence::{ }, FolderPersistenceTransaction, TrashTableSql, }; -use flowy_database::DBConnection; use flowy_error::FlowyResult; +use flowy_sqlite::DBConnection; use folder_model::{AppRevision, TrashRevision, ViewRevision, WorkspaceRevision}; /// V1Transaction is deprecated since version 0.0.2 version diff --git a/frontend/rust-lib/flowy-folder/src/services/persistence/version_1/view_sql.rs b/frontend/rust-lib/flowy-folder/src/services/persistence/version_1/view_sql.rs index 0131b0f9fa..a5bc92b178 100644 --- a/frontend/rust-lib/flowy-folder/src/services/persistence/version_1/view_sql.rs +++ b/frontend/rust-lib/flowy-folder/src/services/persistence/version_1/view_sql.rs @@ -7,7 +7,7 @@ use crate::{ services::persistence::version_1::app_sql::AppTable, }; use diesel::sql_types::Integer; -use flowy_database::{ +use flowy_sqlite::{ prelude::*, schema::{view_table, view_table::dsl}, SqliteConnection, diff --git a/frontend/rust-lib/flowy-folder/src/services/persistence/version_1/workspace_sql.rs b/frontend/rust-lib/flowy-folder/src/services/persistence/version_1/workspace_sql.rs index 1ed62ff433..ea3b0bb3bc 100644 --- a/frontend/rust-lib/flowy-folder/src/services/persistence/version_1/workspace_sql.rs +++ b/frontend/rust-lib/flowy-folder/src/services/persistence/version_1/workspace_sql.rs @@ -1,6 +1,6 @@ use crate::{entities::workspace::UpdateWorkspaceParams, errors::FlowyError}; use diesel::SqliteConnection; -use flowy_database::{ +use flowy_sqlite::{ prelude::*, schema::{workspace_table, workspace_table::dsl}, }; diff --git a/frontend/rust-lib/flowy-folder/src/services/view/controller.rs b/frontend/rust-lib/flowy-folder/src/services/view/controller.rs index b80a50c0e6..b6ff01446a 100644 --- a/frontend/rust-lib/flowy-folder/src/services/view/controller.rs +++ b/frontend/rust-lib/flowy-folder/src/services/view/controller.rs @@ -15,7 +15,7 @@ use crate::{ }, }; use bytes::Bytes; -use flowy_database::kv::KV; +use flowy_sqlite::kv::KV; use folder_model::{gen_view_id, ViewRevision}; use futures::{FutureExt, StreamExt}; use std::{collections::HashSet, sync::Arc}; diff --git a/frontend/rust-lib/flowy-folder/src/services/web_socket.rs b/frontend/rust-lib/flowy-folder/src/services/web_socket.rs index eac9e81e7b..3a059f48e4 100644 --- a/frontend/rust-lib/flowy-folder/src/services/web_socket.rs +++ b/frontend/rust-lib/flowy-folder/src/services/web_socket.rs @@ -2,9 +2,9 @@ use crate::services::FOLDER_SYNC_INTERVAL_IN_MILLIS; use bytes::Bytes; use flowy_client_sync::client_folder::{FolderOperations, FolderPad}; use flowy_client_sync::make_operations_from_revisions; -use flowy_database::ConnectionPool; use flowy_error::{FlowyError, FlowyResult}; use flowy_revision::*; +use flowy_sqlite::ConnectionPool; use lib_infra::future::{BoxResultFuture, FutureResult}; use lib_ot::core::OperationTransform; use parking_lot::RwLock; diff --git a/frontend/rust-lib/flowy-folder/src/services/workspace/controller.rs b/frontend/rust-lib/flowy-folder/src/services/workspace/controller.rs index ef17d0166b..9fe9d1e3c0 100644 --- a/frontend/rust-lib/flowy-folder/src/services/workspace/controller.rs +++ b/frontend/rust-lib/flowy-folder/src/services/workspace/controller.rs @@ -9,7 +9,7 @@ use crate::{ read_local_workspace_apps, TrashController, }, }; -use flowy_database::kv::KV; +use flowy_sqlite::kv::KV; use folder_model::{AppRevision, WorkspaceRevision}; use std::sync::Arc; diff --git a/frontend/rust-lib/flowy-grid/Cargo.toml b/frontend/rust-lib/flowy-grid/Cargo.toml deleted file mode 100644 index 9d5db23553..0000000000 --- a/frontend/rust-lib/flowy-grid/Cargo.toml +++ /dev/null @@ -1,63 +0,0 @@ -[package] -name = "flowy-grid" -version = "0.1.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -lib-dispatch = { path = "../lib-dispatch" } -flowy-notification = { path = "../flowy-notification" } -flowy-revision = { path = "../flowy-revision" } -flowy-revision-persistence = { path = "../flowy-revision-persistence" } -flowy-task= { path = "../flowy-task" } -flowy-error = { path = "../flowy-error", features = ["adaptor_database", "adaptor_dispatch"]} -flowy-derive = { path = "../flowy-derive" } -lib-ot = { path = "../../../shared-lib/lib-ot" } -lib-infra = { path = "../../../shared-lib/lib-infra" } -grid-model = { path = "../../../shared-lib/grid-model" } -flowy-client-sync = { path = "../flowy-client-sync"} -revision-model = { path = "../../../shared-lib/revision-model" } -flowy-database = { path = "../flowy-database", optional = true } -anyhow = "1.0" - -strum = "0.21" -strum_macros = "0.21" -tracing = { version = "0.1", features = ["log"] } -protobuf = {version = "2.18.0"} -rust_decimal = "1.8.1" -rusty-money = {version = "0.4.0", features = ["iso"]} -lazy_static = "1.4.0" -chrono = "0.4.19" -nanoid = "0.4.0" -bytes = { version = "1.0" } -diesel = {version = "1.4.8", features = ["sqlite"]} -dashmap = "5" -tokio = {version = "1", features = ["sync"]} -rayon = "1.5.2" -serde = { version = "1.0", features = ["derive"] } -serde_json = {version = "1.0"} -serde_repr = "0.1" -indexmap = {version = "1.9.1", features = ["serde"]} -fancy-regex = "0.10.0" -regex = "1.5.6" -url = { version = "2"} -futures = "0.3.15" -atomic_refcell = "0.1.8" -crossbeam-utils = "0.8.7" -async-stream = "0.3.2" -parking_lot = "0.12.1" - -[dev-dependencies] -flowy-test = { path = "../flowy-test" } -flowy-grid = { path = "../flowy-grid", features = ["flowy_unit_test"]} - -[build-dependencies] -flowy-codegen = { path = "../flowy-codegen"} - -[features] -default = [] -rev-sqlite = ["flowy-database"] -dart = ["flowy-codegen/dart", "flowy-notification/dart"] -ts = ["flowy-codegen/ts", "flowy-notification/ts"] -flowy_unit_test = ["flowy-revision/flowy_unit_test"] \ No newline at end of file diff --git a/frontend/rust-lib/flowy-grid/src/lib.rs b/frontend/rust-lib/flowy-grid/src/lib.rs deleted file mode 100644 index 977330d5cd..0000000000 --- a/frontend/rust-lib/flowy-grid/src/lib.rs +++ /dev/null @@ -1,14 +0,0 @@ -extern crate core; - -#[macro_use] -mod macros; - -mod event_handler; -pub mod event_map; -pub mod manager; - -pub mod entities; -mod notification; -mod protobuf; -pub mod services; -pub mod util; diff --git a/frontend/rust-lib/flowy-grid/src/macros.rs b/frontend/rust-lib/flowy-grid/src/macros.rs deleted file mode 100644 index 72018725a7..0000000000 --- a/frontend/rust-lib/flowy-grid/src/macros.rs +++ /dev/null @@ -1,92 +0,0 @@ -#[macro_export] -macro_rules! impl_into_box_type_option_builder { - ($target: ident) => { - impl std::convert::From<$target> for BoxTypeOptionBuilder { - fn from(target: $target) -> BoxTypeOptionBuilder { - Box::new(target) - } - } - }; -} - -macro_rules! impl_builder_from_json_str_and_from_bytes { - ($target: ident,$type_option: ident) => { - impl $target { - pub fn from_protobuf_bytes(bytes: Bytes) -> $target { - let type_option = $type_option::from_protobuf_bytes(bytes); - $target(type_option) - } - - pub fn from_json_str(s: &str) -> $target { - let type_option = $type_option::from_json_str(s); - $target(type_option) - } - } - }; -} - -#[macro_export] -macro_rules! impl_type_option { - ($target: ident, $field_type:expr) => { - impl std::convert::From<&FieldRevision> for $target { - fn from(field_rev: &FieldRevision) -> $target { - match field_rev.get_type_option::<$target>($field_type.into()) { - None => $target::default(), - Some(target) => target, - } - } - } - - impl std::convert::From<&std::sync::Arc> for $target { - fn from(field_rev: &std::sync::Arc) -> $target { - match field_rev.get_type_option::<$target>($field_type.into()) { - None => $target::default(), - Some(target) => target, - } - } - } - - impl std::convert::From<$target> for String { - fn from(type_option: $target) -> String { - type_option.json_str() - } - } - - impl TypeOptionDataSerializer for $target { - fn json_str(&self) -> String { - match serde_json::to_string(&self) { - Ok(s) => s, - Err(e) => { - tracing::error!("Field type data serialize to json fail, error: {:?}", e); - serde_json::to_string(&$target::default()).unwrap() - } - } - } - - fn protobuf_bytes(&self) -> Bytes { - self.clone().try_into().unwrap() - } - } - - impl TypeOptionDataDeserializer for $target { - fn from_json_str(s: &str) -> $target { - match serde_json::from_str(s) { - Ok(obj) => obj, - Err(err) => { - tracing::error!( - "{} type option deserialize from {} failed, {:?}", - stringify!($target), - s, - err - ); - $target::default() - } - } - } - - fn from_protobuf_bytes(bytes: Bytes) -> $target { - $target::try_from(bytes).unwrap_or($target::default()) - } - } - }; -} diff --git a/frontend/rust-lib/flowy-grid/src/manager.rs b/frontend/rust-lib/flowy-grid/src/manager.rs deleted file mode 100644 index 94e185e9f5..0000000000 --- a/frontend/rust-lib/flowy-grid/src/manager.rs +++ /dev/null @@ -1,235 +0,0 @@ -use crate::entities::GridLayout; -use crate::services::grid_editor::{GridRevisionEditor, GridRevisionMergeable}; -use crate::services::persistence::block_index::BlockIndexCache; -use crate::services::persistence::kv::GridKVPersistence; -use crate::services::persistence::migration::GridMigration; -use crate::services::persistence::rev_sqlite::{SQLiteGridRevisionPersistence, SQLiteGridRevisionSnapshotPersistence}; -use crate::services::persistence::GridDatabase; -use crate::services::view_editor::make_grid_view_rev_manager; -use bytes::Bytes; -use flowy_client_sync::client_grid::{make_grid_block_operations, make_grid_operations, make_grid_view_operations}; -use flowy_database::ConnectionPool; -use flowy_error::{FlowyError, FlowyResult}; -use flowy_revision::{RevisionManager, RevisionPersistence, RevisionPersistenceConfiguration, RevisionWebSocket}; -use grid_model::{BuildGridContext, GridRevision, GridViewRevision}; -use lib_infra::async_trait::async_trait; -use lib_infra::ref_map::{RefCountHashMap, RefCountValue}; -use revision_model::Revision; - -use crate::services::block_manager::make_grid_block_rev_manager; -use flowy_task::TaskDispatcher; -use std::sync::Arc; -use tokio::sync::RwLock; - -pub trait GridUser: Send + Sync { - fn user_id(&self) -> Result; - fn token(&self) -> Result; - fn db_pool(&self) -> Result, FlowyError>; -} - -pub struct GridManager { - grid_editors: RwLock>>, - grid_user: Arc, - block_index_cache: Arc, - #[allow(dead_code)] - kv_persistence: Arc, - task_scheduler: Arc>, - migration: GridMigration, -} - -impl GridManager { - pub fn new( - grid_user: Arc, - _rev_web_socket: Arc, - task_scheduler: Arc>, - database: Arc, - ) -> Self { - let grid_editors = RwLock::new(RefCountHashMap::new()); - let kv_persistence = Arc::new(GridKVPersistence::new(database.clone())); - let block_index_cache = Arc::new(BlockIndexCache::new(database.clone())); - let migration = GridMigration::new(grid_user.clone(), database); - Self { - grid_editors, - grid_user, - kv_persistence, - block_index_cache, - task_scheduler, - migration, - } - } - - pub async fn initialize_with_new_user(&self, _user_id: &str, _token: &str) -> FlowyResult<()> { - Ok(()) - } - - pub async fn initialize(&self, _user_id: &str, _token: &str) -> FlowyResult<()> { - Ok(()) - } - - #[tracing::instrument(level = "debug", skip_all, err)] - pub async fn create_grid>(&self, grid_id: T, revisions: Vec) -> FlowyResult<()> { - let grid_id = grid_id.as_ref(); - let db_pool = self.grid_user.db_pool()?; - let rev_manager = self.make_grid_rev_manager(grid_id, db_pool)?; - rev_manager.reset_object(revisions).await?; - - Ok(()) - } - - #[tracing::instrument(level = "debug", skip_all, err)] - async fn create_grid_view>(&self, view_id: T, revisions: Vec) -> FlowyResult<()> { - let view_id = view_id.as_ref(); - let rev_manager = make_grid_view_rev_manager(&self.grid_user, view_id).await?; - rev_manager.reset_object(revisions).await?; - Ok(()) - } - - #[tracing::instrument(level = "debug", skip_all, err)] - pub async fn create_grid_block>(&self, block_id: T, revisions: Vec) -> FlowyResult<()> { - let block_id = block_id.as_ref(); - let rev_manager = make_grid_block_rev_manager(&self.grid_user, block_id)?; - rev_manager.reset_object(revisions).await?; - Ok(()) - } - - pub async fn open_grid>(&self, grid_id: T) -> FlowyResult> { - let grid_id = grid_id.as_ref(); - let _ = self.migration.run_v1_migration(grid_id).await; - self.get_or_create_grid_editor(grid_id).await - } - - #[tracing::instrument(level = "debug", skip_all, fields(grid_id), err)] - pub async fn close_grid>(&self, grid_id: T) -> FlowyResult<()> { - let grid_id = grid_id.as_ref(); - tracing::Span::current().record("grid_id", grid_id); - self.grid_editors.write().await.remove(grid_id).await; - Ok(()) - } - - // #[tracing::instrument(level = "debug", skip(self), err)] - pub async fn get_grid_editor(&self, grid_id: &str) -> FlowyResult> { - let read_guard = self.grid_editors.read().await; - let editor = read_guard.get(grid_id); - match editor { - None => { - // Drop the read_guard ASAP in case of the following read/write lock - drop(read_guard); - self.open_grid(grid_id).await - } - Some(editor) => Ok(editor), - } - } - - async fn get_or_create_grid_editor(&self, grid_id: &str) -> FlowyResult> { - if let Some(editor) = self.grid_editors.read().await.get(grid_id) { - return Ok(editor); - } - - let mut grid_editors = self.grid_editors.write().await; - let db_pool = self.grid_user.db_pool()?; - let editor = self.make_grid_rev_editor(grid_id, db_pool).await?; - tracing::trace!("Open grid: {}", grid_id); - grid_editors.insert(grid_id.to_string(), editor.clone()); - Ok(editor) - } - - #[tracing::instrument(level = "trace", skip(self, pool), err)] - async fn make_grid_rev_editor( - &self, - grid_id: &str, - pool: Arc, - ) -> Result, FlowyError> { - let user = self.grid_user.clone(); - let rev_manager = self.make_grid_rev_manager(grid_id, pool.clone())?; - let grid_editor = GridRevisionEditor::new( - grid_id, - user, - rev_manager, - self.block_index_cache.clone(), - self.task_scheduler.clone(), - ) - .await?; - Ok(grid_editor) - } - - #[tracing::instrument(level = "trace", skip(self, pool), err)] - pub fn make_grid_rev_manager( - &self, - grid_id: &str, - pool: Arc, - ) -> FlowyResult>> { - let user_id = self.grid_user.user_id()?; - - // Create revision persistence - let disk_cache = SQLiteGridRevisionPersistence::new(&user_id, pool.clone()); - let configuration = RevisionPersistenceConfiguration::new(6, false); - let rev_persistence = RevisionPersistence::new(&user_id, grid_id, disk_cache, configuration); - - // Create snapshot persistence - let snapshot_object_id = format!("grid:{}", grid_id); - let snapshot_persistence = SQLiteGridRevisionSnapshotPersistence::new(&snapshot_object_id, pool); - - let rev_compress = GridRevisionMergeable(); - let rev_manager = RevisionManager::new(&user_id, grid_id, rev_persistence, rev_compress, snapshot_persistence); - Ok(rev_manager) - } -} - -pub async fn make_grid_view_data( - _user_id: &str, - view_id: &str, - layout: GridLayout, - grid_manager: Arc, - build_context: BuildGridContext, -) -> FlowyResult { - let BuildGridContext { - field_revs, - block_metas, - blocks, - grid_view_revision_data, - } = build_context; - - for block_meta_data in &blocks { - let block_id = &block_meta_data.block_id; - // Indexing the block's rows - block_meta_data.rows.iter().for_each(|row| { - let _ = grid_manager.block_index_cache.insert(&row.block_id, &row.id); - }); - - // Create grid's block - let grid_block_delta = make_grid_block_operations(block_meta_data); - let block_delta_data = grid_block_delta.json_bytes(); - let revision = Revision::initial_revision(block_id, block_delta_data); - grid_manager.create_grid_block(&block_id, vec![revision]).await?; - } - - // Will replace the grid_id with the value returned by the gen_grid_id() - let grid_id = view_id.to_owned(); - let grid_rev = GridRevision::from_build_context(&grid_id, field_revs, block_metas); - - // Create grid - let grid_rev_delta = make_grid_operations(&grid_rev); - let grid_rev_delta_bytes = grid_rev_delta.json_bytes(); - let revision = Revision::initial_revision(&grid_id, grid_rev_delta_bytes.clone()); - grid_manager.create_grid(&grid_id, vec![revision]).await?; - - // Create grid view - let grid_view = if grid_view_revision_data.is_empty() { - GridViewRevision::new(grid_id, view_id.to_owned(), layout.into()) - } else { - GridViewRevision::from_json(grid_view_revision_data)? - }; - let grid_view_delta = make_grid_view_operations(&grid_view); - let grid_view_delta_bytes = grid_view_delta.json_bytes(); - let revision = Revision::initial_revision(view_id, grid_view_delta_bytes); - grid_manager.create_grid_view(view_id, vec![revision]).await?; - - Ok(grid_rev_delta_bytes) -} - -#[async_trait] -impl RefCountValue for GridRevisionEditor { - async fn did_remove(&self) { - self.close().await; - } -} diff --git a/frontend/rust-lib/flowy-net/src/local_server/server.rs b/frontend/rust-lib/flowy-net/src/local_server/server.rs index 723190c532..15573b2c43 100644 --- a/frontend/rust-lib/flowy-net/src/local_server/server.rs +++ b/frontend/rust-lib/flowy-net/src/local_server/server.rs @@ -130,8 +130,8 @@ impl LocalWebSocketRunner { self.handle_folder_client_data(client_data, "".to_owned()).await?; Ok(()) } - WSChannel::Grid => { - todo!("Implement grid web socket channel") + WSChannel::Database => { + todo!("Implement database web socket channel") } } } diff --git a/frontend/rust-lib/flowy-revision/src/history/persistence.rs b/frontend/rust-lib/flowy-revision/src/history/persistence.rs index 9fad1e257b..c40ca02664 100644 --- a/frontend/rust-lib/flowy-revision/src/history/persistence.rs +++ b/frontend/rust-lib/flowy-revision/src/history/persistence.rs @@ -1,10 +1,10 @@ use crate::history::RevisionHistoryDiskCache; -use flowy_database::{ +use flowy_error::{internal_error, FlowyResult}; +use flowy_sqlite::{ prelude::*, schema::{rev_history, rev_history::dsl}, ConnectionPool, }; -use flowy_error::{internal_error, FlowyResult}; use revision_model::Revision; use std::sync::Arc; diff --git a/frontend/rust-lib/flowy-database/.env b/frontend/rust-lib/flowy-sqlite/.env similarity index 100% rename from frontend/rust-lib/flowy-database/.env rename to frontend/rust-lib/flowy-sqlite/.env diff --git a/frontend/rust-lib/flowy-sqlite/Cargo.toml b/frontend/rust-lib/flowy-sqlite/Cargo.toml new file mode 100644 index 0000000000..db366a3816 --- /dev/null +++ b/frontend/rust-lib/flowy-sqlite/Cargo.toml @@ -0,0 +1,23 @@ +[package] +name = "flowy-sqlite" +version = "0.1.0" +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +diesel = { version = "1.4.8", features = ["sqlite"] } +diesel_derives = { version = "1.4.1", features = ["sqlite"] } +diesel_migrations = { version = "1.4.0", features = ["sqlite"] } +tracing = { version = "0.1", features = ["log"] } +lazy_static = "1.4.0" + +r2d2 = "0.8.9" +libsqlite3-sys = { version = ">=0.8.0, <0.24.0", features = ["bundled"] } +scheduled-thread-pool = "0.2.5" +error-chain = "=0.12.0" +openssl = { version = "0.10.38", optional = true, features = ["vendored"] } +openssl-sys = { version = "0.9.69", optional = true, features = ["vendored"] } + +[features] +openssl_vendored = ["openssl", "openssl-sys"] diff --git a/frontend/rust-lib/flowy-database/diesel.toml b/frontend/rust-lib/flowy-sqlite/diesel.toml similarity index 100% rename from frontend/rust-lib/flowy-database/diesel.toml rename to frontend/rust-lib/flowy-sqlite/diesel.toml diff --git a/frontend/rust-lib/flowy-database/migrations/.gitkeep b/frontend/rust-lib/flowy-sqlite/migrations/.gitkeep similarity index 100% rename from frontend/rust-lib/flowy-database/migrations/.gitkeep rename to frontend/rust-lib/flowy-sqlite/migrations/.gitkeep diff --git a/frontend/rust-lib/flowy-database/migrations/2021-07-09-063045_user/down.sql b/frontend/rust-lib/flowy-sqlite/migrations/2021-07-09-063045_user/down.sql similarity index 100% rename from frontend/rust-lib/flowy-database/migrations/2021-07-09-063045_user/down.sql rename to frontend/rust-lib/flowy-sqlite/migrations/2021-07-09-063045_user/down.sql diff --git a/frontend/rust-lib/flowy-database/migrations/2021-07-09-063045_user/up.sql b/frontend/rust-lib/flowy-sqlite/migrations/2021-07-09-063045_user/up.sql similarity index 100% rename from frontend/rust-lib/flowy-database/migrations/2021-07-09-063045_user/up.sql rename to frontend/rust-lib/flowy-sqlite/migrations/2021-07-09-063045_user/up.sql diff --git a/frontend/rust-lib/flowy-database/migrations/2021-07-14-022241_user-add-col/down.sql b/frontend/rust-lib/flowy-sqlite/migrations/2021-07-14-022241_user-add-col/down.sql similarity index 100% rename from frontend/rust-lib/flowy-database/migrations/2021-07-14-022241_user-add-col/down.sql rename to frontend/rust-lib/flowy-sqlite/migrations/2021-07-14-022241_user-add-col/down.sql diff --git a/frontend/rust-lib/flowy-database/migrations/2021-07-14-022241_user-add-col/up.sql b/frontend/rust-lib/flowy-sqlite/migrations/2021-07-14-022241_user-add-col/up.sql similarity index 100% rename from frontend/rust-lib/flowy-database/migrations/2021-07-14-022241_user-add-col/up.sql rename to frontend/rust-lib/flowy-sqlite/migrations/2021-07-14-022241_user-add-col/up.sql diff --git a/frontend/rust-lib/flowy-database/migrations/2021-09-22-074638_revision/down.sql b/frontend/rust-lib/flowy-sqlite/migrations/2021-09-22-074638_revision/down.sql similarity index 100% rename from frontend/rust-lib/flowy-database/migrations/2021-09-22-074638_revision/down.sql rename to frontend/rust-lib/flowy-sqlite/migrations/2021-09-22-074638_revision/down.sql diff --git a/frontend/rust-lib/flowy-database/migrations/2021-09-22-074638_revision/up.sql b/frontend/rust-lib/flowy-sqlite/migrations/2021-09-22-074638_revision/up.sql similarity index 100% rename from frontend/rust-lib/flowy-database/migrations/2021-09-22-074638_revision/up.sql rename to frontend/rust-lib/flowy-sqlite/migrations/2021-09-22-074638_revision/up.sql diff --git a/frontend/rust-lib/flowy-database/migrations/2022-03-11-025536_grid/down.sql b/frontend/rust-lib/flowy-sqlite/migrations/2022-03-11-025536_grid/down.sql similarity index 100% rename from frontend/rust-lib/flowy-database/migrations/2022-03-11-025536_grid/down.sql rename to frontend/rust-lib/flowy-sqlite/migrations/2022-03-11-025536_grid/down.sql diff --git a/frontend/rust-lib/flowy-database/migrations/2022-03-11-025536_grid/up.sql b/frontend/rust-lib/flowy-sqlite/migrations/2022-03-11-025536_grid/up.sql similarity index 100% rename from frontend/rust-lib/flowy-database/migrations/2022-03-11-025536_grid/up.sql rename to frontend/rust-lib/flowy-sqlite/migrations/2022-03-11-025536_grid/up.sql diff --git a/frontend/rust-lib/flowy-database/migrations/2022-04-05-015536_grid-block-index/down.sql b/frontend/rust-lib/flowy-sqlite/migrations/2022-04-05-015536_grid-block-index/down.sql similarity index 100% rename from frontend/rust-lib/flowy-database/migrations/2022-04-05-015536_grid-block-index/down.sql rename to frontend/rust-lib/flowy-sqlite/migrations/2022-04-05-015536_grid-block-index/down.sql diff --git a/frontend/rust-lib/flowy-database/migrations/2022-04-05-015536_grid-block-index/up.sql b/frontend/rust-lib/flowy-sqlite/migrations/2022-04-05-015536_grid-block-index/up.sql similarity index 100% rename from frontend/rust-lib/flowy-database/migrations/2022-04-05-015536_grid-block-index/up.sql rename to frontend/rust-lib/flowy-sqlite/migrations/2022-04-05-015536_grid-block-index/up.sql diff --git a/frontend/rust-lib/flowy-database/migrations/2022-06-10-140131_revision-snapshot/down.sql b/frontend/rust-lib/flowy-sqlite/migrations/2022-06-10-140131_revision-snapshot/down.sql similarity index 100% rename from frontend/rust-lib/flowy-database/migrations/2022-06-10-140131_revision-snapshot/down.sql rename to frontend/rust-lib/flowy-sqlite/migrations/2022-06-10-140131_revision-snapshot/down.sql diff --git a/frontend/rust-lib/flowy-database/migrations/2022-06-10-140131_revision-snapshot/up.sql b/frontend/rust-lib/flowy-sqlite/migrations/2022-06-10-140131_revision-snapshot/up.sql similarity index 100% rename from frontend/rust-lib/flowy-database/migrations/2022-06-10-140131_revision-snapshot/up.sql rename to frontend/rust-lib/flowy-sqlite/migrations/2022-06-10-140131_revision-snapshot/up.sql diff --git a/frontend/rust-lib/flowy-database/migrations/2022-06-11-090029_view-add-col/down.sql b/frontend/rust-lib/flowy-sqlite/migrations/2022-06-11-090029_view-add-col/down.sql similarity index 100% rename from frontend/rust-lib/flowy-database/migrations/2022-06-11-090029_view-add-col/down.sql rename to frontend/rust-lib/flowy-sqlite/migrations/2022-06-11-090029_view-add-col/down.sql diff --git a/frontend/rust-lib/flowy-database/migrations/2022-06-11-090029_view-add-col/up.sql b/frontend/rust-lib/flowy-sqlite/migrations/2022-06-11-090029_view-add-col/up.sql similarity index 100% rename from frontend/rust-lib/flowy-database/migrations/2022-06-11-090029_view-add-col/up.sql rename to frontend/rust-lib/flowy-sqlite/migrations/2022-06-11-090029_view-add-col/up.sql diff --git a/frontend/rust-lib/flowy-database/migrations/2022-08-08-110959_user-add-icon/down.sql b/frontend/rust-lib/flowy-sqlite/migrations/2022-08-08-110959_user-add-icon/down.sql similarity index 100% rename from frontend/rust-lib/flowy-database/migrations/2022-08-08-110959_user-add-icon/down.sql rename to frontend/rust-lib/flowy-sqlite/migrations/2022-08-08-110959_user-add-icon/down.sql diff --git a/frontend/rust-lib/flowy-database/migrations/2022-08-08-110959_user-add-icon/up.sql b/frontend/rust-lib/flowy-sqlite/migrations/2022-08-08-110959_user-add-icon/up.sql similarity index 100% rename from frontend/rust-lib/flowy-database/migrations/2022-08-08-110959_user-add-icon/up.sql rename to frontend/rust-lib/flowy-sqlite/migrations/2022-08-08-110959_user-add-icon/up.sql diff --git a/frontend/rust-lib/flowy-database/migrations/2022-08-15-020544_grid-view/down.sql b/frontend/rust-lib/flowy-sqlite/migrations/2022-08-15-020544_grid-view/down.sql similarity index 100% rename from frontend/rust-lib/flowy-database/migrations/2022-08-15-020544_grid-view/down.sql rename to frontend/rust-lib/flowy-sqlite/migrations/2022-08-15-020544_grid-view/down.sql diff --git a/frontend/rust-lib/flowy-database/migrations/2022-08-15-020544_grid-view/up.sql b/frontend/rust-lib/flowy-sqlite/migrations/2022-08-15-020544_grid-view/up.sql similarity index 100% rename from frontend/rust-lib/flowy-database/migrations/2022-08-15-020544_grid-view/up.sql rename to frontend/rust-lib/flowy-sqlite/migrations/2022-08-15-020544_grid-view/up.sql diff --git a/frontend/rust-lib/flowy-database/migrations/2022-10-22-033122_document/down.sql b/frontend/rust-lib/flowy-sqlite/migrations/2022-10-22-033122_document/down.sql similarity index 100% rename from frontend/rust-lib/flowy-database/migrations/2022-10-22-033122_document/down.sql rename to frontend/rust-lib/flowy-sqlite/migrations/2022-10-22-033122_document/down.sql diff --git a/frontend/rust-lib/flowy-database/migrations/2022-10-22-033122_document/up.sql b/frontend/rust-lib/flowy-sqlite/migrations/2022-10-22-033122_document/up.sql similarity index 100% rename from frontend/rust-lib/flowy-database/migrations/2022-10-22-033122_document/up.sql rename to frontend/rust-lib/flowy-sqlite/migrations/2022-10-22-033122_document/up.sql diff --git a/frontend/rust-lib/flowy-database/migrations/2022-12-08-011428_grid_rev_snapshot/down.sql b/frontend/rust-lib/flowy-sqlite/migrations/2022-12-08-011428_grid_rev_snapshot/down.sql similarity index 100% rename from frontend/rust-lib/flowy-database/migrations/2022-12-08-011428_grid_rev_snapshot/down.sql rename to frontend/rust-lib/flowy-sqlite/migrations/2022-12-08-011428_grid_rev_snapshot/down.sql diff --git a/frontend/rust-lib/flowy-database/migrations/2022-12-08-011428_grid_rev_snapshot/up.sql b/frontend/rust-lib/flowy-sqlite/migrations/2022-12-08-011428_grid_rev_snapshot/up.sql similarity index 100% rename from frontend/rust-lib/flowy-database/migrations/2022-12-08-011428_grid_rev_snapshot/up.sql rename to frontend/rust-lib/flowy-sqlite/migrations/2022-12-08-011428_grid_rev_snapshot/up.sql diff --git a/frontend/rust-lib/flowy-database/migrations/2023-01-06-032859_folder_rev_snapshot/down.sql b/frontend/rust-lib/flowy-sqlite/migrations/2023-01-06-032859_folder_rev_snapshot/down.sql similarity index 100% rename from frontend/rust-lib/flowy-database/migrations/2023-01-06-032859_folder_rev_snapshot/down.sql rename to frontend/rust-lib/flowy-sqlite/migrations/2023-01-06-032859_folder_rev_snapshot/down.sql diff --git a/frontend/rust-lib/flowy-database/migrations/2023-01-06-032859_folder_rev_snapshot/up.sql b/frontend/rust-lib/flowy-sqlite/migrations/2023-01-06-032859_folder_rev_snapshot/up.sql similarity index 100% rename from frontend/rust-lib/flowy-database/migrations/2023-01-06-032859_folder_rev_snapshot/up.sql rename to frontend/rust-lib/flowy-sqlite/migrations/2023-01-06-032859_folder_rev_snapshot/up.sql diff --git a/frontend/rust-lib/flowy-database/migrations/2023-01-12-131717_document_rev_snapshot/down.sql b/frontend/rust-lib/flowy-sqlite/migrations/2023-01-12-131717_document_rev_snapshot/down.sql similarity index 100% rename from frontend/rust-lib/flowy-database/migrations/2023-01-12-131717_document_rev_snapshot/down.sql rename to frontend/rust-lib/flowy-sqlite/migrations/2023-01-12-131717_document_rev_snapshot/down.sql diff --git a/frontend/rust-lib/flowy-database/migrations/2023-01-12-131717_document_rev_snapshot/up.sql b/frontend/rust-lib/flowy-sqlite/migrations/2023-01-12-131717_document_rev_snapshot/up.sql similarity index 100% rename from frontend/rust-lib/flowy-database/migrations/2023-01-12-131717_document_rev_snapshot/up.sql rename to frontend/rust-lib/flowy-sqlite/migrations/2023-01-12-131717_document_rev_snapshot/up.sql diff --git a/frontend/rust-lib/flowy-database/src/kv/kv.rs b/frontend/rust-lib/flowy-sqlite/src/kv/kv.rs similarity index 100% rename from frontend/rust-lib/flowy-database/src/kv/kv.rs rename to frontend/rust-lib/flowy-sqlite/src/kv/kv.rs diff --git a/frontend/rust-lib/flowy-database/src/kv/mod.rs b/frontend/rust-lib/flowy-sqlite/src/kv/mod.rs similarity index 100% rename from frontend/rust-lib/flowy-database/src/kv/mod.rs rename to frontend/rust-lib/flowy-sqlite/src/kv/mod.rs diff --git a/frontend/rust-lib/flowy-database/src/kv/schema.rs b/frontend/rust-lib/flowy-sqlite/src/kv/schema.rs similarity index 100% rename from frontend/rust-lib/flowy-database/src/kv/schema.rs rename to frontend/rust-lib/flowy-sqlite/src/kv/schema.rs diff --git a/frontend/rust-lib/flowy-sqlite/src/lib.rs b/frontend/rust-lib/flowy-sqlite/src/lib.rs new file mode 100644 index 0000000000..62fd3d57b1 --- /dev/null +++ b/frontend/rust-lib/flowy-sqlite/src/lib.rs @@ -0,0 +1,55 @@ +pub use diesel::*; +pub use diesel_derives::*; +use diesel_migrations::*; +use std::{fmt::Debug, io, path::Path}; +pub mod kv; +mod sqlite; + +use crate::sqlite::PoolConfig; +pub use crate::sqlite::{ConnectionPool, DBConnection, Database}; + +pub mod schema; + +#[macro_use] +pub mod macros; + +#[macro_use] +extern crate diesel; +#[macro_use] +extern crate diesel_derives; +#[macro_use] +extern crate diesel_migrations; + +pub type Error = diesel::result::Error; +pub mod prelude { + pub use super::UserDatabaseConnection; + pub use crate::*; + pub use diesel::SqliteConnection; + pub use diesel::{query_dsl::*, BelongingToDsl, ExpressionMethods, RunQueryDsl}; +} + +embed_migrations!("../flowy-sqlite/migrations/"); +pub const DB_NAME: &str = "flowy-database.db"; + +pub fn init(storage_path: &str) -> Result { + if !Path::new(storage_path).exists() { + std::fs::create_dir_all(storage_path)?; + } + let pool_config = PoolConfig::default(); + let database = Database::new(storage_path, DB_NAME, pool_config).map_err(as_io_error)?; + let conn = database.get_connection().map_err(as_io_error)?; + embedded_migrations::run(&*conn).map_err(as_io_error)?; + Ok(database) +} + +fn as_io_error(e: E) -> io::Error +where + E: Into + Debug, +{ + let msg = format!("{:?}", e); + io::Error::new(io::ErrorKind::NotConnected, msg) +} + +pub trait UserDatabaseConnection: Send + Sync { + fn get_connection(&self) -> Result; +} diff --git a/frontend/rust-lib/flowy-sqlite/src/macros.rs b/frontend/rust-lib/flowy-sqlite/src/macros.rs new file mode 100644 index 0000000000..bee1958a9b --- /dev/null +++ b/frontend/rust-lib/flowy-sqlite/src/macros.rs @@ -0,0 +1,213 @@ +#[rustfmt::skip] +/* +diesel master support on_conflict on sqlite but not 1.4.7 version. Workaround for this + +match dsl::workspace_table + .filter(workspace_table::id.eq(table.id.clone())) + .count() + .get_result(conn) + .unwrap_or(0) +{ + 0 => diesel::insert_into(workspace_table::table).values(table) + .on_conflict(workspace_table::id) + .do_update() + .set(WorkspaceTableChangeset::from_table(workspace_table)) + .execute(conn)?, + _ => { + let changeset = WorkspaceTableChangeset::from_table(table); + let filter = dsl::workspace_table.filter(workspace_table::id.eq(changeset.id.clone())); + diesel::update(filter).set(changeset).execute(conn)?; + }, +} + +is equivalent to: + +match diesel_record_count!(workspace_table, &table.id, conn) { + 0 => diesel_insert_table!(workspace_table, table, conn), + _ => diesel_update_table!(workspace_table, WorkspaceTableChangeset::from_table(table), &*conn), +} +*/ + +#[macro_export] +macro_rules! diesel_insert_table { + ( + $table_name:ident, + $table:expr, + $connection:expr + ) => { + { + let _ = diesel::insert_into($table_name::table) + .values($table) + // .on_conflict($table_name::dsl::id) + // .do_update() + // .set(WorkspaceTableChangeset::from_table(workspace_table)) + .execute($connection)?; + } + }; +} + +#[macro_export] +macro_rules! diesel_record_count { + ( + $table_name:ident, + $id:expr, + $connection:expr + ) => { + $table_name::dsl::$table_name + .filter($table_name::dsl::id.eq($id.clone())) + .count() + .get_result($connection) + .unwrap_or(0); + }; +} + +#[macro_export] +macro_rules! diesel_revision_record_count { + ( + $table_name:expr, + $filter:expr, + $connection:expr + ) => { + $table_name + .filter($table_name::dsl::id.eq($id)) + .count() + .get_result($connection) + .unwrap_or(0); + }; +} + +#[macro_export] +macro_rules! diesel_update_table { + ( + $table_name:ident, + $changeset:expr, + $connection:expr + ) => {{ + let filter = $table_name::dsl::$table_name.filter($table_name::dsl::id.eq($changeset.id.clone())); + let affected_row = diesel::update(filter).set($changeset).execute($connection)?; + debug_assert_eq!(affected_row, 1); + }}; +} + +#[macro_export] +macro_rules! diesel_delete_table { + ( + $table_name:ident, + $id:ident, + $connection:ident + ) => { + let filter = $table_name::dsl::$table_name.filter($table_name::dsl::id.eq($id)); + let affected_row = diesel::delete(filter).execute(&*$connection)?; + debug_assert_eq!(affected_row, 1); + }; +} + +#[macro_export] +macro_rules! impl_sql_binary_expression { + ($target:ident) => { + impl diesel::serialize::ToSql for $target { + fn to_sql( + &self, + out: &mut diesel::serialize::Output, + ) -> diesel::serialize::Result { + let bytes: Vec = self.try_into().map_err(|e| format!("{:?}", e))?; + diesel::serialize::ToSql::::to_sql(&bytes, out) + } + } + // https://docs.diesel.rs/src/diesel/sqlite/types/mod.rs.html#30-33 + // impl FromSql for *const [u8] { + // fn from_sql(bytes: Option<&SqliteValue>) -> deserialize::Result { + // let bytes = not_none!(bytes).read_blob(); + // Ok(bytes as *const _) + // } + // } + impl diesel::deserialize::FromSql for $target + where + DB: diesel::backend::Backend, + *const [u8]: diesel::deserialize::FromSql, + { + fn from_sql(bytes: Option<&DB::RawValue>) -> diesel::deserialize::Result { + let slice_ptr = + <*const [u8] as diesel::deserialize::FromSql>::from_sql(bytes)?; + let bytes = unsafe { &*slice_ptr }; + + match $target::try_from(bytes) { + Ok(object) => Ok(object), + Err(e) => { + log::error!( + "{:?} deserialize from bytes fail. {:?}", + std::any::type_name::<$target>(), + e + ); + panic!(); + } + } + } + } + }; +} + +#[macro_export] +macro_rules! impl_sql_integer_expression { + ($target:ident) => { + impl diesel::serialize::ToSql for $target + where + DB: diesel::backend::Backend, + i32: diesel::serialize::ToSql, + { + fn to_sql( + &self, + out: &mut diesel::serialize::Output, + ) -> diesel::serialize::Result { + (*self as i32).to_sql(out) + } + } + + impl diesel::deserialize::FromSql for $target + where + DB: diesel::backend::Backend, + i32: diesel::deserialize::FromSql, + { + fn from_sql(bytes: Option<&DB::RawValue>) -> diesel::deserialize::Result { + let smaill_int = i32::from_sql(bytes)?; + Ok($target::from(smaill_int)) + } + } + }; +} + +#[macro_export] +macro_rules! impl_rev_state_map { + ($target:ident) => { + impl std::convert::From for $target { + fn from(value: i32) -> Self { + match value { + 0 => $target::Sync, + 1 => $target::Ack, + o => { + tracing::error!("Unsupported rev state {}, fallback to RevState::Local", o); + $target::Sync + } + } + } + } + + impl std::convert::From<$target> for RevisionState { + fn from(s: $target) -> Self { + match s { + $target::Sync => RevisionState::Sync, + $target::Ack => RevisionState::Ack, + } + } + } + + impl std::convert::From for $target { + fn from(s: RevisionState) -> Self { + match s { + RevisionState::Sync => $target::Sync, + RevisionState::Ack => $target::Ack, + } + } + } + }; +} diff --git a/frontend/rust-lib/flowy-database/src/schema.rs b/frontend/rust-lib/flowy-sqlite/src/schema.rs similarity index 100% rename from frontend/rust-lib/flowy-database/src/schema.rs rename to frontend/rust-lib/flowy-sqlite/src/schema.rs diff --git a/frontend/rust-lib/flowy-database/src/sqlite/conn_ext.rs b/frontend/rust-lib/flowy-sqlite/src/sqlite/conn_ext.rs similarity index 100% rename from frontend/rust-lib/flowy-database/src/sqlite/conn_ext.rs rename to frontend/rust-lib/flowy-sqlite/src/sqlite/conn_ext.rs diff --git a/frontend/rust-lib/flowy-database/src/sqlite/database.rs b/frontend/rust-lib/flowy-sqlite/src/sqlite/database.rs similarity index 100% rename from frontend/rust-lib/flowy-database/src/sqlite/database.rs rename to frontend/rust-lib/flowy-sqlite/src/sqlite/database.rs diff --git a/frontend/rust-lib/flowy-database/src/sqlite/errors.rs b/frontend/rust-lib/flowy-sqlite/src/sqlite/errors.rs similarity index 100% rename from frontend/rust-lib/flowy-database/src/sqlite/errors.rs rename to frontend/rust-lib/flowy-sqlite/src/sqlite/errors.rs diff --git a/frontend/rust-lib/flowy-database/src/sqlite/mod.rs b/frontend/rust-lib/flowy-sqlite/src/sqlite/mod.rs similarity index 100% rename from frontend/rust-lib/flowy-database/src/sqlite/mod.rs rename to frontend/rust-lib/flowy-sqlite/src/sqlite/mod.rs diff --git a/frontend/rust-lib/flowy-database/src/sqlite/pool.rs b/frontend/rust-lib/flowy-sqlite/src/sqlite/pool.rs similarity index 100% rename from frontend/rust-lib/flowy-database/src/sqlite/pool.rs rename to frontend/rust-lib/flowy-sqlite/src/sqlite/pool.rs diff --git a/frontend/rust-lib/flowy-database/src/sqlite/pragma.rs b/frontend/rust-lib/flowy-sqlite/src/sqlite/pragma.rs similarity index 100% rename from frontend/rust-lib/flowy-database/src/sqlite/pragma.rs rename to frontend/rust-lib/flowy-sqlite/src/sqlite/pragma.rs diff --git a/frontend/rust-lib/flowy-user/Cargo.toml b/frontend/rust-lib/flowy-user/Cargo.toml index d4473cb02a..049832d7f3 100644 --- a/frontend/rust-lib/flowy-user/Cargo.toml +++ b/frontend/rust-lib/flowy-user/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" [dependencies] flowy-derive = { path = "../flowy-derive" } -flowy-database = { path = "../flowy-database", optional = true } +flowy-sqlite = { path = "../flowy-sqlite", optional = true } flowy-error = { path = "../flowy-error", features = ["adaptor_database", "adaptor_dispatch", "adaptor_user"] } user-model = { path = "../../../shared-lib/user-model" } lib-infra = { path = "../../../shared-lib/lib-infra" } @@ -34,7 +34,7 @@ flowy-test = { path = "../flowy-test" } nanoid = "0.4.0" [features] -rev-sqlite = ["flowy-database"] +rev-sqlite = ["flowy-sqlite"] dart = ["flowy-codegen/dart", "flowy-notification/dart"] ts = ["flowy-codegen/ts", "flowy-notification/ts"] diff --git a/frontend/rust-lib/flowy-user/src/handlers/user_handler.rs b/frontend/rust-lib/flowy-user/src/handlers/user_handler.rs index f15b9e60c7..c1304e0563 100644 --- a/frontend/rust-lib/flowy-user/src/handlers/user_handler.rs +++ b/frontend/rust-lib/flowy-user/src/handlers/user_handler.rs @@ -2,7 +2,7 @@ use crate::entities::{ AppearanceSettingsPB, UpdateUserProfilePayloadPB, UserProfilePB, UserSettingPB, APPEARANCE_DEFAULT_THEME, }; use crate::{errors::FlowyError, services::UserSession}; -use flowy_database::kv::KV; +use flowy_sqlite::kv::KV; use lib_dispatch::prelude::*; use std::{convert::TryInto, sync::Arc}; use user_model::UpdateUserProfileParams; diff --git a/frontend/rust-lib/flowy-user/src/lib.rs b/frontend/rust-lib/flowy-user/src/lib.rs index 091b2a9030..27091e2ff3 100644 --- a/frontend/rust-lib/flowy-user/src/lib.rs +++ b/frontend/rust-lib/flowy-user/src/lib.rs @@ -7,7 +7,7 @@ pub mod services; // mod sql_tables; #[macro_use] -extern crate flowy_database; +extern crate flowy_sqlite; pub mod errors { pub use flowy_error::*; diff --git a/frontend/rust-lib/flowy-user/src/services/database.rs b/frontend/rust-lib/flowy-user/src/services/database.rs index b3a9529103..cc13b61e41 100644 --- a/frontend/rust-lib/flowy-user/src/services/database.rs +++ b/frontend/rust-lib/flowy-user/src/services/database.rs @@ -1,7 +1,7 @@ use crate::entities::UserProfilePB; -use flowy_database::ConnectionPool; -use flowy_database::{schema::user_table, DBConnection, Database}; use flowy_error::{ErrorCode, FlowyError}; +use flowy_sqlite::ConnectionPool; +use flowy_sqlite::{schema::user_table, DBConnection, Database}; use lazy_static::lazy_static; use parking_lot::RwLock; use std::path::PathBuf; @@ -41,7 +41,7 @@ impl UserDB { let dir = dir.to_str().unwrap().to_owned(); tracing::trace!("open user db {} at path: {}", user_id, dir); - let db = flowy_database::init(&dir).map_err(|e| { + let db = flowy_sqlite::init(&dir).map_err(|e| { tracing::error!("open user: {} db failed, {:?}", user_id, e); FlowyError::internal().context(e) })?; diff --git a/frontend/rust-lib/flowy-user/src/services/user_session.rs b/frontend/rust-lib/flowy-user/src/services/user_session.rs index dbc1904394..567f96006b 100644 --- a/frontend/rust-lib/flowy-user/src/services/user_session.rs +++ b/frontend/rust-lib/flowy-user/src/services/user_session.rs @@ -8,8 +8,8 @@ use crate::{ notifier::UserNotifier, }, }; -use flowy_database::ConnectionPool; -use flowy_database::{ +use flowy_sqlite::ConnectionPool; +use flowy_sqlite::{ kv::KV, query_dsl::*, schema::{user_table, user_table::dsl}, diff --git a/shared-lib/Cargo.lock b/shared-lib/Cargo.lock index ee9424ebf3..dd51972f7b 100644 --- a/shared-lib/Cargo.lock +++ b/shared-lib/Cargo.lock @@ -249,16 +249,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "flowy-error-code" -version = "0.1.0" -dependencies = [ - "http-error-code", - "serde", - "serde_repr", - "thiserror", -] - [[package]] name = "flowy-server-sync" version = "0.1.0" @@ -486,16 +476,6 @@ dependencies = [ "itoa", ] -[[package]] -name = "http-error-code" -version = "0.1.0" -source = "git+https://github.com/AppFlowy-IO/AppFlowy-Server?branch=refactor/appflowy_server#5e74d35e93efd6b92f501ee8f3081a23b9839108" -dependencies = [ - "serde", - "serde_repr", - "thiserror", -] - [[package]] name = "httparse" version = "1.5.1" diff --git a/shared-lib/grid-model/src/grid_block.rs b/shared-lib/grid-model/src/grid_block.rs index 92e066bd47..d496dfe35e 100644 --- a/shared-lib/grid-model/src/grid_block.rs +++ b/shared-lib/grid-model/src/grid_block.rs @@ -11,7 +11,7 @@ pub fn gen_row_id() -> String { pub const DEFAULT_ROW_HEIGHT: i32 = 42; #[derive(Debug, Clone, Default, Serialize, Deserialize)] -pub struct GridBlockRevision { +pub struct DatabaseBlockRevision { pub block_id: String, pub rows: Vec>, } diff --git a/shared-lib/grid-model/src/grid_rev.rs b/shared-lib/grid-model/src/grid_rev.rs index 88fe42839e..d9a09c8de4 100644 --- a/shared-lib/grid-model/src/grid_rev.rs +++ b/shared-lib/grid-model/src/grid_rev.rs @@ -1,4 +1,4 @@ -use crate::GridBlockRevision; +use crate::DatabaseBlockRevision; use bytes::Bytes; use indexmap::IndexMap; use nanoid::nanoid; @@ -19,13 +19,13 @@ pub fn gen_field_id() -> String { } #[derive(Debug, Clone, Default, Serialize, Deserialize)] -pub struct GridRevision { +pub struct DatabaseRevision { pub grid_id: String, pub fields: Vec>, pub blocks: Vec>, } -impl GridRevision { +impl DatabaseRevision { pub fn new(grid_id: &str) -> Self { Self { grid_id: grid_id.to_owned(), @@ -187,33 +187,33 @@ pub trait TypeOptionDataDeserializer { } #[derive(Clone, Default, Deserialize, Serialize)] -pub struct BuildGridContext { +pub struct BuildDatabaseContext { pub field_revs: Vec>, pub block_metas: Vec, - pub blocks: Vec, + pub blocks: Vec, // String in JSON format. It can be deserialized into [GridViewRevision] pub grid_view_revision_data: String, } -impl BuildGridContext { +impl BuildDatabaseContext { pub fn new() -> Self { Self::default() } } -impl std::convert::From for Bytes { - fn from(ctx: BuildGridContext) -> Self { +impl std::convert::From for Bytes { + fn from(ctx: BuildDatabaseContext) -> Self { let bytes = serde_json::to_vec(&ctx).unwrap_or_else(|_| vec![]); Bytes::from(bytes) } } -impl std::convert::TryFrom for BuildGridContext { +impl std::convert::TryFrom for BuildDatabaseContext { type Error = serde_json::Error; fn try_from(bytes: Bytes) -> Result { - let ctx: BuildGridContext = serde_json::from_slice(&bytes)?; + let ctx: BuildDatabaseContext = serde_json::from_slice(&bytes)?; Ok(ctx) } } diff --git a/shared-lib/grid-model/src/grid_view.rs b/shared-lib/grid-model/src/grid_view.rs index d404a5f08e..d1d0f6cc2b 100644 --- a/shared-lib/grid-model/src/grid_view.rs +++ b/shared-lib/grid-model/src/grid_view.rs @@ -11,7 +11,7 @@ pub fn gen_grid_view_id() -> String { #[derive(Debug, PartialEq, Eq, Hash, Clone, Serialize_repr, Deserialize_repr)] #[repr(u8)] pub enum LayoutRevision { - Table = 0, + Grid = 0, Board = 1, Calendar = 2, } @@ -25,12 +25,12 @@ impl ToString for LayoutRevision { impl std::default::Default for LayoutRevision { fn default() -> Self { - LayoutRevision::Table + LayoutRevision::Grid } } #[derive(Debug, Clone, Default, Serialize, Deserialize)] -pub struct GridViewRevision { +pub struct DatabaseViewRevision { pub view_id: String, pub grid_id: String, @@ -47,9 +47,9 @@ pub struct GridViewRevision { pub sorts: SortConfiguration, } -impl GridViewRevision { +impl DatabaseViewRevision { pub fn new(grid_id: String, view_id: String, layout: LayoutRevision) -> Self { - GridViewRevision { + DatabaseViewRevision { view_id, grid_id, layout, @@ -71,11 +71,11 @@ pub struct RowOrderRevision { #[cfg(test)] mod tests { - use crate::GridViewRevision; + use crate::DatabaseViewRevision; #[test] fn grid_view_revision_serde_test() { - let grid_view_revision = GridViewRevision { + let grid_view_revision = DatabaseViewRevision { view_id: "1".to_string(), grid_id: "1".to_string(), layout: Default::default(), diff --git a/shared-lib/lib-ws/src/msg.rs b/shared-lib/lib-ws/src/msg.rs index 33935ceaf8..f5695c77be 100644 --- a/shared-lib/lib-ws/src/msg.rs +++ b/shared-lib/lib-ws/src/msg.rs @@ -24,7 +24,7 @@ impl WebSocketRawMessage { pub enum WSChannel { Document = 0, Folder = 1, - Grid = 2, + Database = 2, } impl std::default::Default for WSChannel { @@ -38,7 +38,7 @@ impl ToString for WSChannel { match self { WSChannel::Document => "0".to_string(), WSChannel::Folder => "1".to_string(), - WSChannel::Grid => "2".to_string(), + WSChannel::Database => "2".to_string(), } } }