[rust]: extract workspace_infra from flowy_workspace

This commit is contained in:
appflowy 2021-11-07 23:23:16 +08:00
parent 65cdeec1dc
commit 52ca87662b
158 changed files with 743 additions and 1154 deletions

View File

@ -1,7 +1,11 @@
///
// Generated code. Do not modify.
// source: app_delete.proto
// source: errors.proto
//
// @dart = 2.12
// ignore_for_file: annotate_overrides,camel_case_types,unnecessary_const,non_constant_identifier_names,library_prefixes,unused_import,unused_shown_name,return_of_invalid_type,unnecessary_this,prefer_final_fields
import 'dart:core' as $core;
export 'errors.pbenum.dart';

View File

@ -0,0 +1,56 @@
///
// Generated code. Do not modify.
// source: errors.proto
//
// @dart = 2.12
// ignore_for_file: annotate_overrides,camel_case_types,unnecessary_const,non_constant_identifier_names,library_prefixes,unused_import,unused_shown_name,return_of_invalid_type,unnecessary_this,prefer_final_fields
// ignore_for_file: UNDEFINED_SHOWN_NAME
import 'dart:core' as $core;
import 'package:protobuf/protobuf.dart' as $pb;
class ErrorCode extends $pb.ProtobufEnum {
static const ErrorCode WorkspaceNameInvalid = ErrorCode._(0, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'WorkspaceNameInvalid');
static const ErrorCode WorkspaceIdInvalid = ErrorCode._(1, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'WorkspaceIdInvalid');
static const ErrorCode AppColorStyleInvalid = ErrorCode._(2, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'AppColorStyleInvalid');
static const ErrorCode WorkspaceDescTooLong = ErrorCode._(3, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'WorkspaceDescTooLong');
static const ErrorCode WorkspaceNameTooLong = ErrorCode._(4, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'WorkspaceNameTooLong');
static const ErrorCode AppIdInvalid = ErrorCode._(10, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'AppIdInvalid');
static const ErrorCode AppNameInvalid = ErrorCode._(11, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'AppNameInvalid');
static const ErrorCode ViewNameInvalid = ErrorCode._(20, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'ViewNameInvalid');
static const ErrorCode ViewThumbnailInvalid = ErrorCode._(21, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'ViewThumbnailInvalid');
static const ErrorCode ViewIdInvalid = ErrorCode._(22, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'ViewIdInvalid');
static const ErrorCode ViewDescTooLong = ErrorCode._(23, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'ViewDescTooLong');
static const ErrorCode ViewDataInvalid = ErrorCode._(24, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'ViewDataInvalid');
static const ErrorCode ViewNameTooLong = ErrorCode._(25, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'ViewNameTooLong');
static const ErrorCode UserUnauthorized = ErrorCode._(100, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'UserUnauthorized');
static const ErrorCode WsConnectError = ErrorCode._(200, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'WsConnectError');
static const ErrorCode InternalError = ErrorCode._(1000, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'InternalError');
static const ErrorCode RecordNotFound = ErrorCode._(1001, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'RecordNotFound');
static const $core.List<ErrorCode> values = <ErrorCode> [
WorkspaceNameInvalid,
WorkspaceIdInvalid,
AppColorStyleInvalid,
WorkspaceDescTooLong,
WorkspaceNameTooLong,
AppIdInvalid,
AppNameInvalid,
ViewNameInvalid,
ViewThumbnailInvalid,
ViewIdInvalid,
ViewDescTooLong,
ViewDataInvalid,
ViewNameTooLong,
UserUnauthorized,
WsConnectError,
InternalError,
RecordNotFound,
];
static final $core.Map<$core.int, ErrorCode> _byValue = $pb.ProtobufEnum.initByValue(values);
static ErrorCode? valueOf($core.int value) => _byValue[value];
const ErrorCode._($core.int v, $core.String n) : super(v, n);
}

View File

@ -0,0 +1,36 @@
///
// Generated code. Do not modify.
// source: errors.proto
//
// @dart = 2.12
// ignore_for_file: annotate_overrides,camel_case_types,unnecessary_const,non_constant_identifier_names,library_prefixes,unused_import,unused_shown_name,return_of_invalid_type,unnecessary_this,prefer_final_fields,deprecated_member_use_from_same_package
import 'dart:core' as $core;
import 'dart:convert' as $convert;
import 'dart:typed_data' as $typed_data;
@$core.Deprecated('Use errorCodeDescriptor instead')
const ErrorCode$json = const {
'1': 'ErrorCode',
'2': const [
const {'1': 'WorkspaceNameInvalid', '2': 0},
const {'1': 'WorkspaceIdInvalid', '2': 1},
const {'1': 'AppColorStyleInvalid', '2': 2},
const {'1': 'WorkspaceDescTooLong', '2': 3},
const {'1': 'WorkspaceNameTooLong', '2': 4},
const {'1': 'AppIdInvalid', '2': 10},
const {'1': 'AppNameInvalid', '2': 11},
const {'1': 'ViewNameInvalid', '2': 20},
const {'1': 'ViewThumbnailInvalid', '2': 21},
const {'1': 'ViewIdInvalid', '2': 22},
const {'1': 'ViewDescTooLong', '2': 23},
const {'1': 'ViewDataInvalid', '2': 24},
const {'1': 'ViewNameTooLong', '2': 25},
const {'1': 'UserUnauthorized', '2': 100},
const {'1': 'WsConnectError', '2': 200},
const {'1': 'InternalError', '2': 1000},
const {'1': 'RecordNotFound', '2': 1001},
],
};
/// Descriptor for `ErrorCode`. Decode as a `google.protobuf.EnumDescriptorProto`.
final $typed_data.Uint8List errorCodeDescriptor = $convert.base64Decode('CglFcnJvckNvZGUSGAoUV29ya3NwYWNlTmFtZUludmFsaWQQABIWChJXb3Jrc3BhY2VJZEludmFsaWQQARIYChRBcHBDb2xvclN0eWxlSW52YWxpZBACEhgKFFdvcmtzcGFjZURlc2NUb29Mb25nEAMSGAoUV29ya3NwYWNlTmFtZVRvb0xvbmcQBBIQCgxBcHBJZEludmFsaWQQChISCg5BcHBOYW1lSW52YWxpZBALEhMKD1ZpZXdOYW1lSW52YWxpZBAUEhgKFFZpZXdUaHVtYm5haWxJbnZhbGlkEBUSEQoNVmlld0lkSW52YWxpZBAWEhMKD1ZpZXdEZXNjVG9vTG9uZxAXEhMKD1ZpZXdEYXRhSW52YWxpZBAYEhMKD1ZpZXdOYW1lVG9vTG9uZxAZEhQKEFVzZXJVbmF1dGhvcml6ZWQQZBITCg5Xc0Nvbm5lY3RFcnJvchDIARISCg1JbnRlcm5hbEVycm9yEOgHEhMKDlJlY29yZE5vdEZvdW5kEOkH');

View File

@ -1,9 +1,9 @@
///
// Generated code. Do not modify.
// source: app_delete.proto
// source: errors.proto
//
// @dart = 2.12
// ignore_for_file: annotate_overrides,camel_case_types,unnecessary_const,non_constant_identifier_names,library_prefixes,unused_import,unused_shown_name,return_of_invalid_type,unnecessary_this,prefer_final_fields,deprecated_member_use_from_same_package
export 'app_delete.pb.dart';
export 'errors.pb.dart';

View File

@ -0,0 +1,14 @@
// Auto-generated, do not edit
export './view_update.pb.dart';
export './app_query.pb.dart';
export './workspace_delete.pb.dart';
export './errors.pb.dart';
export './workspace_update.pb.dart';
export './app_create.pb.dart';
export './workspace_query.pb.dart';
export './view_create.pb.dart';
export './workspace_user_detail.pb.dart';
export './workspace_create.pb.dart';
export './app_update.pb.dart';
export './view_query.pb.dart';
export './trash_create.pb.dart';

View File

@ -1,105 +0,0 @@
///
// Generated code. Do not modify.
// source: app_delete.proto
//
// @dart = 2.12
// ignore_for_file: annotate_overrides,camel_case_types,unnecessary_const,non_constant_identifier_names,library_prefixes,unused_import,unused_shown_name,return_of_invalid_type,unnecessary_this,prefer_final_fields
import 'dart:core' as $core;
import 'package:protobuf/protobuf.dart' as $pb;
class DeleteAppRequest extends $pb.GeneratedMessage {
static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'DeleteAppRequest', createEmptyInstance: create)
..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'appId')
..hasRequiredFields = false
;
DeleteAppRequest._() : super();
factory DeleteAppRequest({
$core.String? appId,
}) {
final _result = create();
if (appId != null) {
_result.appId = appId;
}
return _result;
}
factory DeleteAppRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
factory DeleteAppRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
@$core.Deprecated(
'Using this can add significant overhead to your binary. '
'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
'Will be removed in next major version')
DeleteAppRequest clone() => DeleteAppRequest()..mergeFromMessage(this);
@$core.Deprecated(
'Using this can add significant overhead to your binary. '
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
'Will be removed in next major version')
DeleteAppRequest copyWith(void Function(DeleteAppRequest) updates) => super.copyWith((message) => updates(message as DeleteAppRequest)) as DeleteAppRequest; // ignore: deprecated_member_use
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static DeleteAppRequest create() => DeleteAppRequest._();
DeleteAppRequest createEmptyInstance() => create();
static $pb.PbList<DeleteAppRequest> createRepeated() => $pb.PbList<DeleteAppRequest>();
@$core.pragma('dart2js:noInline')
static DeleteAppRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<DeleteAppRequest>(create);
static DeleteAppRequest? _defaultInstance;
@$pb.TagNumber(1)
$core.String get appId => $_getSZ(0);
@$pb.TagNumber(1)
set appId($core.String v) { $_setString(0, v); }
@$pb.TagNumber(1)
$core.bool hasAppId() => $_has(0);
@$pb.TagNumber(1)
void clearAppId() => clearField(1);
}
class DeleteAppParams extends $pb.GeneratedMessage {
static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'DeleteAppParams', createEmptyInstance: create)
..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'appId')
..hasRequiredFields = false
;
DeleteAppParams._() : super();
factory DeleteAppParams({
$core.String? appId,
}) {
final _result = create();
if (appId != null) {
_result.appId = appId;
}
return _result;
}
factory DeleteAppParams.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
factory DeleteAppParams.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
@$core.Deprecated(
'Using this can add significant overhead to your binary. '
'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
'Will be removed in next major version')
DeleteAppParams clone() => DeleteAppParams()..mergeFromMessage(this);
@$core.Deprecated(
'Using this can add significant overhead to your binary. '
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
'Will be removed in next major version')
DeleteAppParams copyWith(void Function(DeleteAppParams) updates) => super.copyWith((message) => updates(message as DeleteAppParams)) as DeleteAppParams; // ignore: deprecated_member_use
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static DeleteAppParams create() => DeleteAppParams._();
DeleteAppParams createEmptyInstance() => create();
static $pb.PbList<DeleteAppParams> createRepeated() => $pb.PbList<DeleteAppParams>();
@$core.pragma('dart2js:noInline')
static DeleteAppParams getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<DeleteAppParams>(create);
static DeleteAppParams? _defaultInstance;
@$pb.TagNumber(1)
$core.String get appId => $_getSZ(0);
@$pb.TagNumber(1)
set appId($core.String v) { $_setString(0, v); }
@$pb.TagNumber(1)
$core.bool hasAppId() => $_has(0);
@$pb.TagNumber(1)
void clearAppId() => clearField(1);
}

View File

@ -1,30 +0,0 @@
///
// Generated code. Do not modify.
// source: app_delete.proto
//
// @dart = 2.12
// ignore_for_file: annotate_overrides,camel_case_types,unnecessary_const,non_constant_identifier_names,library_prefixes,unused_import,unused_shown_name,return_of_invalid_type,unnecessary_this,prefer_final_fields,deprecated_member_use_from_same_package
import 'dart:core' as $core;
import 'dart:convert' as $convert;
import 'dart:typed_data' as $typed_data;
@$core.Deprecated('Use deleteAppRequestDescriptor instead')
const DeleteAppRequest$json = const {
'1': 'DeleteAppRequest',
'2': const [
const {'1': 'app_id', '3': 1, '4': 1, '5': 9, '10': 'appId'},
],
};
/// Descriptor for `DeleteAppRequest`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List deleteAppRequestDescriptor = $convert.base64Decode('ChBEZWxldGVBcHBSZXF1ZXN0EhUKBmFwcF9pZBgBIAEoCVIFYXBwSWQ=');
@$core.Deprecated('Use deleteAppParamsDescriptor instead')
const DeleteAppParams$json = const {
'1': 'DeleteAppParams',
'2': const [
const {'1': 'app_id', '3': 1, '4': 1, '5': 9, '10': 'appId'},
],
};
/// Descriptor for `DeleteAppParams`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List deleteAppParamsDescriptor = $convert.base64Decode('Cg9EZWxldGVBcHBQYXJhbXMSFQoGYXBwX2lkGAEgASgJUgVhcHBJZA==');

View File

@ -9,20 +9,16 @@ import 'dart:core' as $core;
import 'package:protobuf/protobuf.dart' as $pb;
import 'errors.pbenum.dart';
export 'errors.pbenum.dart';
class WorkspaceError extends $pb.GeneratedMessage {
static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'WorkspaceError', createEmptyInstance: create)
..e<ErrorCode>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'code', $pb.PbFieldType.OE, defaultOrMaker: ErrorCode.WorkspaceNameInvalid, valueOf: ErrorCode.valueOf, enumValues: ErrorCode.values)
..a<$core.int>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'code', $pb.PbFieldType.O3)
..aOS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'msg')
..hasRequiredFields = false
;
WorkspaceError._() : super();
factory WorkspaceError({
ErrorCode? code,
$core.int? code,
$core.String? msg,
}) {
final _result = create();
@ -56,9 +52,9 @@ class WorkspaceError extends $pb.GeneratedMessage {
static WorkspaceError? _defaultInstance;
@$pb.TagNumber(1)
ErrorCode get code => $_getN(0);
$core.int get code => $_getIZ(0);
@$pb.TagNumber(1)
set code(ErrorCode v) { setField(1, v); }
set code($core.int v) { $_setSignedInt32(0, v); }
@$pb.TagNumber(1)
$core.bool hasCode() => $_has(0);
@$pb.TagNumber(1)

View File

@ -5,48 +5,3 @@
// @dart = 2.12
// ignore_for_file: annotate_overrides,camel_case_types,unnecessary_const,non_constant_identifier_names,library_prefixes,unused_import,unused_shown_name,return_of_invalid_type,unnecessary_this,prefer_final_fields
// ignore_for_file: UNDEFINED_SHOWN_NAME
import 'dart:core' as $core;
import 'package:protobuf/protobuf.dart' as $pb;
class ErrorCode extends $pb.ProtobufEnum {
static const ErrorCode WorkspaceNameInvalid = ErrorCode._(0, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'WorkspaceNameInvalid');
static const ErrorCode WorkspaceIdInvalid = ErrorCode._(1, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'WorkspaceIdInvalid');
static const ErrorCode AppColorStyleInvalid = ErrorCode._(2, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'AppColorStyleInvalid');
static const ErrorCode WorkspaceDescInvalid = ErrorCode._(3, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'WorkspaceDescInvalid');
static const ErrorCode AppIdInvalid = ErrorCode._(10, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'AppIdInvalid');
static const ErrorCode AppNameInvalid = ErrorCode._(11, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'AppNameInvalid');
static const ErrorCode ViewNameInvalid = ErrorCode._(20, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'ViewNameInvalid');
static const ErrorCode ViewThumbnailInvalid = ErrorCode._(21, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'ViewThumbnailInvalid');
static const ErrorCode ViewIdInvalid = ErrorCode._(22, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'ViewIdInvalid');
static const ErrorCode ViewDescInvalid = ErrorCode._(23, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'ViewDescInvalid');
static const ErrorCode ViewDataInvalid = ErrorCode._(24, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'ViewDataInvalid');
static const ErrorCode UserUnauthorized = ErrorCode._(100, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'UserUnauthorized');
static const ErrorCode WsConnectError = ErrorCode._(200, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'WsConnectError');
static const ErrorCode InternalError = ErrorCode._(1000, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'InternalError');
static const ErrorCode RecordNotFound = ErrorCode._(1001, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'RecordNotFound');
static const $core.List<ErrorCode> values = <ErrorCode> [
WorkspaceNameInvalid,
WorkspaceIdInvalid,
AppColorStyleInvalid,
WorkspaceDescInvalid,
AppIdInvalid,
AppNameInvalid,
ViewNameInvalid,
ViewThumbnailInvalid,
ViewIdInvalid,
ViewDescInvalid,
ViewDataInvalid,
UserUnauthorized,
WsConnectError,
InternalError,
RecordNotFound,
];
static final $core.Map<$core.int, ErrorCode> _byValue = $pb.ProtobufEnum.initByValue(values);
static ErrorCode? valueOf($core.int value) => _byValue[value];
const ErrorCode._($core.int v, $core.String n) : super(v, n);
}

View File

@ -8,38 +8,14 @@
import 'dart:core' as $core;
import 'dart:convert' as $convert;
import 'dart:typed_data' as $typed_data;
@$core.Deprecated('Use errorCodeDescriptor instead')
const ErrorCode$json = const {
'1': 'ErrorCode',
'2': const [
const {'1': 'WorkspaceNameInvalid', '2': 0},
const {'1': 'WorkspaceIdInvalid', '2': 1},
const {'1': 'AppColorStyleInvalid', '2': 2},
const {'1': 'WorkspaceDescInvalid', '2': 3},
const {'1': 'AppIdInvalid', '2': 10},
const {'1': 'AppNameInvalid', '2': 11},
const {'1': 'ViewNameInvalid', '2': 20},
const {'1': 'ViewThumbnailInvalid', '2': 21},
const {'1': 'ViewIdInvalid', '2': 22},
const {'1': 'ViewDescInvalid', '2': 23},
const {'1': 'ViewDataInvalid', '2': 24},
const {'1': 'UserUnauthorized', '2': 100},
const {'1': 'WsConnectError', '2': 200},
const {'1': 'InternalError', '2': 1000},
const {'1': 'RecordNotFound', '2': 1001},
],
};
/// Descriptor for `ErrorCode`. Decode as a `google.protobuf.EnumDescriptorProto`.
final $typed_data.Uint8List errorCodeDescriptor = $convert.base64Decode('CglFcnJvckNvZGUSGAoUV29ya3NwYWNlTmFtZUludmFsaWQQABIWChJXb3Jrc3BhY2VJZEludmFsaWQQARIYChRBcHBDb2xvclN0eWxlSW52YWxpZBACEhgKFFdvcmtzcGFjZURlc2NJbnZhbGlkEAMSEAoMQXBwSWRJbnZhbGlkEAoSEgoOQXBwTmFtZUludmFsaWQQCxITCg9WaWV3TmFtZUludmFsaWQQFBIYChRWaWV3VGh1bWJuYWlsSW52YWxpZBAVEhEKDVZpZXdJZEludmFsaWQQFhITCg9WaWV3RGVzY0ludmFsaWQQFxITCg9WaWV3RGF0YUludmFsaWQQGBIUChBVc2VyVW5hdXRob3JpemVkEGQSEwoOV3NDb25uZWN0RXJyb3IQyAESEgoNSW50ZXJuYWxFcnJvchDoBxITCg5SZWNvcmROb3RGb3VuZBDpBw==');
@$core.Deprecated('Use workspaceErrorDescriptor instead')
const WorkspaceError$json = const {
'1': 'WorkspaceError',
'2': const [
const {'1': 'code', '3': 1, '4': 1, '5': 14, '6': '.ErrorCode', '10': 'code'},
const {'1': 'code', '3': 1, '4': 1, '5': 5, '10': 'code'},
const {'1': 'msg', '3': 2, '4': 1, '5': 9, '10': 'msg'},
],
};
/// Descriptor for `WorkspaceError`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List workspaceErrorDescriptor = $convert.base64Decode('Cg5Xb3Jrc3BhY2VFcnJvchIeCgRjb2RlGAEgASgOMgouRXJyb3JDb2RlUgRjb2RlEhAKA21zZxgCIAEoCVIDbXNn');
final $typed_data.Uint8List workspaceErrorDescriptor = $convert.base64Decode('Cg5Xb3Jrc3BhY2VFcnJvchISCgRjb2RlGAEgASgFUgRjb2RlEhAKA21zZxgCIAEoCVIDbXNn');

View File

@ -1,17 +1,4 @@
// Auto-generated, do not edit
export './view_update.pb.dart';
export './app_query.pb.dart';
export './workspace_delete.pb.dart';
export './observable.pb.dart';
export './errors.pb.dart';
export './workspace_update.pb.dart';
export './app_create.pb.dart';
export './workspace_query.pb.dart';
export './event.pb.dart';
export './view_create.pb.dart';
export './workspace_user_detail.pb.dart';
export './workspace_create.pb.dart';
export './app_update.pb.dart';
export './view_query.pb.dart';
export './trash_create.pb.dart';
export './app_delete.pb.dart';

View File

@ -61,7 +61,7 @@ byteorder = {version = "1.3.4"}
async-stream = "0.3.2"
flowy-user-infra = { path = "../rust-lib/flowy-user-infra" }
flowy-workspace = { path = "../rust-lib/flowy-workspace", default-features = false, features = ["backend_service"]}
flowy-workspace-infra = { path = "../rust-lib/flowy-workspace-infra"}
flowy-document = { path = "../rust-lib/flowy-document" }
flowy-ws = { path = "../rust-lib/flowy-ws" }
flowy-ot = { path = "../rust-lib/flowy-ot" }

View File

@ -104,7 +104,6 @@ fn user_scope() -> Scope {
)
.service(web::resource("/app")
.route(web::post().to(app::create_handler))
.route(web::delete().to(app::delete_handler))
.route(web::get().to(app::read_handler))
.route(web::patch().to(app::update_handler))
)

View File

@ -1,5 +1,5 @@
use chrono::Utc;
use flowy_workspace::backend_service::{App, RepeatedView, Trash, TrashType, View, ViewType};
use flowy_workspace_infra::protobuf::{App, RepeatedView, Trash, TrashType, View, ViewType};
use protobuf::ProtobufEnum;
pub(crate) const WORKSPACE_TABLE: &'static str = "workspace_table";

View File

@ -7,10 +7,10 @@ use crate::{
use crate::service::trash::read_trash_ids;
use chrono::Utc;
use flowy_net::errors::{invalid_params, ServerError};
use flowy_workspace::{
entities::{
app::parser::{AppDesc, AppName},
workspace::parser::WorkspaceId,
use flowy_workspace_infra::{
parser::{
app::{AppDesc, AppName},
workspace::WorkspaceId,
},
protobuf::{App, CreateAppParams, RepeatedView},
};

View File

@ -3,13 +3,13 @@ use actix_web::{
HttpResponse,
};
use flowy_net::errors::{invalid_params, ServerError};
use flowy_workspace::backend_service::{AppIdentifier, CreateAppParams, DeleteAppParams, UpdateAppParams};
use flowy_workspace_infra::protobuf::{AppIdentifier, CreateAppParams, UpdateAppParams};
use protobuf::Message;
use sqlx::PgPool;
use crate::service::{
app::{
app::{create_app, delete_app, read_app, update_app},
app::{create_app, read_app, update_app},
sql_builder::check_app_id,
},
user::LoggedUser,
@ -17,7 +17,7 @@ use crate::service::{
};
use anyhow::Context;
use flowy_net::response::FlowyResponse;
use flowy_workspace::entities::app::parser::{AppDesc, AppName};
use flowy_workspace_infra::parser::app::{AppDesc, AppName};
pub async fn create_handler(
payload: Payload,
@ -92,20 +92,20 @@ pub async fn update_handler(payload: Payload, pool: Data<PgPool>) -> Result<Http
Ok(FlowyResponse::success().into())
}
pub async fn delete_handler(payload: Payload, pool: Data<PgPool>) -> Result<HttpResponse, ServerError> {
let params: DeleteAppParams = parse_from_payload(payload).await?;
let app_id = check_app_id(params.app_id.to_owned())?;
let mut transaction = pool
.begin()
.await
.context("Failed to acquire a Postgres connection to delete app")?;
let _ = delete_app(&mut transaction, app_id).await?;
transaction
.commit()
.await
.context("Failed to commit SQL transaction to delete app.")?;
Ok(FlowyResponse::success().into())
}
// pub async fn delete_handler(payload: Payload, pool: Data<PgPool>) ->
// Result<HttpResponse, ServerError> { let params: DeleteAppParams =
// parse_from_payload(payload).await?; let app_id =
// check_app_id(params.app_id.to_owned())?; let mut transaction = pool
// .begin()
// .await
// .context("Failed to acquire a Postgres connection to delete app")?;
//
// let _ = delete_app(&mut transaction, app_id).await?;
//
// transaction
// .commit()
// .await
// .context("Failed to commit SQL transaction to delete app.")?;
//
// Ok(FlowyResponse::success().into())
// }

View File

@ -4,8 +4,8 @@ use crate::{
};
use chrono::Utc;
use flowy_net::errors::{invalid_params, ServerError};
use flowy_workspace::{
entities::app::parser::AppId,
use flowy_workspace_infra::{
parser::app::AppId,
protobuf::{App, ColorStyle},
};
use protobuf::Message;
@ -54,9 +54,7 @@ impl NewAppSqlBuilder {
}
pub fn color_style(mut self, color_style: ColorStyle) -> Self {
self.table.color_style = color_style
.write_to_bytes()
.unwrap_or(default_color_style());
self.table.color_style = color_style.write_to_bytes().unwrap_or(default_color_style());
self
}

View File

@ -13,7 +13,7 @@ use flowy_net::{
errors::{invalid_params, ServerError},
response::FlowyResponse,
};
use flowy_workspace::{entities::trash::parser::TrashId, protobuf::TrashIdentifiers};
use flowy_workspace_infra::{parser::trash::TrashId, protobuf::TrashIdentifiers};
use sqlx::PgPool;
use uuid::Uuid;

View File

@ -9,7 +9,7 @@ use crate::{
};
use ::protobuf::ProtobufEnum;
use flowy_net::errors::ServerError;
use flowy_workspace::backend_service::{RepeatedTrash, Trash, TrashType};
use flowy_workspace_infra::protobuf::{RepeatedTrash, Trash, TrashType};
use sqlx::{postgres::PgArguments, Postgres, Row};
use uuid::Uuid;

View File

@ -9,7 +9,7 @@ use crate::{
use flowy_document::services::doc::doc_initial_string;
use flowy_net::errors::ServerError;
use flowy_workspace::backend_service::{App, CreateViewParams, View, ViewType, Workspace};
use flowy_workspace_infra::protobuf::{App, CreateViewParams, View, ViewType, Workspace};
pub async fn create_default_workspace(
transaction: &mut DBTransaction<'_>,

View File

@ -13,8 +13,8 @@ use flowy_net::{
errors::{invalid_params, ServerError},
response::FlowyResponse,
};
use flowy_workspace::{
entities::view::parser::{ViewDesc, ViewName, ViewThumbnail},
use flowy_workspace_infra::{
parser::view::{ViewDesc, ViewName, ViewThumbnail},
protobuf::{CreateViewParams, QueryViewRequest, UpdateViewParams, ViewIdentifier},
};
use sqlx::PgPool;

View File

@ -4,8 +4,8 @@ use crate::{
};
use chrono::Utc;
use flowy_net::errors::{invalid_params, ServerError};
use flowy_workspace::{
entities::view::parser::ViewId,
use flowy_workspace_infra::{
parser::view::ViewId,
protobuf::{View, ViewType},
};
use protobuf::ProtobufEnum;

View File

@ -11,10 +11,10 @@ use crate::{
use chrono::Utc;
use flowy_document::protobuf::CreateDocParams;
use flowy_net::errors::{invalid_params, ServerError};
use flowy_workspace::{
entities::{
app::parser::AppId,
view::parser::{ViewDesc, ViewName, ViewThumbnail},
use flowy_workspace_infra::{
parser::{
app::AppId,
view::{ViewDesc, ViewName, ViewThumbnail},
},
protobuf::{CreateViewParams, RepeatedView, View},
};

View File

@ -18,8 +18,8 @@ use flowy_net::{
errors::{invalid_params, ServerError},
response::FlowyResponse,
};
use flowy_workspace::{
entities::workspace::parser::{WorkspaceDesc, WorkspaceName},
use flowy_workspace_infra::{
parser::workspace::{WorkspaceDesc, WorkspaceName},
protobuf::{CreateWorkspaceParams, DeleteWorkspaceParams, QueryWorkspaceParams, UpdateWorkspaceParams},
};
use sqlx::PgPool;

View File

@ -4,8 +4,8 @@ use crate::{
};
use chrono::Utc;
use flowy_net::errors::{invalid_params, ServerError};
use flowy_workspace::{
entities::workspace::parser::WorkspaceId,
use flowy_workspace_infra::{
parser::workspace::WorkspaceId,
protobuf::{RepeatedApp, Workspace},
};
use sqlx::postgres::PgArguments;
@ -58,10 +58,7 @@ impl NewWorkspaceBuilder {
}
}
pub(crate) fn make_workspace_from_table(
table: WorkspaceTable,
apps: Option<RepeatedApp>,
) -> Workspace {
pub(crate) fn make_workspace_from_table(table: WorkspaceTable, apps: Option<RepeatedApp>) -> Workspace {
let mut workspace = Workspace {
id: table.id.to_string(),
name: table.name,

View File

@ -6,8 +6,8 @@ use crate::{
};
use anyhow::Context;
use flowy_net::errors::{invalid_params, ServerError};
use flowy_workspace::{
entities::workspace::parser::WorkspaceId,
use flowy_workspace_infra::{
parser::workspace::WorkspaceId,
protobuf::{RepeatedApp, RepeatedWorkspace, Workspace},
};
use sqlx::{postgres::PgArguments, Postgres};

View File

@ -13,6 +13,7 @@ members = [
"flowy-database",
"flowy-infra",
"flowy-workspace",
"flowy-workspace-infra",
"flowy-dart-notify",
"flowy-document",
"flowy-ot",

View File

@ -15,8 +15,7 @@ pub fn category_from_str(type_str: &str) -> TypeCategory {
"HashMap" => TypeCategory::Map,
"u8" => TypeCategory::Bytes,
"String" => TypeCategory::Str,
"KeyValue"
| "QueryAppRequest"
"QueryAppRequest"
| "AppIdentifier"
| "CreateAppRequest"
| "ColorStyle"
@ -49,6 +48,7 @@ pub fn category_from_str(type_str: &str) -> TypeCategory {
| "CreateViewParams"
| "View"
| "RepeatedView"
| "KeyValue"
| "WorkspaceError"
| "WsError"
| "WsMessage"
@ -80,8 +80,8 @@ pub fn category_from_str(type_str: &str) -> TypeCategory {
=> TypeCategory::Protobuf,
"TrashType"
| "ViewType"
| "WorkspaceEvent"
| "ErrorCode"
| "WorkspaceEvent"
| "WorkspaceNotification"
| "WsModule"
| "RevType"

View File

@ -0,0 +1,17 @@
[package]
name = "flowy-workspace-infra"
version = "0.1.0"
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
flowy-derive = { path = "../flowy-derive" }
protobuf = {version = "2.18.0"}
bytes = "1.0"
unicode-segmentation = "1.7.1"
strum = "0.21"
strum_macros = "0.21"
derive_more = {version = "0.99", features = ["display"]}
log = "0.4.14"
flowy-document = { path = "../flowy-document" }

View File

@ -0,0 +1,3 @@
proto_crates = ["src/entities", "src/errors.rs"]
event_files = []

View File

@ -1,13 +1,12 @@
use crate::{
entities::{
app::parser::{AppColorStyle, AppName},
view::RepeatedView,
workspace::parser::WorkspaceId,
},
entities::view::RepeatedView,
errors::*,
impl_def_and_def_mut,
parser::{
app::{AppColorStyle, AppName},
workspace::WorkspaceId,
},
};
use flowy_derive::ProtoBuf;
use std::convert::TryInto;
@ -48,15 +47,12 @@ pub struct CreateAppParams {
}
impl TryInto<CreateAppParams> for CreateAppRequest {
type Error = WorkspaceError;
type Error = ErrorCode;
fn try_into(self) -> Result<CreateAppParams, Self::Error> {
let name = AppName::parse(self.name).map_err(|e| WorkspaceError::app_name().context(e))?;
let id = WorkspaceId::parse(self.workspace_id).map_err(|e| WorkspaceError::workspace_id().context(e))?;
let color_style = AppColorStyle::parse(self.color_style.theme_color.clone())
.map_err(|e| WorkspaceError::color_style().context(e))?;
let name = AppName::parse(self.name)?;
let id = WorkspaceId::parse(self.workspace_id)?;
let color_style = AppColorStyle::parse(self.color_style.theme_color.clone())?;
Ok(CreateAppParams {
workspace_id: id.0,

View File

@ -1,4 +1,4 @@
use crate::{entities::app::parser::AppId, errors::*};
use crate::{errors::ErrorCode, parser::app::AppId};
use flowy_derive::ProtoBuf;
use std::convert::TryInto;
@ -23,18 +23,17 @@ impl AppIdentifier {
}
impl TryInto<AppIdentifier> for QueryAppRequest {
type Error = WorkspaceError;
type Error = ErrorCode;
fn try_into(self) -> Result<AppIdentifier, Self::Error> {
debug_assert!(self.app_ids.len() == 1);
if self.app_ids.len() != 1 {
return Err(WorkspaceError::invalid_view_id().context("The len of app_ids should be equal to 1"));
log::error!("The len of app_ids should be equal to 1");
return Err(ErrorCode::AppIdInvalid);
}
let app_id = self.app_ids.first().unwrap().clone();
let app_id = AppId::parse(app_id)
.map_err(|e| WorkspaceError::invalid_app_id().context(e))?
.0;
let app_id = AppId::parse(app_id)?.0;
Ok(AppIdentifier { app_id })
}
}

View File

@ -1,9 +1,7 @@
use crate::{
entities::app::{
parser::{AppColorStyle, AppId, AppName},
ColorStyle,
},
errors::WorkspaceError,
entities::app::ColorStyle,
errors::ErrorCode,
parser::app::{AppColorStyle, AppId, AppName},
};
use flowy_derive::ProtoBuf;
use std::convert::TryInto;
@ -69,29 +67,19 @@ impl UpdateAppParams {
}
impl TryInto<UpdateAppParams> for UpdateAppRequest {
type Error = WorkspaceError;
type Error = ErrorCode;
fn try_into(self) -> Result<UpdateAppParams, Self::Error> {
let app_id = AppId::parse(self.app_id)
.map_err(|e| WorkspaceError::invalid_app_id().context(e))?
.0;
let app_id = AppId::parse(self.app_id)?.0;
let name = match self.name {
None => None,
Some(name) => Some(
AppName::parse(name)
.map_err(|e| WorkspaceError::workspace_name().context(e))?
.0,
),
Some(name) => Some(AppName::parse(name)?.0),
};
let color_style = match self.color_style {
None => None,
Some(color_style) => Some(
AppColorStyle::parse(color_style.theme_color.clone())
.map_err(|e| WorkspaceError::color_style().context(e))?
.into(),
),
Some(color_style) => Some(AppColorStyle::parse(color_style.theme_color.clone())?.into()),
};
Ok(UpdateAppParams {

View File

@ -0,0 +1,6 @@
mod app_create;
mod app_query;
mod app_update;
pub use app_create::*;
pub use app_query::*;
pub use app_update::*;

View File

@ -0,0 +1,4 @@
pub mod app;
pub mod trash;
pub mod view;
pub mod workspace;

View File

@ -0,0 +1,2 @@
mod trash_create;
pub use trash_create::*;

View File

@ -0,0 +1,7 @@
pub use view_create::*;
pub use view_query::*;
pub use view_update::*;
mod view_create;
mod view_query;
mod view_update;

View File

@ -1,11 +1,11 @@
use crate::{
entities::{
app::parser::AppId,
trash::{Trash, TrashType},
view::parser::*,
},
errors::WorkspaceError,
entities::trash::{Trash, TrashType},
errors::ErrorCode,
impl_def_and_def_mut,
parser::{
app::AppId,
view::{ViewName, ViewThumbnail},
},
};
use flowy_derive::{ProtoBuf, ProtoBuf_Enum};
use flowy_document::services::doc::doc_initial_string;
@ -87,24 +87,15 @@ impl CreateViewParams {
}
impl TryInto<CreateViewParams> for CreateViewRequest {
type Error = WorkspaceError;
type Error = ErrorCode;
fn try_into(self) -> Result<CreateViewParams, Self::Error> {
let name = ViewName::parse(self.name)
.map_err(|e| WorkspaceError::view_name().context(e))?
.0;
let belong_to_id = AppId::parse(self.belong_to_id)
.map_err(|e| WorkspaceError::invalid_app_id().context(e))?
.0;
let name = ViewName::parse(self.name)?.0;
let belong_to_id = AppId::parse(self.belong_to_id)?.0;
let thumbnail = match self.thumbnail {
None => "".to_string(),
Some(thumbnail) => {
ViewThumbnail::parse(thumbnail)
.map_err(|e| WorkspaceError::view_thumbnail().context(e))?
.0
},
Some(thumbnail) => ViewThumbnail::parse(thumbnail)?.0,
};
Ok(CreateViewParams::new(

View File

@ -1,4 +1,4 @@
use crate::{entities::view::parser::ViewId, errors::WorkspaceError};
use crate::{errors::ErrorCode, parser::view::ViewId};
use flowy_derive::ProtoBuf;
use flowy_document::entities::doc::DocIdentifier;
use std::convert::TryInto;
@ -24,17 +24,16 @@ impl std::convert::Into<DocIdentifier> for ViewIdentifier {
}
impl TryInto<ViewIdentifier> for QueryViewRequest {
type Error = WorkspaceError;
type Error = ErrorCode;
fn try_into(self) -> Result<ViewIdentifier, Self::Error> {
debug_assert!(self.view_ids.len() == 1);
if self.view_ids.len() != 1 {
return Err(WorkspaceError::invalid_view_id().context("The len of view_ids should be equal to 1"));
log::error!("The len of view_ids should be equal to 1");
return Err(ErrorCode::ViewIdInvalid);
}
let view_id = self.view_ids.first().unwrap().clone();
let view_id = ViewId::parse(view_id)
.map_err(|e| WorkspaceError::invalid_view_id().context(e))?
.0;
let view_id = ViewId::parse(view_id)?.0;
Ok(ViewIdentifier { view_id })
}
@ -47,14 +46,12 @@ pub struct ViewIdentifiers {
}
impl TryInto<ViewIdentifiers> for QueryViewRequest {
type Error = WorkspaceError;
type Error = ErrorCode;
fn try_into(self) -> Result<ViewIdentifiers, Self::Error> {
let mut view_ids = vec![];
for view_id in self.view_ids {
let view_id = ViewId::parse(view_id)
.map_err(|e| WorkspaceError::invalid_view_id().context(e))?
.0;
let view_id = ViewId::parse(view_id)?.0;
view_ids.push(view_id);
}

View File

@ -1,9 +1,8 @@
use crate::{
entities::view::parser::{ViewId, *},
errors::WorkspaceError,
errors::ErrorCode,
parser::view::{ViewDesc, ViewId, ViewName, ViewThumbnail},
};
use flowy_derive::ProtoBuf;
use std::convert::TryInto;
#[derive(Default, ProtoBuf)]
@ -56,38 +55,24 @@ impl UpdateViewParams {
}
impl TryInto<UpdateViewParams> for UpdateViewRequest {
type Error = WorkspaceError;
type Error = ErrorCode;
fn try_into(self) -> Result<UpdateViewParams, Self::Error> {
let view_id = ViewId::parse(self.view_id)
.map_err(|e| WorkspaceError::invalid_view_id().context(e))?
.0;
let view_id = ViewId::parse(self.view_id)?.0;
let name = match self.name {
None => None,
Some(name) => Some(
ViewName::parse(name)
.map_err(|e| WorkspaceError::view_name().context(e))?
.0,
),
Some(name) => Some(ViewName::parse(name)?.0),
};
let desc = match self.desc {
None => None,
Some(desc) => Some(
ViewDesc::parse(desc)
.map_err(|e| WorkspaceError::view_desc().context(e))?
.0,
),
Some(desc) => Some(ViewDesc::parse(desc)?.0),
};
let thumbnail = match self.thumbnail {
None => None,
Some(thumbnail) => Some(
ViewThumbnail::parse(thumbnail)
.map_err(|e| WorkspaceError::view_thumbnail().context(e))?
.0,
),
Some(thumbnail) => Some(ViewThumbnail::parse(thumbnail)?.0),
};
Ok(UpdateViewParams {

View File

@ -0,0 +1,19 @@
pub use workspace_create::*;
pub use workspace_delete::*;
pub use workspace_query::*;
pub use workspace_update::*;
pub use workspace_user_detail::*;
mod workspace_create;
mod workspace_delete;
mod workspace_query;
mod workspace_update;
mod workspace_user_detail;

View File

@ -1,7 +1,8 @@
use crate::{
entities::{app::RepeatedApp, workspace::parser::*},
entities::app::RepeatedApp,
errors::*,
impl_def_and_def_mut,
parser::workspace::{WorkspaceDesc, WorkspaceName},
};
use flowy_derive::ProtoBuf;
use std::convert::TryInto;
@ -25,11 +26,11 @@ pub struct CreateWorkspaceParams {
}
impl TryInto<CreateWorkspaceParams> for CreateWorkspaceRequest {
type Error = WorkspaceError;
type Error = ErrorCode;
fn try_into(self) -> Result<CreateWorkspaceParams, Self::Error> {
let name = WorkspaceName::parse(self.name).map_err(|e| WorkspaceError::workspace_name().context(e))?;
let desc = WorkspaceDesc::parse(self.desc).map_err(|e| WorkspaceError::workspace_desc().context(e))?;
let name = WorkspaceName::parse(self.name)?;
let desc = WorkspaceDesc::parse(self.desc)?;
Ok(CreateWorkspaceParams {
name: name.0,

View File

@ -1,4 +1,4 @@
use crate::{entities::workspace::parser::WorkspaceId, errors::WorkspaceError};
use crate::{errors::ErrorCode, parser::workspace::WorkspaceId};
use flowy_derive::ProtoBuf;
use std::convert::TryInto;
@ -15,12 +15,10 @@ pub struct DeleteWorkspaceParams {
}
impl TryInto<DeleteWorkspaceParams> for DeleteWorkspaceRequest {
type Error = WorkspaceError;
type Error = ErrorCode;
fn try_into(self) -> Result<DeleteWorkspaceParams, Self::Error> {
let workspace_id = WorkspaceId::parse(self.workspace_id)
.map_err(|e| WorkspaceError::workspace_id().context(e))?
.0;
let workspace_id = WorkspaceId::parse(self.workspace_id)?.0;
Ok(DeleteWorkspaceParams { workspace_id })
}

View File

@ -1,4 +1,4 @@
use crate::{entities::workspace::parser::*, errors::*};
use crate::{errors::*, parser::workspace::WorkspaceId};
use flowy_derive::ProtoBuf;
use std::convert::TryInto;
@ -40,16 +40,12 @@ impl QueryWorkspaceParams {
}
impl TryInto<QueryWorkspaceParams> for QueryWorkspaceRequest {
type Error = WorkspaceError;
type Error = ErrorCode;
fn try_into(self) -> Result<QueryWorkspaceParams, Self::Error> {
let workspace_id = match self.workspace_id {
None => None,
Some(workspace_id) => Some(
WorkspaceId::parse(workspace_id)
.map_err(|e| WorkspaceError::workspace_id().context(e))?
.0,
),
Some(workspace_id) => Some(WorkspaceId::parse(workspace_id)?.0),
};
Ok(QueryWorkspaceParams { workspace_id })

View File

@ -1,8 +1,9 @@
use std::convert::TryInto;
use crate::{
errors::*,
parser::workspace::{WorkspaceId, WorkspaceName},
};
use flowy_derive::ProtoBuf;
use crate::{entities::workspace::parser::*, errors::*};
use std::convert::TryInto;
#[derive(ProtoBuf, Default)]
pub struct UpdateWorkspaceRequest {
@ -29,19 +30,14 @@ pub struct UpdateWorkspaceParams {
}
impl TryInto<UpdateWorkspaceParams> for UpdateWorkspaceRequest {
type Error = WorkspaceError;
type Error = ErrorCode;
fn try_into(self) -> Result<UpdateWorkspaceParams, Self::Error> {
let name = match self.name {
None => None,
Some(name) => Some(
WorkspaceName::parse(name)
.map_err(|e| WorkspaceError::workspace_name().context(e))?
.0,
),
Some(name) => Some(WorkspaceName::parse(name)?.0),
};
let id = WorkspaceId::parse(self.id).map_err(|e| WorkspaceError::workspace_id().context(e))?;
let id = WorkspaceId::parse(self.id)?;
Ok(UpdateWorkspaceParams {
id: id.0,

View File

@ -0,0 +1,77 @@
use crate::protobuf::ErrorCode as ProtoBufErrorCode;
use derive_more::Display;
use flowy_derive::ProtoBuf_Enum;
use protobuf::ProtobufEnum;
use std::convert::{TryFrom, TryInto};
#[derive(Debug, Clone, ProtoBuf_Enum, Display, PartialEq, Eq)]
pub enum ErrorCode {
#[display(fmt = "Workspace name can not be empty or whitespace")]
WorkspaceNameInvalid = 0,
#[display(fmt = "Workspace id can not be empty or whitespace")]
WorkspaceIdInvalid = 1,
#[display(fmt = "Color style of the App is invalid")]
AppColorStyleInvalid = 2,
#[display(fmt = "Workspace desc is invalid")]
WorkspaceDescTooLong = 3,
#[display(fmt = "Workspace description too long")]
WorkspaceNameTooLong = 4,
#[display(fmt = "App id can not be empty or whitespace")]
AppIdInvalid = 10,
#[display(fmt = "App name can not be empty or whitespace")]
AppNameInvalid = 11,
#[display(fmt = "View name can not be empty or whitespace")]
ViewNameInvalid = 20,
#[display(fmt = "Thumbnail of the view is invalid")]
ViewThumbnailInvalid = 21,
#[display(fmt = "View id can not be empty or whitespace")]
ViewIdInvalid = 22,
#[display(fmt = "View desc too long")]
ViewDescTooLong = 23,
#[display(fmt = "View data is invalid")]
ViewDataInvalid = 24,
#[display(fmt = "View name too long")]
ViewNameTooLong = 25,
#[display(fmt = "User unauthorized")]
UserUnauthorized = 100,
#[display(fmt = "Workspace websocket error")]
WsConnectError = 200,
#[display(fmt = "Server error")]
InternalError = 1000,
#[display(fmt = "Record not found")]
RecordNotFound = 1001,
}
impl std::default::Default for ErrorCode {
fn default() -> Self { ErrorCode::InternalError }
}
impl ErrorCode {
pub fn value(&self) -> i32 {
let code: ProtoBufErrorCode = self.clone().try_into().unwrap();
code.value()
}
pub fn from_i32(value: i32) -> Self {
match ProtoBufErrorCode::from_i32(value) {
None => ErrorCode::InternalError,
Some(code) => ErrorCode::try_from(&code).unwrap(),
}
}
}

View File

@ -0,0 +1,6 @@
pub mod entities;
pub mod errors;
pub mod parser;
#[macro_use]
mod macros;
pub mod protobuf;

View File

@ -0,0 +1,30 @@
#[macro_export]
macro_rules! impl_def_and_def_mut {
($target:ident, $item: ident) => {
impl std::ops::Deref for $target {
type Target = Vec<$item>;
fn deref(&self) -> &Self::Target { &self.items }
}
impl std::ops::DerefMut for $target {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.items }
}
impl $target {
#[allow(dead_code)]
pub fn into_inner(&mut self) -> Vec<$item> { ::std::mem::replace(&mut self.items, vec![]) }
#[allow(dead_code)]
pub fn push(&mut self, item: $item) {
if self.items.contains(&item) {
log::error!("add duplicate item: {:?}", item);
return;
}
self.items.push(item);
}
pub fn first_or_crash(&self) -> &$item { self.items.first().unwrap() }
}
};
}

View File

@ -1,10 +1,12 @@
use crate::errors::ErrorCode;
#[derive(Debug)]
pub struct AppColorStyle {
pub theme_color: String,
}
impl AppColorStyle {
pub fn parse(theme_color: String) -> Result<AppColorStyle, String> {
pub fn parse(theme_color: String) -> Result<AppColorStyle, ErrorCode> {
// TODO: verify the color style format
Ok(AppColorStyle { theme_color })
}

Some files were not shown because too many files have changed in this diff Show More