config view

This commit is contained in:
appflowy 2021-07-19 22:44:37 +08:00
parent 55fad84590
commit b547e94273
63 changed files with 1908 additions and 361 deletions

View File

@ -147,8 +147,8 @@ class ColorStyle extends $pb.GeneratedMessage {
void clearThemeColor() => clearField(1); void clearThemeColor() => clearField(1);
} }
class AppDetail extends $pb.GeneratedMessage { class App extends $pb.GeneratedMessage {
static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'AppDetail', createEmptyInstance: create) static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'App', createEmptyInstance: create)
..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'id') ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'id')
..aOS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'workspaceId') ..aOS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'workspaceId')
..aOS(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'name') ..aOS(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'name')
@ -156,8 +156,8 @@ class AppDetail extends $pb.GeneratedMessage {
..hasRequiredFields = false ..hasRequiredFields = false
; ;
AppDetail._() : super(); App._() : super();
factory AppDetail({ factory App({
$core.String? id, $core.String? id,
$core.String? workspaceId, $core.String? workspaceId,
$core.String? name, $core.String? name,
@ -178,26 +178,26 @@ class AppDetail extends $pb.GeneratedMessage {
} }
return _result; return _result;
} }
factory AppDetail.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); factory App.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
factory AppDetail.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); factory App.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
@$core.Deprecated( @$core.Deprecated(
'Using this can add significant overhead to your binary. ' 'Using this can add significant overhead to your binary. '
'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
'Will be removed in next major version') 'Will be removed in next major version')
AppDetail clone() => AppDetail()..mergeFromMessage(this); App clone() => App()..mergeFromMessage(this);
@$core.Deprecated( @$core.Deprecated(
'Using this can add significant overhead to your binary. ' 'Using this can add significant overhead to your binary. '
'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
'Will be removed in next major version') 'Will be removed in next major version')
AppDetail copyWith(void Function(AppDetail) updates) => super.copyWith((message) => updates(message as AppDetail)) as AppDetail; // ignore: deprecated_member_use App copyWith(void Function(App) updates) => super.copyWith((message) => updates(message as App)) as App; // ignore: deprecated_member_use
$pb.BuilderInfo get info_ => _i; $pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline') @$core.pragma('dart2js:noInline')
static AppDetail create() => AppDetail._(); static App create() => App._();
AppDetail createEmptyInstance() => create(); App createEmptyInstance() => create();
static $pb.PbList<AppDetail> createRepeated() => $pb.PbList<AppDetail>(); static $pb.PbList<App> createRepeated() => $pb.PbList<App>();
@$core.pragma('dart2js:noInline') @$core.pragma('dart2js:noInline')
static AppDetail getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<AppDetail>(create); static App getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<App>(create);
static AppDetail? _defaultInstance; static App? _defaultInstance;
@$pb.TagNumber(1) @$pb.TagNumber(1)
$core.String get id => $_getSZ(0); $core.String get id => $_getSZ(0);

View File

@ -31,9 +31,9 @@ const ColorStyle$json = const {
/// Descriptor for `ColorStyle`. Decode as a `google.protobuf.DescriptorProto`. /// Descriptor for `ColorStyle`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List colorStyleDescriptor = $convert.base64Decode('CgpDb2xvclN0eWxlEh8KC3RoZW1lX2NvbG9yGAEgASgJUgp0aGVtZUNvbG9y'); final $typed_data.Uint8List colorStyleDescriptor = $convert.base64Decode('CgpDb2xvclN0eWxlEh8KC3RoZW1lX2NvbG9yGAEgASgJUgp0aGVtZUNvbG9y');
@$core.Deprecated('Use appDetailDescriptor instead') @$core.Deprecated('Use appDescriptor instead')
const AppDetail$json = const { const App$json = const {
'1': 'AppDetail', '1': 'App',
'2': const [ '2': const [
const {'1': 'id', '3': 1, '4': 1, '5': 9, '10': 'id'}, const {'1': 'id', '3': 1, '4': 1, '5': 9, '10': 'id'},
const {'1': 'workspace_id', '3': 2, '4': 1, '5': 9, '10': 'workspaceId'}, const {'1': 'workspace_id', '3': 2, '4': 1, '5': 9, '10': 'workspaceId'},
@ -42,5 +42,5 @@ const AppDetail$json = const {
], ],
}; };
/// Descriptor for `AppDetail`. Decode as a `google.protobuf.DescriptorProto`. /// Descriptor for `App`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List appDetailDescriptor = $convert.base64Decode('CglBcHBEZXRhaWwSDgoCaWQYASABKAlSAmlkEiEKDHdvcmtzcGFjZV9pZBgCIAEoCVILd29ya3NwYWNlSWQSEgoEbmFtZRgDIAEoCVIEbmFtZRISCgRkZXNjGAQgASgJUgRkZXNj'); final $typed_data.Uint8List appDescriptor = $convert.base64Decode('CgNBcHASDgoCaWQYASABKAlSAmlkEiEKDHdvcmtzcGFjZV9pZBgCIAEoCVILd29ya3NwYWNlSWQSEgoEbmFtZRgDIAEoCVIEbmFtZRISCgRkZXNjGAQgASgJUgRkZXNj');

View File

@ -14,11 +14,14 @@ class WorkspaceErrorCode extends $pb.ProtobufEnum {
static const WorkspaceErrorCode WorkspaceNameInvalid = WorkspaceErrorCode._(1, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'WorkspaceNameInvalid'); static const WorkspaceErrorCode WorkspaceNameInvalid = WorkspaceErrorCode._(1, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'WorkspaceNameInvalid');
static const WorkspaceErrorCode WorkspaceIdInvalid = WorkspaceErrorCode._(2, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'WorkspaceIdInvalid'); static const WorkspaceErrorCode WorkspaceIdInvalid = WorkspaceErrorCode._(2, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'WorkspaceIdInvalid');
static const WorkspaceErrorCode AppColorStyleInvalid = WorkspaceErrorCode._(3, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'AppColorStyleInvalid'); static const WorkspaceErrorCode AppColorStyleInvalid = WorkspaceErrorCode._(3, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'AppColorStyleInvalid');
static const WorkspaceErrorCode AppIdInvalid = WorkspaceErrorCode._(4, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'AppIdInvalid'); static const WorkspaceErrorCode AppIdInvalid = WorkspaceErrorCode._(10, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'AppIdInvalid');
static const WorkspaceErrorCode DatabaseConnectionFail = WorkspaceErrorCode._(5, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'DatabaseConnectionFail'); static const WorkspaceErrorCode AppNameInvalid = WorkspaceErrorCode._(11, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'AppNameInvalid');
static const WorkspaceErrorCode WorkspaceDatabaseError = WorkspaceErrorCode._(6, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'WorkspaceDatabaseError'); static const WorkspaceErrorCode ViewNameInvalid = WorkspaceErrorCode._(20, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'ViewNameInvalid');
static const WorkspaceErrorCode UserInternalError = WorkspaceErrorCode._(10, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'UserInternalError'); static const WorkspaceErrorCode ViewThumbnailName = WorkspaceErrorCode._(21, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'ViewThumbnailName');
static const WorkspaceErrorCode UserNotLoginYet = WorkspaceErrorCode._(11, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'UserNotLoginYet'); static const WorkspaceErrorCode DatabaseConnectionFail = WorkspaceErrorCode._(100, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'DatabaseConnectionFail');
static const WorkspaceErrorCode WorkspaceDatabaseError = WorkspaceErrorCode._(101, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'WorkspaceDatabaseError');
static const WorkspaceErrorCode UserInternalError = WorkspaceErrorCode._(102, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'UserInternalError');
static const WorkspaceErrorCode UserNotLoginYet = WorkspaceErrorCode._(103, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'UserNotLoginYet');
static const $core.List<WorkspaceErrorCode> values = <WorkspaceErrorCode> [ static const $core.List<WorkspaceErrorCode> values = <WorkspaceErrorCode> [
Unknown, Unknown,
@ -26,6 +29,9 @@ class WorkspaceErrorCode extends $pb.ProtobufEnum {
WorkspaceIdInvalid, WorkspaceIdInvalid,
AppColorStyleInvalid, AppColorStyleInvalid,
AppIdInvalid, AppIdInvalid,
AppNameInvalid,
ViewNameInvalid,
ViewThumbnailName,
DatabaseConnectionFail, DatabaseConnectionFail,
WorkspaceDatabaseError, WorkspaceDatabaseError,
UserInternalError, UserInternalError,

View File

@ -16,16 +16,19 @@ const WorkspaceErrorCode$json = const {
const {'1': 'WorkspaceNameInvalid', '2': 1}, const {'1': 'WorkspaceNameInvalid', '2': 1},
const {'1': 'WorkspaceIdInvalid', '2': 2}, const {'1': 'WorkspaceIdInvalid', '2': 2},
const {'1': 'AppColorStyleInvalid', '2': 3}, const {'1': 'AppColorStyleInvalid', '2': 3},
const {'1': 'AppIdInvalid', '2': 4}, const {'1': 'AppIdInvalid', '2': 10},
const {'1': 'DatabaseConnectionFail', '2': 5}, const {'1': 'AppNameInvalid', '2': 11},
const {'1': 'WorkspaceDatabaseError', '2': 6}, const {'1': 'ViewNameInvalid', '2': 20},
const {'1': 'UserInternalError', '2': 10}, const {'1': 'ViewThumbnailName', '2': 21},
const {'1': 'UserNotLoginYet', '2': 11}, const {'1': 'DatabaseConnectionFail', '2': 100},
const {'1': 'WorkspaceDatabaseError', '2': 101},
const {'1': 'UserInternalError', '2': 102},
const {'1': 'UserNotLoginYet', '2': 103},
], ],
}; };
/// Descriptor for `WorkspaceErrorCode`. Decode as a `google.protobuf.EnumDescriptorProto`. /// Descriptor for `WorkspaceErrorCode`. Decode as a `google.protobuf.EnumDescriptorProto`.
final $typed_data.Uint8List workspaceErrorCodeDescriptor = $convert.base64Decode('ChJXb3Jrc3BhY2VFcnJvckNvZGUSCwoHVW5rbm93bhAAEhgKFFdvcmtzcGFjZU5hbWVJbnZhbGlkEAESFgoSV29ya3NwYWNlSWRJbnZhbGlkEAISGAoUQXBwQ29sb3JTdHlsZUludmFsaWQQAxIQCgxBcHBJZEludmFsaWQQBBIaChZEYXRhYmFzZUNvbm5lY3Rpb25GYWlsEAUSGgoWV29ya3NwYWNlRGF0YWJhc2VFcnJvchAGEhUKEVVzZXJJbnRlcm5hbEVycm9yEAoSEwoPVXNlck5vdExvZ2luWWV0EAs='); final $typed_data.Uint8List workspaceErrorCodeDescriptor = $convert.base64Decode('ChJXb3Jrc3BhY2VFcnJvckNvZGUSCwoHVW5rbm93bhAAEhgKFFdvcmtzcGFjZU5hbWVJbnZhbGlkEAESFgoSV29ya3NwYWNlSWRJbnZhbGlkEAISGAoUQXBwQ29sb3JTdHlsZUludmFsaWQQAxIQCgxBcHBJZEludmFsaWQQChISCg5BcHBOYW1lSW52YWxpZBALEhMKD1ZpZXdOYW1lSW52YWxpZBAUEhUKEVZpZXdUaHVtYm5haWxOYW1lEBUSGgoWRGF0YWJhc2VDb25uZWN0aW9uRmFpbBBkEhoKFldvcmtzcGFjZURhdGFiYXNlRXJyb3IQZRIVChFVc2VySW50ZXJuYWxFcnJvchBmEhMKD1VzZXJOb3RMb2dpbllldBBn');
@$core.Deprecated('Use workspaceErrorDescriptor instead') @$core.Deprecated('Use workspaceErrorDescriptor instead')
const WorkspaceError$json = const { const WorkspaceError$json = const {
'1': 'WorkspaceError', '1': 'WorkspaceError',

View File

@ -13,11 +13,13 @@ class WorkspaceEvent extends $pb.ProtobufEnum {
static const WorkspaceEvent CreateWorkspace = WorkspaceEvent._(0, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'CreateWorkspace'); static const WorkspaceEvent CreateWorkspace = WorkspaceEvent._(0, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'CreateWorkspace');
static const WorkspaceEvent GetWorkspaceDetail = WorkspaceEvent._(1, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'GetWorkspaceDetail'); static const WorkspaceEvent GetWorkspaceDetail = WorkspaceEvent._(1, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'GetWorkspaceDetail');
static const WorkspaceEvent CreateApp = WorkspaceEvent._(101, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'CreateApp'); static const WorkspaceEvent CreateApp = WorkspaceEvent._(101, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'CreateApp');
static const WorkspaceEvent CreateView = WorkspaceEvent._(201, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'CreateView');
static const $core.List<WorkspaceEvent> values = <WorkspaceEvent> [ static const $core.List<WorkspaceEvent> values = <WorkspaceEvent> [
CreateWorkspace, CreateWorkspace,
GetWorkspaceDetail, GetWorkspaceDetail,
CreateApp, CreateApp,
CreateView,
]; ];
static final $core.Map<$core.int, WorkspaceEvent> _byValue = $pb.ProtobufEnum.initByValue(values); static final $core.Map<$core.int, WorkspaceEvent> _byValue = $pb.ProtobufEnum.initByValue(values);

View File

@ -15,8 +15,9 @@ const WorkspaceEvent$json = const {
const {'1': 'CreateWorkspace', '2': 0}, const {'1': 'CreateWorkspace', '2': 0},
const {'1': 'GetWorkspaceDetail', '2': 1}, const {'1': 'GetWorkspaceDetail', '2': 1},
const {'1': 'CreateApp', '2': 101}, const {'1': 'CreateApp', '2': 101},
const {'1': 'CreateView', '2': 201},
], ],
}; };
/// Descriptor for `WorkspaceEvent`. Decode as a `google.protobuf.EnumDescriptorProto`. /// Descriptor for `WorkspaceEvent`. Decode as a `google.protobuf.EnumDescriptorProto`.
final $typed_data.Uint8List workspaceEventDescriptor = $convert.base64Decode('Cg5Xb3Jrc3BhY2VFdmVudBITCg9DcmVhdGVXb3Jrc3BhY2UQABIWChJHZXRXb3Jrc3BhY2VEZXRhaWwQARINCglDcmVhdGVBcHAQZQ=='); final $typed_data.Uint8List workspaceEventDescriptor = $convert.base64Decode('Cg5Xb3Jrc3BhY2VFdmVudBITCg9DcmVhdGVXb3Jrc3BhY2UQABIWChJHZXRXb3Jrc3BhY2VEZXRhaWwQARINCglDcmVhdGVBcHAQZRIPCgpDcmVhdGVWaWV3EMkB');

View File

@ -3,6 +3,7 @@ export './errors.pb.dart';
export './workspace_update.pb.dart'; export './workspace_update.pb.dart';
export './app_create.pb.dart'; export './app_create.pb.dart';
export './event.pb.dart'; export './event.pb.dart';
export './view_create.pb.dart';
export './workspace_user_detail.pb.dart'; export './workspace_user_detail.pb.dart';
export './workspace_create.pb.dart'; export './workspace_create.pb.dart';
export './app_update.pb.dart'; export './app_update.pb.dart';

View File

@ -0,0 +1,234 @@
///
// Generated code. Do not modify.
// source: view_create.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;
import 'view_create.pbenum.dart';
export 'view_create.pbenum.dart';
enum CreateViewRequest_OneOfThumbnail {
thumbnail,
notSet
}
class CreateViewRequest extends $pb.GeneratedMessage {
static const $core.Map<$core.int, CreateViewRequest_OneOfThumbnail> _CreateViewRequest_OneOfThumbnailByTag = {
4 : CreateViewRequest_OneOfThumbnail.thumbnail,
0 : CreateViewRequest_OneOfThumbnail.notSet
};
static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'CreateViewRequest', createEmptyInstance: create)
..oo(0, [4])
..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'appId')
..aOS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'name')
..aOS(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'desc')
..aOS(4, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'thumbnail')
..e<ViewTypeIdentifier>(5, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'viewType', $pb.PbFieldType.OE, defaultOrMaker: ViewTypeIdentifier.Docs, valueOf: ViewTypeIdentifier.valueOf, enumValues: ViewTypeIdentifier.values)
..hasRequiredFields = false
;
CreateViewRequest._() : super();
factory CreateViewRequest({
$core.String? appId,
$core.String? name,
$core.String? desc,
$core.String? thumbnail,
ViewTypeIdentifier? viewType,
}) {
final _result = create();
if (appId != null) {
_result.appId = appId;
}
if (name != null) {
_result.name = name;
}
if (desc != null) {
_result.desc = desc;
}
if (thumbnail != null) {
_result.thumbnail = thumbnail;
}
if (viewType != null) {
_result.viewType = viewType;
}
return _result;
}
factory CreateViewRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
factory CreateViewRequest.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')
CreateViewRequest clone() => CreateViewRequest()..mergeFromMessage(this);
@$core.Deprecated(
'Using this can add significant overhead to your binary. '
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
'Will be removed in next major version')
CreateViewRequest copyWith(void Function(CreateViewRequest) updates) => super.copyWith((message) => updates(message as CreateViewRequest)) as CreateViewRequest; // ignore: deprecated_member_use
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static CreateViewRequest create() => CreateViewRequest._();
CreateViewRequest createEmptyInstance() => create();
static $pb.PbList<CreateViewRequest> createRepeated() => $pb.PbList<CreateViewRequest>();
@$core.pragma('dart2js:noInline')
static CreateViewRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<CreateViewRequest>(create);
static CreateViewRequest? _defaultInstance;
CreateViewRequest_OneOfThumbnail whichOneOfThumbnail() => _CreateViewRequest_OneOfThumbnailByTag[$_whichOneof(0)]!;
void clearOneOfThumbnail() => clearField($_whichOneof(0));
@$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);
@$pb.TagNumber(2)
$core.String get name => $_getSZ(1);
@$pb.TagNumber(2)
set name($core.String v) { $_setString(1, v); }
@$pb.TagNumber(2)
$core.bool hasName() => $_has(1);
@$pb.TagNumber(2)
void clearName() => clearField(2);
@$pb.TagNumber(3)
$core.String get desc => $_getSZ(2);
@$pb.TagNumber(3)
set desc($core.String v) { $_setString(2, v); }
@$pb.TagNumber(3)
$core.bool hasDesc() => $_has(2);
@$pb.TagNumber(3)
void clearDesc() => clearField(3);
@$pb.TagNumber(4)
$core.String get thumbnail => $_getSZ(3);
@$pb.TagNumber(4)
set thumbnail($core.String v) { $_setString(3, v); }
@$pb.TagNumber(4)
$core.bool hasThumbnail() => $_has(3);
@$pb.TagNumber(4)
void clearThumbnail() => clearField(4);
@$pb.TagNumber(5)
ViewTypeIdentifier get viewType => $_getN(4);
@$pb.TagNumber(5)
set viewType(ViewTypeIdentifier v) { setField(5, v); }
@$pb.TagNumber(5)
$core.bool hasViewType() => $_has(4);
@$pb.TagNumber(5)
void clearViewType() => clearField(5);
}
class View extends $pb.GeneratedMessage {
static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'View', createEmptyInstance: create)
..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'id')
..aOS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'appId')
..aOS(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'name')
..aOS(4, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'desc')
..e<ViewTypeIdentifier>(5, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'viewType', $pb.PbFieldType.OE, defaultOrMaker: ViewTypeIdentifier.Docs, valueOf: ViewTypeIdentifier.valueOf, enumValues: ViewTypeIdentifier.values)
..hasRequiredFields = false
;
View._() : super();
factory View({
$core.String? id,
$core.String? appId,
$core.String? name,
$core.String? desc,
ViewTypeIdentifier? viewType,
}) {
final _result = create();
if (id != null) {
_result.id = id;
}
if (appId != null) {
_result.appId = appId;
}
if (name != null) {
_result.name = name;
}
if (desc != null) {
_result.desc = desc;
}
if (viewType != null) {
_result.viewType = viewType;
}
return _result;
}
factory View.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
factory View.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')
View clone() => View()..mergeFromMessage(this);
@$core.Deprecated(
'Using this can add significant overhead to your binary. '
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
'Will be removed in next major version')
View copyWith(void Function(View) updates) => super.copyWith((message) => updates(message as View)) as View; // ignore: deprecated_member_use
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static View create() => View._();
View createEmptyInstance() => create();
static $pb.PbList<View> createRepeated() => $pb.PbList<View>();
@$core.pragma('dart2js:noInline')
static View getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<View>(create);
static View? _defaultInstance;
@$pb.TagNumber(1)
$core.String get id => $_getSZ(0);
@$pb.TagNumber(1)
set id($core.String v) { $_setString(0, v); }
@$pb.TagNumber(1)
$core.bool hasId() => $_has(0);
@$pb.TagNumber(1)
void clearId() => clearField(1);
@$pb.TagNumber(2)
$core.String get appId => $_getSZ(1);
@$pb.TagNumber(2)
set appId($core.String v) { $_setString(1, v); }
@$pb.TagNumber(2)
$core.bool hasAppId() => $_has(1);
@$pb.TagNumber(2)
void clearAppId() => clearField(2);
@$pb.TagNumber(3)
$core.String get name => $_getSZ(2);
@$pb.TagNumber(3)
set name($core.String v) { $_setString(2, v); }
@$pb.TagNumber(3)
$core.bool hasName() => $_has(2);
@$pb.TagNumber(3)
void clearName() => clearField(3);
@$pb.TagNumber(4)
$core.String get desc => $_getSZ(3);
@$pb.TagNumber(4)
set desc($core.String v) { $_setString(3, v); }
@$pb.TagNumber(4)
$core.bool hasDesc() => $_has(3);
@$pb.TagNumber(4)
void clearDesc() => clearField(4);
@$pb.TagNumber(5)
ViewTypeIdentifier get viewType => $_getN(4);
@$pb.TagNumber(5)
set viewType(ViewTypeIdentifier v) { setField(5, v); }
@$pb.TagNumber(5)
$core.bool hasViewType() => $_has(4);
@$pb.TagNumber(5)
void clearViewType() => clearField(5);
}

View File

@ -0,0 +1,24 @@
///
// Generated code. Do not modify.
// source: view_create.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 ViewTypeIdentifier extends $pb.ProtobufEnum {
static const ViewTypeIdentifier Docs = ViewTypeIdentifier._(0, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'Docs');
static const $core.List<ViewTypeIdentifier> values = <ViewTypeIdentifier> [
Docs,
];
static final $core.Map<$core.int, ViewTypeIdentifier> _byValue = $pb.ProtobufEnum.initByValue(values);
static ViewTypeIdentifier? valueOf($core.int value) => _byValue[value];
const ViewTypeIdentifier._($core.int v, $core.String n) : super(v, n);
}

View File

@ -0,0 +1,51 @@
///
// Generated code. Do not modify.
// source: view_create.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 viewTypeIdentifierDescriptor instead')
const ViewTypeIdentifier$json = const {
'1': 'ViewTypeIdentifier',
'2': const [
const {'1': 'Docs', '2': 0},
],
};
/// Descriptor for `ViewTypeIdentifier`. Decode as a `google.protobuf.EnumDescriptorProto`.
final $typed_data.Uint8List viewTypeIdentifierDescriptor = $convert.base64Decode('ChJWaWV3VHlwZUlkZW50aWZpZXISCAoERG9jcxAA');
@$core.Deprecated('Use createViewRequestDescriptor instead')
const CreateViewRequest$json = const {
'1': 'CreateViewRequest',
'2': const [
const {'1': 'app_id', '3': 1, '4': 1, '5': 9, '10': 'appId'},
const {'1': 'name', '3': 2, '4': 1, '5': 9, '10': 'name'},
const {'1': 'desc', '3': 3, '4': 1, '5': 9, '10': 'desc'},
const {'1': 'thumbnail', '3': 4, '4': 1, '5': 9, '9': 0, '10': 'thumbnail'},
const {'1': 'view_type', '3': 5, '4': 1, '5': 14, '6': '.ViewTypeIdentifier', '10': 'viewType'},
],
'8': const [
const {'1': 'one_of_thumbnail'},
],
};
/// Descriptor for `CreateViewRequest`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List createViewRequestDescriptor = $convert.base64Decode('ChFDcmVhdGVWaWV3UmVxdWVzdBIVCgZhcHBfaWQYASABKAlSBWFwcElkEhIKBG5hbWUYAiABKAlSBG5hbWUSEgoEZGVzYxgDIAEoCVIEZGVzYxIeCgl0aHVtYm5haWwYBCABKAlIAFIJdGh1bWJuYWlsEjAKCXZpZXdfdHlwZRgFIAEoDjITLlZpZXdUeXBlSWRlbnRpZmllclIIdmlld1R5cGVCEgoQb25lX29mX3RodW1ibmFpbA==');
@$core.Deprecated('Use viewDescriptor instead')
const View$json = const {
'1': 'View',
'2': const [
const {'1': 'id', '3': 1, '4': 1, '5': 9, '10': 'id'},
const {'1': 'app_id', '3': 2, '4': 1, '5': 9, '10': 'appId'},
const {'1': 'name', '3': 3, '4': 1, '5': 9, '10': 'name'},
const {'1': 'desc', '3': 4, '4': 1, '5': 9, '10': 'desc'},
const {'1': 'view_type', '3': 5, '4': 1, '5': 14, '6': '.ViewTypeIdentifier', '10': 'viewType'},
],
};
/// Descriptor for `View`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List viewDescriptor = $convert.base64Decode('CgRWaWV3Eg4KAmlkGAEgASgJUgJpZBIVCgZhcHBfaWQYAiABKAlSBWFwcElkEhIKBG5hbWUYAyABKAlSBG5hbWUSEgoEZGVzYxgEIAEoCVIEZGVzYxIwCgl2aWV3X3R5cGUYBSABKA4yEy5WaWV3VHlwZUlkZW50aWZpZXJSCHZpZXdUeXBl');

View File

@ -0,0 +1,9 @@
///
// Generated code. Do not modify.
// source: view_create.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 'view_create.pb.dart';

View File

@ -70,16 +70,16 @@ class CreateWorkspaceRequest extends $pb.GeneratedMessage {
void clearDesc() => clearField(2); void clearDesc() => clearField(2);
} }
class WorkspaceDetail extends $pb.GeneratedMessage { class Workspace extends $pb.GeneratedMessage {
static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'WorkspaceDetail', createEmptyInstance: create) static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'Workspace', createEmptyInstance: create)
..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'id') ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'id')
..aOS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'name') ..aOS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'name')
..aOS(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'desc') ..aOS(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'desc')
..hasRequiredFields = false ..hasRequiredFields = false
; ;
WorkspaceDetail._() : super(); Workspace._() : super();
factory WorkspaceDetail({ factory Workspace({
$core.String? id, $core.String? id,
$core.String? name, $core.String? name,
$core.String? desc, $core.String? desc,
@ -96,26 +96,26 @@ class WorkspaceDetail extends $pb.GeneratedMessage {
} }
return _result; return _result;
} }
factory WorkspaceDetail.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); factory Workspace.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
factory WorkspaceDetail.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); factory Workspace.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
@$core.Deprecated( @$core.Deprecated(
'Using this can add significant overhead to your binary. ' 'Using this can add significant overhead to your binary. '
'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
'Will be removed in next major version') 'Will be removed in next major version')
WorkspaceDetail clone() => WorkspaceDetail()..mergeFromMessage(this); Workspace clone() => Workspace()..mergeFromMessage(this);
@$core.Deprecated( @$core.Deprecated(
'Using this can add significant overhead to your binary. ' 'Using this can add significant overhead to your binary. '
'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
'Will be removed in next major version') 'Will be removed in next major version')
WorkspaceDetail copyWith(void Function(WorkspaceDetail) updates) => super.copyWith((message) => updates(message as WorkspaceDetail)) as WorkspaceDetail; // ignore: deprecated_member_use Workspace copyWith(void Function(Workspace) updates) => super.copyWith((message) => updates(message as Workspace)) as Workspace; // ignore: deprecated_member_use
$pb.BuilderInfo get info_ => _i; $pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline') @$core.pragma('dart2js:noInline')
static WorkspaceDetail create() => WorkspaceDetail._(); static Workspace create() => Workspace._();
WorkspaceDetail createEmptyInstance() => create(); Workspace createEmptyInstance() => create();
static $pb.PbList<WorkspaceDetail> createRepeated() => $pb.PbList<WorkspaceDetail>(); static $pb.PbList<Workspace> createRepeated() => $pb.PbList<Workspace>();
@$core.pragma('dart2js:noInline') @$core.pragma('dart2js:noInline')
static WorkspaceDetail getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<WorkspaceDetail>(create); static Workspace getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Workspace>(create);
static WorkspaceDetail? _defaultInstance; static Workspace? _defaultInstance;
@$pb.TagNumber(1) @$pb.TagNumber(1)
$core.String get id => $_getSZ(0); $core.String get id => $_getSZ(0);

View File

@ -19,9 +19,9 @@ const CreateWorkspaceRequest$json = const {
/// Descriptor for `CreateWorkspaceRequest`. Decode as a `google.protobuf.DescriptorProto`. /// Descriptor for `CreateWorkspaceRequest`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List createWorkspaceRequestDescriptor = $convert.base64Decode('ChZDcmVhdGVXb3Jrc3BhY2VSZXF1ZXN0EhIKBG5hbWUYASABKAlSBG5hbWUSEgoEZGVzYxgCIAEoCVIEZGVzYw=='); final $typed_data.Uint8List createWorkspaceRequestDescriptor = $convert.base64Decode('ChZDcmVhdGVXb3Jrc3BhY2VSZXF1ZXN0EhIKBG5hbWUYASABKAlSBG5hbWUSEgoEZGVzYxgCIAEoCVIEZGVzYw==');
@$core.Deprecated('Use workspaceDetailDescriptor instead') @$core.Deprecated('Use workspaceDescriptor instead')
const WorkspaceDetail$json = const { const Workspace$json = const {
'1': 'WorkspaceDetail', '1': 'Workspace',
'2': const [ '2': const [
const {'1': 'id', '3': 1, '4': 1, '5': 9, '10': 'id'}, const {'1': 'id', '3': 1, '4': 1, '5': 9, '10': 'id'},
const {'1': 'name', '3': 2, '4': 1, '5': 9, '10': 'name'}, const {'1': 'name', '3': 2, '4': 1, '5': 9, '10': 'name'},
@ -29,5 +29,5 @@ const WorkspaceDetail$json = const {
], ],
}; };
/// Descriptor for `WorkspaceDetail`. Decode as a `google.protobuf.DescriptorProto`. /// Descriptor for `Workspace`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List workspaceDetailDescriptor = $convert.base64Decode('Cg9Xb3Jrc3BhY2VEZXRhaWwSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSEgoEZGVzYxgDIAEoCVIEZGVzYw=='); final $typed_data.Uint8List workspaceDescriptor = $convert.base64Decode('CglXb3Jrc3BhY2USDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSEgoEZGVzYxgDIAEoCVIEZGVzYw==');

View File

@ -75,14 +75,14 @@ class UserWorkspace extends $pb.GeneratedMessage {
class UserWorkspaceDetail extends $pb.GeneratedMessage { class UserWorkspaceDetail extends $pb.GeneratedMessage {
static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'UserWorkspaceDetail', createEmptyInstance: create) static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'UserWorkspaceDetail', createEmptyInstance: create)
..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'owner') ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'owner')
..aOM<$0.WorkspaceDetail>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'workspace', subBuilder: $0.WorkspaceDetail.create) ..aOM<$0.Workspace>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'workspace', subBuilder: $0.Workspace.create)
..hasRequiredFields = false ..hasRequiredFields = false
; ;
UserWorkspaceDetail._() : super(); UserWorkspaceDetail._() : super();
factory UserWorkspaceDetail({ factory UserWorkspaceDetail({
$core.String? owner, $core.String? owner,
$0.WorkspaceDetail? workspace, $0.Workspace? workspace,
}) { }) {
final _result = create(); final _result = create();
if (owner != null) { if (owner != null) {
@ -124,14 +124,14 @@ class UserWorkspaceDetail extends $pb.GeneratedMessage {
void clearOwner() => clearField(1); void clearOwner() => clearField(1);
@$pb.TagNumber(2) @$pb.TagNumber(2)
$0.WorkspaceDetail get workspace => $_getN(1); $0.Workspace get workspace => $_getN(1);
@$pb.TagNumber(2) @$pb.TagNumber(2)
set workspace($0.WorkspaceDetail v) { setField(2, v); } set workspace($0.Workspace v) { setField(2, v); }
@$pb.TagNumber(2) @$pb.TagNumber(2)
$core.bool hasWorkspace() => $_has(1); $core.bool hasWorkspace() => $_has(1);
@$pb.TagNumber(2) @$pb.TagNumber(2)
void clearWorkspace() => clearField(2); void clearWorkspace() => clearField(2);
@$pb.TagNumber(2) @$pb.TagNumber(2)
$0.WorkspaceDetail ensureWorkspace() => $_ensure(1); $0.Workspace ensureWorkspace() => $_ensure(1);
} }

View File

@ -24,9 +24,9 @@ const UserWorkspaceDetail$json = const {
'1': 'UserWorkspaceDetail', '1': 'UserWorkspaceDetail',
'2': const [ '2': const [
const {'1': 'owner', '3': 1, '4': 1, '5': 9, '10': 'owner'}, const {'1': 'owner', '3': 1, '4': 1, '5': 9, '10': 'owner'},
const {'1': 'workspace', '3': 2, '4': 1, '5': 11, '6': '.WorkspaceDetail', '10': 'workspace'}, const {'1': 'workspace', '3': 2, '4': 1, '5': 11, '6': '.Workspace', '10': 'workspace'},
], ],
}; };
/// Descriptor for `UserWorkspaceDetail`. Decode as a `google.protobuf.DescriptorProto`. /// Descriptor for `UserWorkspaceDetail`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List userWorkspaceDetailDescriptor = $convert.base64Decode('ChNVc2VyV29ya3NwYWNlRGV0YWlsEhQKBW93bmVyGAEgASgJUgVvd25lchIuCgl3b3Jrc3BhY2UYAiABKAsyEC5Xb3Jrc3BhY2VEZXRhaWxSCXdvcmtzcGFjZQ=='); final $typed_data.Uint8List userWorkspaceDetailDescriptor = $convert.base64Decode('ChNVc2VyV29ya3NwYWNlRGV0YWlsEhQKBW93bmVyGAEgASgJUgVvd25lchIoCgl3b3Jrc3BhY2UYAiABKAsyCi5Xb3Jrc3BhY2VSCXdvcmtzcGFjZQ==');

View File

@ -1,2 +1,5 @@
-- This file should undo anything in `up.sql` -- This file should undo anything in `up.sql`
DROP TABLE user_table; DROP TABLE user_table;
DROP TABLE workspace_table;
DROP TABLE app_table;
DROP TABLE view_table;

View File

@ -6,3 +6,37 @@ CREATE TABLE user_table (
password TEXT NOT NULL DEFAULT '', password TEXT NOT NULL DEFAULT '',
email TEXT NOT NULL DEFAULT '' email TEXT NOT NULL DEFAULT ''
); );
CREATE TABLE workspace_table (
id TEXT NOT NULL PRIMARY KEY,
name TEXT NOT NULL DEFAULT '',
desc TEXT NOT NULL DEFAULT '',
modified_time BIGINT NOT NULL DEFAULT 0,
create_time BIGINT NOT NULL DEFAULT 0,
user_id TEXT NOT NULL DEFAULT '',
version BIGINT NOT NULL DEFAULT 0
);
CREATE TABLE app_table (
id TEXT NOT NULL PRIMARY KEY,
workspace_id TEXT NOT NULL DEFAULT '',
name TEXT NOT NULL DEFAULT '',
desc TEXT NOT NULL DEFAULT '',
color_style BLOB NOT NULL DEFAULT (x''),
last_view_id TEXT DEFAULT '',
modified_time BIGINT NOT NULL DEFAULT 0,
create_time BIGINT NOT NULL DEFAULT 0,
version BIGINT NOT NULL DEFAULT 0
);
CREATE TABLE view_table (
id TEXT NOT NULL PRIMARY KEY,
app_id TEXT NOT NULL DEFAULT '',
name TEXT NOT NULL DEFAULT '',
desc TEXT NOT NULL DEFAULT '',
modified_time BIGINT NOT NULL DEFAULT 0,
create_time BIGINT NOT NULL DEFAULT 0,
thumbnail TEXT NOT NULL DEFAULT '',
view_type INTEGER NOT NULL DEFAULT 0,
version BIGINT NOT NULL DEFAULT 0
);

View File

@ -1,4 +0,0 @@
-- This file should undo anything in `up.sql`
DROP TABLE workspace_table;
DROP TABLE app_table;
DROP TABLE view_table;

View File

@ -1,34 +0,0 @@
-- Your SQL goes here
CREATE TABLE workspace_table (
id TEXT NOT NULL PRIMARY KEY,
name TEXT NOT NULL DEFAULT '',
desc TEXT NOT NULL DEFAULT '',
modified_time BIGINT NOT NULL DEFAULT 0,
create_time BIGINT NOT NULL DEFAULT 0,
user_id TEXT NOT NULL DEFAULT '',
version BIGINT NOT NULL DEFAULT 0
);
CREATE TABLE app_table (
id TEXT NOT NULL PRIMARY KEY,
workspace_id TEXT NOT NULL DEFAULT '',
name TEXT NOT NULL DEFAULT '',
desc TEXT NOT NULL DEFAULT '',
color_style BLOB NOT NULL DEFAULT (x''),
last_view_id TEXT DEFAULT '',
modified_time BIGINT NOT NULL DEFAULT 0,
create_time BIGINT NOT NULL DEFAULT 0,
version BIGINT NOT NULL DEFAULT 0
);
CREATE TABLE view_table (
id TEXT NOT NULL PRIMARY KEY,
app_id TEXT NOT NULL DEFAULT '',
name TEXT NOT NULL DEFAULT '',
desc TEXT NOT NULL DEFAULT '',
modified_time BIGINT NOT NULL DEFAULT 0,
create_time BIGINT NOT NULL DEFAULT 0,
thumbnail TEXT NOT NULL DEFAULT '',
view_type INTEGER NOT NULL DEFAULT 0,
version BIGINT NOT NULL DEFAULT 0
);

View File

@ -18,13 +18,15 @@ pub fn category_from_str(type_str: &str) -> TypeCategory {
"KeyValue" "KeyValue"
| "CreateAppRequest" | "CreateAppRequest"
| "ColorStyle" | "ColorStyle"
| "AppDetail" | "App"
| "UpdateAppRequest" | "UpdateAppRequest"
| "UpdateWorkspaceRequest" | "UpdateWorkspaceRequest"
| "CreateWorkspaceRequest" | "CreateWorkspaceRequest"
| "WorkspaceDetail" | "Workspace"
| "UserWorkspace" | "UserWorkspace"
| "UserWorkspaceDetail" | "UserWorkspaceDetail"
| "CreateViewRequest"
| "View"
| "WorkspaceError" | "WorkspaceError"
| "FFIRequest" | "FFIRequest"
| "FFIResponse" | "FFIResponse"
@ -37,7 +39,8 @@ pub fn category_from_str(type_str: &str) -> TypeCategory {
| "SignInParams" | "SignInParams"
| "UserError" | "UserError"
=> TypeCategory::Protobuf, => TypeCategory::Protobuf,
"WorkspaceEvent" "ViewTypeIdentifier"
| "WorkspaceEvent"
| "WorkspaceErrorCode" | "WorkspaceErrorCode"
| "FFIStatusCode" | "FFIStatusCode"
| "UserStatus" | "UserStatus"

View File

@ -6,7 +6,7 @@ use flowy_user::{
sql_tables::UserTable, sql_tables::UserTable,
}; };
use flowy_workspace::{ use flowy_workspace::{
entities::workspace::{CreateWorkspaceRequest, WorkspaceDetail}, entities::workspace::{CreateWorkspaceRequest, Workspace},
errors::WorkspaceError, errors::WorkspaceError,
event::WorkspaceEvent::CreateWorkspace, event::WorkspaceEvent::CreateWorkspace,
}; };
@ -66,7 +66,7 @@ impl UserServer for FlowyServerMocker {
fut: Box::pin(async move { fut: Box::pin(async move {
let _ = EventDispatch::async_send(request) let _ = EventDispatch::async_send(request)
.await .await
.parse::<WorkspaceDetail, WorkspaceError>() .parse::<Workspace, WorkspaceError>()
.map_err(|e| { .map_err(|e| {
ErrorBuilder::new(UserErrorCode::CreateDefaultWorkspaceFailed) ErrorBuilder::new(UserErrorCode::CreateDefaultWorkspaceFailed)
.error(e) .error(e)

View File

@ -41,7 +41,7 @@ impl TryInto<CreateAppParams> for CreateAppRequest {
fn try_into(self) -> Result<CreateAppParams, Self::Error> { fn try_into(self) -> Result<CreateAppParams, Self::Error> {
let name = AppName::parse(self.name).map_err(|e| { let name = AppName::parse(self.name).map_err(|e| {
ErrorBuilder::new(WorkspaceErrorCode::WorkspaceNameInvalid) ErrorBuilder::new(WorkspaceErrorCode::AppNameInvalid)
.msg(e) .msg(e)
.build() .build()
})?; })?;
@ -68,7 +68,7 @@ impl TryInto<CreateAppParams> for CreateAppRequest {
} }
#[derive(ProtoBuf, Default, Debug)] #[derive(ProtoBuf, Default, Debug)]
pub struct AppDetail { pub struct App {
#[pb(index = 1)] #[pb(index = 1)]
pub id: String, pub id: String,

View File

@ -3,4 +3,4 @@ pub use app_update::*;
mod app_create; mod app_create;
mod app_update; mod app_update;
mod parser; pub mod parser;

View File

@ -1,2 +1,3 @@
pub mod app; pub mod app;
pub mod view;
pub mod workspace; pub mod workspace;

View File

@ -0,0 +1,4 @@
mod parser;
mod view_create;
pub use view_create::*;

View File

@ -0,0 +1,9 @@
mod view_desc;
mod view_name;
mod view_thumbnail;
mod view_type;
pub use view_desc::*;
pub use view_name::*;
pub use view_thumbnail::*;
pub use view_type::*;

View File

@ -0,0 +1,18 @@
use unicode_segmentation::UnicodeSegmentation;
#[derive(Debug)]
pub struct ViewDesc(pub String);
impl ViewDesc {
pub fn parse(s: String) -> Result<ViewDesc, String> {
if s.graphemes(true).count() > 1000 {
return Err(format!("View desc too long"));
}
Ok(Self(s))
}
}
impl AsRef<str> for ViewDesc {
fn as_ref(&self) -> &str { &self.0 }
}

View File

@ -0,0 +1,22 @@
use unicode_segmentation::UnicodeSegmentation;
#[derive(Debug)]
pub struct ViewName(pub String);
impl ViewName {
pub fn parse(s: String) -> Result<ViewName, String> {
if s.trim().is_empty() {
return Err(format!("View name can not be empty or whitespace"));
}
if s.graphemes(true).count() > 256 {
return Err(format!("View name too long"));
}
Ok(Self(s))
}
}
impl AsRef<str> for ViewName {
fn as_ref(&self) -> &str { &self.0 }
}

View File

@ -0,0 +1,20 @@
use unicode_segmentation::UnicodeSegmentation;
#[derive(Debug)]
pub struct ViewThumbnail(pub String);
impl ViewThumbnail {
pub fn parse(s: String) -> Result<ViewThumbnail, String> {
if s.trim().is_empty() {
return Err(format!("View thumbnail can not be empty or whitespace"));
}
// TODO: verify the thumbnail url is valid or not
Ok(Self(s))
}
}
impl AsRef<str> for ViewThumbnail {
fn as_ref(&self) -> &str { &self.0 }
}

View File

@ -0,0 +1,13 @@
use crate::{entities::view::ViewTypeIdentifier, sql_tables::view::ViewType};
use unicode_segmentation::UnicodeSegmentation;
#[derive(Debug)]
pub struct ViewTypeCheck(pub ViewType);
impl ViewTypeCheck {
pub fn parse(s: ViewTypeIdentifier) -> Result<ViewTypeCheck, String> {
match s {
ViewTypeIdentifier::Docs => Ok(Self(ViewType::Docs)),
}
}
}

View File

@ -0,0 +1,104 @@
use crate::{
entities::{app::parser::AppId, view::parser::*},
errors::{ErrorBuilder, WorkspaceError, WorkspaceErrorCode},
sql_tables::view::ViewType,
};
use flowy_derive::{ProtoBuf, ProtoBuf_Enum};
use std::convert::TryInto;
#[derive(Debug, ProtoBuf_Enum)]
pub enum ViewTypeIdentifier {
Docs = 0,
}
impl std::default::Default for ViewTypeIdentifier {
fn default() -> Self { ViewTypeIdentifier::Docs }
}
#[derive(Default, ProtoBuf)]
pub struct CreateViewRequest {
#[pb(index = 1)]
pub app_id: String,
#[pb(index = 2)]
pub name: String,
#[pb(index = 3)]
pub desc: String,
#[pb(index = 4, one_of)]
pub thumbnail: Option<String>,
#[pb(index = 5)]
pub view_type: ViewTypeIdentifier,
}
pub struct CreateViewParams {
pub app_id: String,
pub name: String,
pub desc: String,
pub thumbnail: String,
pub view_type: ViewType,
}
impl TryInto<CreateViewParams> for CreateViewRequest {
type Error = WorkspaceError;
fn try_into(self) -> Result<CreateViewParams, Self::Error> {
let name = ViewName::parse(self.name)
.map_err(|e| {
ErrorBuilder::new(WorkspaceErrorCode::ViewNameInvalid)
.msg(e)
.build()
})?
.0;
let app_id = AppId::parse(self.app_id)
.map_err(|e| {
ErrorBuilder::new(WorkspaceErrorCode::AppIdInvalid)
.msg(e)
.build()
})?
.0;
let thumbnail = match self.thumbnail {
None => "".to_string(),
Some(thumbnail) => {
ViewThumbnail::parse(thumbnail)
.map_err(|e| {
ErrorBuilder::new(WorkspaceErrorCode::ViewThumbnailName)
.msg(e)
.build()
})?
.0
},
};
let view_type = ViewTypeCheck::parse(self.view_type).unwrap().0;
Ok(CreateViewParams {
app_id,
name,
desc: self.desc,
thumbnail,
view_type,
})
}
}
#[derive(ProtoBuf, Default, Debug)]
pub struct View {
#[pb(index = 1)]
pub id: String,
#[pb(index = 2)]
pub app_id: String,
#[pb(index = 3)]
pub name: String,
#[pb(index = 4)]
pub desc: String,
#[pb(index = 5)]
pub view_type: ViewTypeIdentifier,
}

View File

@ -34,7 +34,7 @@ impl TryInto<CreateWorkspaceParams> for CreateWorkspaceRequest {
} }
#[derive(ProtoBuf, Default, Debug)] #[derive(ProtoBuf, Default, Debug)]
pub struct WorkspaceDetail { pub struct Workspace {
#[pb(index = 1)] #[pb(index = 1)]
pub id: String, pub id: String,

View File

@ -1,4 +1,4 @@
use crate::entities::workspace::WorkspaceDetail; use crate::entities::workspace::Workspace;
use flowy_derive::ProtoBuf; use flowy_derive::ProtoBuf;
#[derive(ProtoBuf, Default, Debug)] #[derive(ProtoBuf, Default, Debug)]
@ -16,5 +16,5 @@ pub struct UserWorkspaceDetail {
pub owner: String, pub owner: String,
#[pb(index = 2)] #[pb(index = 2)]
pub workspace: WorkspaceDetail, pub workspace: Workspace,
} }

View File

@ -36,19 +36,28 @@ pub enum WorkspaceErrorCode {
AppColorStyleInvalid = 3, AppColorStyleInvalid = 3,
#[display(fmt = "App id is invalid")] #[display(fmt = "App id is invalid")]
AppIdInvalid = 4, AppIdInvalid = 10,
#[display(fmt = "App name is invalid")]
AppNameInvalid = 11,
#[display(fmt = "View name is invalid")]
ViewNameInvalid = 20,
#[display(fmt = "Thumbnail of the view is invalid")]
ViewThumbnailName = 21,
#[display(fmt = "Get database connection failed")] #[display(fmt = "Get database connection failed")]
DatabaseConnectionFail = 5, DatabaseConnectionFail = 100,
#[display(fmt = "Database internal error")] #[display(fmt = "Database internal error")]
WorkspaceDatabaseError = 6, WorkspaceDatabaseError = 101,
#[display(fmt = "User internal error")] #[display(fmt = "User internal error")]
UserInternalError = 10, UserInternalError = 102,
#[display(fmt = "User not login yet")] #[display(fmt = "User not login yet")]
UserNotLoginYet = 11, UserNotLoginYet = 103,
} }
impl std::default::Default for WorkspaceErrorCode { impl std::default::Default for WorkspaceErrorCode {

View File

@ -13,6 +13,10 @@ pub enum WorkspaceEvent {
GetWorkspaceDetail = 1, GetWorkspaceDetail = 1,
#[display(fmt = "Create app")] #[display(fmt = "Create app")]
#[event(input = "CreateAppRequest", output = "AppDetail")] #[event(input = "CreateAppRequest", output = "App")]
CreateApp = 101, CreateApp = 101,
#[display(fmt = "Create view")]
#[event(input = "CreateViewRequest", output = "View")]
CreateView = 201,
} }

View File

@ -1,5 +1,5 @@
use crate::{ use crate::{
entities::app::{AppDetail, CreateAppParams, CreateAppRequest}, entities::app::{App, CreateAppParams, CreateAppRequest},
errors::WorkspaceError, errors::WorkspaceError,
services::AppController, services::AppController,
}; };
@ -9,7 +9,7 @@ use std::{convert::TryInto, sync::Arc};
pub async fn create_app( pub async fn create_app(
data: Data<CreateAppRequest>, data: Data<CreateAppRequest>,
controller: ModuleData<Arc<AppController>>, controller: ModuleData<Arc<AppController>>,
) -> ResponseResult<AppDetail, WorkspaceError> { ) -> ResponseResult<App, WorkspaceError> {
let params: CreateAppParams = data.into_inner().try_into()?; let params: CreateAppParams = data.into_inner().try_into()?;
let detail = controller.save_app(params)?; let detail = controller.save_app(params)?;
response_ok(detail) response_ok(detail)

View File

@ -1,5 +1,7 @@
mod app_handler; mod app_handler;
mod view_handler;
mod workspace_handler; mod workspace_handler;
pub use app_handler::*; pub use app_handler::*;
pub use view_handler::*;
pub use workspace_handler::*; pub use workspace_handler::*;

View File

@ -0,0 +1,16 @@
use crate::{
entities::view::{CreateViewParams, CreateViewRequest, View},
errors::WorkspaceError,
services::ViewController,
};
use flowy_dispatch::prelude::{response_ok, Data, ModuleData, ResponseResult};
use std::{convert::TryInto, sync::Arc};
pub async fn create_view(
data: Data<CreateViewRequest>,
controller: ModuleData<Arc<ViewController>>,
) -> ResponseResult<View, WorkspaceError> {
let params: CreateViewParams = data.into_inner().try_into()?;
let view = controller.save_view(params).await?;
response_ok(view)
}

View File

@ -4,7 +4,7 @@ use crate::{
CreateWorkspaceRequest, CreateWorkspaceRequest,
UserWorkspace, UserWorkspace,
UserWorkspaceDetail, UserWorkspaceDetail,
WorkspaceDetail, Workspace,
}, },
errors::WorkspaceError, errors::WorkspaceError,
services::WorkspaceController, services::WorkspaceController,
@ -15,7 +15,7 @@ use std::{convert::TryInto, sync::Arc};
pub async fn create_workspace( pub async fn create_workspace(
data: Data<CreateWorkspaceRequest>, data: Data<CreateWorkspaceRequest>,
controller: ModuleData<Arc<WorkspaceController>>, controller: ModuleData<Arc<WorkspaceController>>,
) -> ResponseResult<WorkspaceDetail, WorkspaceError> { ) -> ResponseResult<Workspace, WorkspaceError> {
let controller = controller.get_ref().clone(); let controller = controller.get_ref().clone();
let params: CreateWorkspaceParams = data.into_inner().try_into()?; let params: CreateWorkspaceParams = data.into_inner().try_into()?;
let detail = controller.save_workspace(params).await?; let detail = controller.save_workspace(params).await?;

View File

@ -9,25 +9,7 @@ macro_rules! impl_sql_binary_expression {
out: &mut diesel::serialize::Output<W, diesel::sqlite::Sqlite>, out: &mut diesel::serialize::Output<W, diesel::sqlite::Sqlite>,
) -> diesel::serialize::Result { ) -> diesel::serialize::Result {
let bytes: Vec<u8> = self.try_into().map_err(|e| format!("{:?}", e))?; let bytes: Vec<u8> = self.try_into().map_err(|e| format!("{:?}", e))?;
diesel::serialize::ToSql::< diesel::serialize::ToSql::<diesel::sql_types::Binary,diesel::sqlite::Sqlite,>::to_sql(&bytes, out)
diesel::sql_types::Binary,
diesel::sqlite::Sqlite,
>::to_sql(&bytes, out)
// match self.try_into() {
// Ok(bytes) => diesel::serialize::ToSql::<
// diesel::sql_types::Binary,
// diesel::sqlite::Sqlite,
// >::to_sql(&bytes, out),
// Err(e) => {
// log::error!(
// "{:?} serialize to bytes fail. {:?}",
// std::any::type_name::<$target>(),
// e
// );
// panic!();
// },
// }
} }
} }
// https://docs.diesel.rs/src/diesel/sqlite/types/mod.rs.html#30-33 // https://docs.diesel.rs/src/diesel/sqlite/types/mod.rs.html#30-33
@ -64,3 +46,37 @@ macro_rules! impl_sql_binary_expression {
} }
}; };
} }
#[macro_export]
macro_rules! impl_sql_integer_expression {
($target:ident) => {
use diesel::{
deserialize,
deserialize::FromSql,
serialize,
serialize::{Output, ToSql},
};
use std::io::Write;
impl<DB> ToSql<Integer, DB> for $target
where
DB: diesel::backend::Backend,
i32: ToSql<Integer, DB>,
{
fn to_sql<W: Write>(&self, out: &mut Output<W, DB>) -> serialize::Result {
(*self as i32).to_sql(out)
}
}
impl<DB> FromSql<Integer, DB> for $target
where
DB: diesel::backend::Backend,
i32: FromSql<Integer, DB>,
{
fn from_sql(bytes: Option<&DB::RawValue>) -> deserialize::Result<Self> {
let smaill_int = i32::from_sql(bytes)?;
Ok($target::from(smaill_int))
}
}
};
}

View File

@ -7,7 +7,7 @@ use crate::{
}; };
use flowy_database::DBConnection; use flowy_database::DBConnection;
use crate::{entities::workspace::UserWorkspace, handlers::*}; use crate::{entities::workspace::UserWorkspace, handlers::*, services::ViewController};
use std::sync::Arc; use std::sync::Arc;
pub trait WorkspaceUser: Send + Sync { pub trait WorkspaceUser: Send + Sync {
@ -19,12 +19,15 @@ pub trait WorkspaceUser: Send + Sync {
pub fn create(user: Arc<dyn WorkspaceUser>) -> Module { pub fn create(user: Arc<dyn WorkspaceUser>) -> Module {
let workspace_controller = Arc::new(WorkspaceController::new(user.clone())); let workspace_controller = Arc::new(WorkspaceController::new(user.clone()));
let app_controller = Arc::new(AppController::new(user.clone())); let app_controller = Arc::new(AppController::new(user.clone()));
let view_controller = Arc::new(ViewController::new(user.clone()));
Module::new() Module::new()
.name("Flowy-Workspace") .name("Flowy-Workspace")
.data(workspace_controller) .data(workspace_controller)
.data(app_controller) .data(app_controller)
.data(view_controller)
.event(WorkspaceEvent::CreateWorkspace, create_workspace) .event(WorkspaceEvent::CreateWorkspace, create_workspace)
.event(WorkspaceEvent::GetWorkspaceDetail, get_workspace_detail) .event(WorkspaceEvent::GetWorkspaceDetail, get_workspace_detail)
.event(WorkspaceEvent::CreateApp, create_app) .event(WorkspaceEvent::CreateApp, create_app)
.event(WorkspaceEvent::CreateView, create_view)
} }

View File

@ -483,7 +483,7 @@ impl ::protobuf::reflect::ProtobufValue for ColorStyle {
} }
#[derive(PartialEq,Clone,Default)] #[derive(PartialEq,Clone,Default)]
pub struct AppDetail { pub struct App {
// message fields // message fields
pub id: ::std::string::String, pub id: ::std::string::String,
pub workspace_id: ::std::string::String, pub workspace_id: ::std::string::String,
@ -494,14 +494,14 @@ pub struct AppDetail {
pub cached_size: ::protobuf::CachedSize, pub cached_size: ::protobuf::CachedSize,
} }
impl<'a> ::std::default::Default for &'a AppDetail { impl<'a> ::std::default::Default for &'a App {
fn default() -> &'a AppDetail { fn default() -> &'a App {
<AppDetail as ::protobuf::Message>::default_instance() <App as ::protobuf::Message>::default_instance()
} }
} }
impl AppDetail { impl App {
pub fn new() -> AppDetail { pub fn new() -> App {
::std::default::Default::default() ::std::default::Default::default()
} }
@ -610,7 +610,7 @@ impl AppDetail {
} }
} }
impl ::protobuf::Message for AppDetail { impl ::protobuf::Message for App {
fn is_initialized(&self) -> bool { fn is_initialized(&self) -> bool {
true true
} }
@ -703,8 +703,8 @@ impl ::protobuf::Message for AppDetail {
Self::descriptor_static() Self::descriptor_static()
} }
fn new() -> AppDetail { fn new() -> App {
AppDetail::new() App::new()
} }
fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor { fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
@ -713,39 +713,39 @@ impl ::protobuf::Message for AppDetail {
let mut fields = ::std::vec::Vec::new(); let mut fields = ::std::vec::Vec::new();
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>( fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
"id", "id",
|m: &AppDetail| { &m.id }, |m: &App| { &m.id },
|m: &mut AppDetail| { &mut m.id }, |m: &mut App| { &mut m.id },
)); ));
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>( fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
"workspace_id", "workspace_id",
|m: &AppDetail| { &m.workspace_id }, |m: &App| { &m.workspace_id },
|m: &mut AppDetail| { &mut m.workspace_id }, |m: &mut App| { &mut m.workspace_id },
)); ));
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>( fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
"name", "name",
|m: &AppDetail| { &m.name }, |m: &App| { &m.name },
|m: &mut AppDetail| { &mut m.name }, |m: &mut App| { &mut m.name },
)); ));
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>( fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
"desc", "desc",
|m: &AppDetail| { &m.desc }, |m: &App| { &m.desc },
|m: &mut AppDetail| { &mut m.desc }, |m: &mut App| { &mut m.desc },
)); ));
::protobuf::reflect::MessageDescriptor::new_pb_name::<AppDetail>( ::protobuf::reflect::MessageDescriptor::new_pb_name::<App>(
"AppDetail", "App",
fields, fields,
file_descriptor_proto() file_descriptor_proto()
) )
}) })
} }
fn default_instance() -> &'static AppDetail { fn default_instance() -> &'static App {
static instance: ::protobuf::rt::LazyV2<AppDetail> = ::protobuf::rt::LazyV2::INIT; static instance: ::protobuf::rt::LazyV2<App> = ::protobuf::rt::LazyV2::INIT;
instance.get(AppDetail::new) instance.get(App::new)
} }
} }
impl ::protobuf::Clear for AppDetail { impl ::protobuf::Clear for App {
fn clear(&mut self) { fn clear(&mut self) {
self.id.clear(); self.id.clear();
self.workspace_id.clear(); self.workspace_id.clear();
@ -755,13 +755,13 @@ impl ::protobuf::Clear for AppDetail {
} }
} }
impl ::std::fmt::Debug for AppDetail { impl ::std::fmt::Debug for App {
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
::protobuf::text_format::fmt(self, f) ::protobuf::text_format::fmt(self, f)
} }
} }
impl ::protobuf::reflect::ProtobufValue for AppDetail { impl ::protobuf::reflect::ProtobufValue for App {
fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef { fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
::protobuf::reflect::ReflectValueRef::Message(self) ::protobuf::reflect::ReflectValueRef::Message(self)
} }
@ -772,39 +772,39 @@ static file_descriptor_proto_data: &'static [u8] = b"\
ce_id\x18\x01\x20\x01(\tR\x0bworkspaceId\x12\x12\n\x04name\x18\x02\x20\ ce_id\x18\x01\x20\x01(\tR\x0bworkspaceId\x12\x12\n\x04name\x18\x02\x20\
\x01(\tR\x04name\x12\x12\n\x04desc\x18\x03\x20\x01(\tR\x04desc\x12,\n\ \x01(\tR\x04name\x12\x12\n\x04desc\x18\x03\x20\x01(\tR\x04desc\x12,\n\
\x0bcolor_style\x18\x04\x20\x01(\x0b2\x0b.ColorStyleR\ncolorStyle\"-\n\n\ \x0bcolor_style\x18\x04\x20\x01(\x0b2\x0b.ColorStyleR\ncolorStyle\"-\n\n\
ColorStyle\x12\x1f\n\x0btheme_color\x18\x01\x20\x01(\tR\nthemeColor\"f\n\ ColorStyle\x12\x1f\n\x0btheme_color\x18\x01\x20\x01(\tR\nthemeColor\"`\n\
\tAppDetail\x12\x0e\n\x02id\x18\x01\x20\x01(\tR\x02id\x12!\n\x0cworkspac\ \x03App\x12\x0e\n\x02id\x18\x01\x20\x01(\tR\x02id\x12!\n\x0cworkspace_id\
e_id\x18\x02\x20\x01(\tR\x0bworkspaceId\x12\x12\n\x04name\x18\x03\x20\ \x18\x02\x20\x01(\tR\x0bworkspaceId\x12\x12\n\x04name\x18\x03\x20\x01(\t\
\x01(\tR\x04name\x12\x12\n\x04desc\x18\x04\x20\x01(\tR\x04descJ\xc9\x04\ R\x04name\x12\x12\n\x04desc\x18\x04\x20\x01(\tR\x04descJ\xc9\x04\n\x06\
\n\x06\x12\x04\0\0\x10\x01\n\x08\n\x01\x0c\x12\x03\0\0\x12\n\n\n\x02\x04\ \x12\x04\0\0\x10\x01\n\x08\n\x01\x0c\x12\x03\0\0\x12\n\n\n\x02\x04\0\x12\
\0\x12\x04\x02\0\x07\x01\n\n\n\x03\x04\0\x01\x12\x03\x02\x08\x18\n\x0b\n\ \x04\x02\0\x07\x01\n\n\n\x03\x04\0\x01\x12\x03\x02\x08\x18\n\x0b\n\x04\
\x04\x04\0\x02\0\x12\x03\x03\x04\x1c\n\x0c\n\x05\x04\0\x02\0\x05\x12\x03\ \x04\0\x02\0\x12\x03\x03\x04\x1c\n\x0c\n\x05\x04\0\x02\0\x05\x12\x03\x03\
\x03\x04\n\n\x0c\n\x05\x04\0\x02\0\x01\x12\x03\x03\x0b\x17\n\x0c\n\x05\ \x04\n\n\x0c\n\x05\x04\0\x02\0\x01\x12\x03\x03\x0b\x17\n\x0c\n\x05\x04\0\
\x04\0\x02\0\x03\x12\x03\x03\x1a\x1b\n\x0b\n\x04\x04\0\x02\x01\x12\x03\ \x02\0\x03\x12\x03\x03\x1a\x1b\n\x0b\n\x04\x04\0\x02\x01\x12\x03\x04\x04\
\x04\x04\x14\n\x0c\n\x05\x04\0\x02\x01\x05\x12\x03\x04\x04\n\n\x0c\n\x05\ \x14\n\x0c\n\x05\x04\0\x02\x01\x05\x12\x03\x04\x04\n\n\x0c\n\x05\x04\0\
\x04\0\x02\x01\x01\x12\x03\x04\x0b\x0f\n\x0c\n\x05\x04\0\x02\x01\x03\x12\ \x02\x01\x01\x12\x03\x04\x0b\x0f\n\x0c\n\x05\x04\0\x02\x01\x03\x12\x03\
\x03\x04\x12\x13\n\x0b\n\x04\x04\0\x02\x02\x12\x03\x05\x04\x14\n\x0c\n\ \x04\x12\x13\n\x0b\n\x04\x04\0\x02\x02\x12\x03\x05\x04\x14\n\x0c\n\x05\
\x05\x04\0\x02\x02\x05\x12\x03\x05\x04\n\n\x0c\n\x05\x04\0\x02\x02\x01\ \x04\0\x02\x02\x05\x12\x03\x05\x04\n\n\x0c\n\x05\x04\0\x02\x02\x01\x12\
\x12\x03\x05\x0b\x0f\n\x0c\n\x05\x04\0\x02\x02\x03\x12\x03\x05\x12\x13\n\ \x03\x05\x0b\x0f\n\x0c\n\x05\x04\0\x02\x02\x03\x12\x03\x05\x12\x13\n\x0b\
\x0b\n\x04\x04\0\x02\x03\x12\x03\x06\x04\x1f\n\x0c\n\x05\x04\0\x02\x03\ \n\x04\x04\0\x02\x03\x12\x03\x06\x04\x1f\n\x0c\n\x05\x04\0\x02\x03\x06\
\x06\x12\x03\x06\x04\x0e\n\x0c\n\x05\x04\0\x02\x03\x01\x12\x03\x06\x0f\ \x12\x03\x06\x04\x0e\n\x0c\n\x05\x04\0\x02\x03\x01\x12\x03\x06\x0f\x1a\n\
\x1a\n\x0c\n\x05\x04\0\x02\x03\x03\x12\x03\x06\x1d\x1e\n\n\n\x02\x04\x01\ \x0c\n\x05\x04\0\x02\x03\x03\x12\x03\x06\x1d\x1e\n\n\n\x02\x04\x01\x12\
\x12\x04\x08\0\n\x01\n\n\n\x03\x04\x01\x01\x12\x03\x08\x08\x12\n\x0b\n\ \x04\x08\0\n\x01\n\n\n\x03\x04\x01\x01\x12\x03\x08\x08\x12\n\x0b\n\x04\
\x04\x04\x01\x02\0\x12\x03\t\x04\x1b\n\x0c\n\x05\x04\x01\x02\0\x05\x12\ \x04\x01\x02\0\x12\x03\t\x04\x1b\n\x0c\n\x05\x04\x01\x02\0\x05\x12\x03\t\
\x03\t\x04\n\n\x0c\n\x05\x04\x01\x02\0\x01\x12\x03\t\x0b\x16\n\x0c\n\x05\ \x04\n\n\x0c\n\x05\x04\x01\x02\0\x01\x12\x03\t\x0b\x16\n\x0c\n\x05\x04\
\x04\x01\x02\0\x03\x12\x03\t\x19\x1a\n\n\n\x02\x04\x02\x12\x04\x0b\0\x10\ \x01\x02\0\x03\x12\x03\t\x19\x1a\n\n\n\x02\x04\x02\x12\x04\x0b\0\x10\x01\
\x01\n\n\n\x03\x04\x02\x01\x12\x03\x0b\x08\x11\n\x0b\n\x04\x04\x02\x02\0\ \n\n\n\x03\x04\x02\x01\x12\x03\x0b\x08\x0b\n\x0b\n\x04\x04\x02\x02\0\x12\
\x12\x03\x0c\x04\x12\n\x0c\n\x05\x04\x02\x02\0\x05\x12\x03\x0c\x04\n\n\ \x03\x0c\x04\x12\n\x0c\n\x05\x04\x02\x02\0\x05\x12\x03\x0c\x04\n\n\x0c\n\
\x0c\n\x05\x04\x02\x02\0\x01\x12\x03\x0c\x0b\r\n\x0c\n\x05\x04\x02\x02\0\ \x05\x04\x02\x02\0\x01\x12\x03\x0c\x0b\r\n\x0c\n\x05\x04\x02\x02\0\x03\
\x03\x12\x03\x0c\x10\x11\n\x0b\n\x04\x04\x02\x02\x01\x12\x03\r\x04\x1c\n\ \x12\x03\x0c\x10\x11\n\x0b\n\x04\x04\x02\x02\x01\x12\x03\r\x04\x1c\n\x0c\
\x0c\n\x05\x04\x02\x02\x01\x05\x12\x03\r\x04\n\n\x0c\n\x05\x04\x02\x02\ \n\x05\x04\x02\x02\x01\x05\x12\x03\r\x04\n\n\x0c\n\x05\x04\x02\x02\x01\
\x01\x01\x12\x03\r\x0b\x17\n\x0c\n\x05\x04\x02\x02\x01\x03\x12\x03\r\x1a\ \x01\x12\x03\r\x0b\x17\n\x0c\n\x05\x04\x02\x02\x01\x03\x12\x03\r\x1a\x1b\
\x1b\n\x0b\n\x04\x04\x02\x02\x02\x12\x03\x0e\x04\x14\n\x0c\n\x05\x04\x02\ \n\x0b\n\x04\x04\x02\x02\x02\x12\x03\x0e\x04\x14\n\x0c\n\x05\x04\x02\x02\
\x02\x02\x05\x12\x03\x0e\x04\n\n\x0c\n\x05\x04\x02\x02\x02\x01\x12\x03\ \x02\x05\x12\x03\x0e\x04\n\n\x0c\n\x05\x04\x02\x02\x02\x01\x12\x03\x0e\
\x0e\x0b\x0f\n\x0c\n\x05\x04\x02\x02\x02\x03\x12\x03\x0e\x12\x13\n\x0b\n\ \x0b\x0f\n\x0c\n\x05\x04\x02\x02\x02\x03\x12\x03\x0e\x12\x13\n\x0b\n\x04\
\x04\x04\x02\x02\x03\x12\x03\x0f\x04\x14\n\x0c\n\x05\x04\x02\x02\x03\x05\ \x04\x02\x02\x03\x12\x03\x0f\x04\x14\n\x0c\n\x05\x04\x02\x02\x03\x05\x12\
\x12\x03\x0f\x04\n\n\x0c\n\x05\x04\x02\x02\x03\x01\x12\x03\x0f\x0b\x0f\n\ \x03\x0f\x04\n\n\x0c\n\x05\x04\x02\x02\x03\x01\x12\x03\x0f\x0b\x0f\n\x0c\
\x0c\n\x05\x04\x02\x02\x03\x03\x12\x03\x0f\x12\x13b\x06proto3\ \n\x05\x04\x02\x02\x03\x03\x12\x03\x0f\x12\x13b\x06proto3\
"; ";
static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT; static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT;

View File

@ -219,11 +219,14 @@ pub enum WorkspaceErrorCode {
WorkspaceNameInvalid = 1, WorkspaceNameInvalid = 1,
WorkspaceIdInvalid = 2, WorkspaceIdInvalid = 2,
AppColorStyleInvalid = 3, AppColorStyleInvalid = 3,
AppIdInvalid = 4, AppIdInvalid = 10,
DatabaseConnectionFail = 5, AppNameInvalid = 11,
WorkspaceDatabaseError = 6, ViewNameInvalid = 20,
UserInternalError = 10, ViewThumbnailName = 21,
UserNotLoginYet = 11, DatabaseConnectionFail = 100,
WorkspaceDatabaseError = 101,
UserInternalError = 102,
UserNotLoginYet = 103,
} }
impl ::protobuf::ProtobufEnum for WorkspaceErrorCode { impl ::protobuf::ProtobufEnum for WorkspaceErrorCode {
@ -237,11 +240,14 @@ impl ::protobuf::ProtobufEnum for WorkspaceErrorCode {
1 => ::std::option::Option::Some(WorkspaceErrorCode::WorkspaceNameInvalid), 1 => ::std::option::Option::Some(WorkspaceErrorCode::WorkspaceNameInvalid),
2 => ::std::option::Option::Some(WorkspaceErrorCode::WorkspaceIdInvalid), 2 => ::std::option::Option::Some(WorkspaceErrorCode::WorkspaceIdInvalid),
3 => ::std::option::Option::Some(WorkspaceErrorCode::AppColorStyleInvalid), 3 => ::std::option::Option::Some(WorkspaceErrorCode::AppColorStyleInvalid),
4 => ::std::option::Option::Some(WorkspaceErrorCode::AppIdInvalid), 10 => ::std::option::Option::Some(WorkspaceErrorCode::AppIdInvalid),
5 => ::std::option::Option::Some(WorkspaceErrorCode::DatabaseConnectionFail), 11 => ::std::option::Option::Some(WorkspaceErrorCode::AppNameInvalid),
6 => ::std::option::Option::Some(WorkspaceErrorCode::WorkspaceDatabaseError), 20 => ::std::option::Option::Some(WorkspaceErrorCode::ViewNameInvalid),
10 => ::std::option::Option::Some(WorkspaceErrorCode::UserInternalError), 21 => ::std::option::Option::Some(WorkspaceErrorCode::ViewThumbnailName),
11 => ::std::option::Option::Some(WorkspaceErrorCode::UserNotLoginYet), 100 => ::std::option::Option::Some(WorkspaceErrorCode::DatabaseConnectionFail),
101 => ::std::option::Option::Some(WorkspaceErrorCode::WorkspaceDatabaseError),
102 => ::std::option::Option::Some(WorkspaceErrorCode::UserInternalError),
103 => ::std::option::Option::Some(WorkspaceErrorCode::UserNotLoginYet),
_ => ::std::option::Option::None _ => ::std::option::Option::None
} }
} }
@ -253,6 +259,9 @@ impl ::protobuf::ProtobufEnum for WorkspaceErrorCode {
WorkspaceErrorCode::WorkspaceIdInvalid, WorkspaceErrorCode::WorkspaceIdInvalid,
WorkspaceErrorCode::AppColorStyleInvalid, WorkspaceErrorCode::AppColorStyleInvalid,
WorkspaceErrorCode::AppIdInvalid, WorkspaceErrorCode::AppIdInvalid,
WorkspaceErrorCode::AppNameInvalid,
WorkspaceErrorCode::ViewNameInvalid,
WorkspaceErrorCode::ViewThumbnailName,
WorkspaceErrorCode::DatabaseConnectionFail, WorkspaceErrorCode::DatabaseConnectionFail,
WorkspaceErrorCode::WorkspaceDatabaseError, WorkspaceErrorCode::WorkspaceDatabaseError,
WorkspaceErrorCode::UserInternalError, WorkspaceErrorCode::UserInternalError,
@ -287,39 +296,46 @@ impl ::protobuf::reflect::ProtobufValue for WorkspaceErrorCode {
static file_descriptor_proto_data: &'static [u8] = b"\ static file_descriptor_proto_data: &'static [u8] = b"\
\n\x0cerrors.proto\"K\n\x0eWorkspaceError\x12'\n\x04code\x18\x01\x20\x01\ \n\x0cerrors.proto\"K\n\x0eWorkspaceError\x12'\n\x04code\x18\x01\x20\x01\
(\x0e2\x13.WorkspaceErrorCodeR\x04code\x12\x10\n\x03msg\x18\x02\x20\x01(\ (\x0e2\x13.WorkspaceErrorCodeR\x04code\x12\x10\n\x03msg\x18\x02\x20\x01(\
\tR\x03msg*\xe3\x01\n\x12WorkspaceErrorCode\x12\x0b\n\x07Unknown\x10\0\ \tR\x03msg*\xa3\x02\n\x12WorkspaceErrorCode\x12\x0b\n\x07Unknown\x10\0\
\x12\x18\n\x14WorkspaceNameInvalid\x10\x01\x12\x16\n\x12WorkspaceIdInval\ \x12\x18\n\x14WorkspaceNameInvalid\x10\x01\x12\x16\n\x12WorkspaceIdInval\
id\x10\x02\x12\x18\n\x14AppColorStyleInvalid\x10\x03\x12\x10\n\x0cAppIdI\ id\x10\x02\x12\x18\n\x14AppColorStyleInvalid\x10\x03\x12\x10\n\x0cAppIdI\
nvalid\x10\x04\x12\x1a\n\x16DatabaseConnectionFail\x10\x05\x12\x1a\n\x16\ nvalid\x10\n\x12\x12\n\x0eAppNameInvalid\x10\x0b\x12\x13\n\x0fViewNameIn\
WorkspaceDatabaseError\x10\x06\x12\x15\n\x11UserInternalError\x10\n\x12\ valid\x10\x14\x12\x15\n\x11ViewThumbnailName\x10\x15\x12\x1a\n\x16Databa\
\x13\n\x0fUserNotLoginYet\x10\x0bJ\xa1\x04\n\x06\x12\x04\0\0\x10\x01\n\ seConnectionFail\x10d\x12\x1a\n\x16WorkspaceDatabaseError\x10e\x12\x15\n\
\x08\n\x01\x0c\x12\x03\0\0\x12\n\n\n\x02\x04\0\x12\x04\x02\0\x05\x01\n\n\ \x11UserInternalError\x10f\x12\x13\n\x0fUserNotLoginYet\x10gJ\x9c\x05\n\
\n\x03\x04\0\x01\x12\x03\x02\x08\x16\n\x0b\n\x04\x04\0\x02\0\x12\x03\x03\ \x06\x12\x04\0\0\x13\x01\n\x08\n\x01\x0c\x12\x03\0\0\x12\n\n\n\x02\x04\0\
\x04\x20\n\x0c\n\x05\x04\0\x02\0\x06\x12\x03\x03\x04\x16\n\x0c\n\x05\x04\ \x12\x04\x02\0\x05\x01\n\n\n\x03\x04\0\x01\x12\x03\x02\x08\x16\n\x0b\n\
\0\x02\0\x01\x12\x03\x03\x17\x1b\n\x0c\n\x05\x04\0\x02\0\x03\x12\x03\x03\ \x04\x04\0\x02\0\x12\x03\x03\x04\x20\n\x0c\n\x05\x04\0\x02\0\x06\x12\x03\
\x1e\x1f\n\x0b\n\x04\x04\0\x02\x01\x12\x03\x04\x04\x13\n\x0c\n\x05\x04\0\ \x03\x04\x16\n\x0c\n\x05\x04\0\x02\0\x01\x12\x03\x03\x17\x1b\n\x0c\n\x05\
\x02\x01\x05\x12\x03\x04\x04\n\n\x0c\n\x05\x04\0\x02\x01\x01\x12\x03\x04\ \x04\0\x02\0\x03\x12\x03\x03\x1e\x1f\n\x0b\n\x04\x04\0\x02\x01\x12\x03\
\x0b\x0e\n\x0c\n\x05\x04\0\x02\x01\x03\x12\x03\x04\x11\x12\n\n\n\x02\x05\ \x04\x04\x13\n\x0c\n\x05\x04\0\x02\x01\x05\x12\x03\x04\x04\n\n\x0c\n\x05\
\0\x12\x04\x06\0\x10\x01\n\n\n\x03\x05\0\x01\x12\x03\x06\x05\x17\n\x0b\n\ \x04\0\x02\x01\x01\x12\x03\x04\x0b\x0e\n\x0c\n\x05\x04\0\x02\x01\x03\x12\
\x04\x05\0\x02\0\x12\x03\x07\x04\x10\n\x0c\n\x05\x05\0\x02\0\x01\x12\x03\ \x03\x04\x11\x12\n\n\n\x02\x05\0\x12\x04\x06\0\x13\x01\n\n\n\x03\x05\0\
\x07\x04\x0b\n\x0c\n\x05\x05\0\x02\0\x02\x12\x03\x07\x0e\x0f\n\x0b\n\x04\ \x01\x12\x03\x06\x05\x17\n\x0b\n\x04\x05\0\x02\0\x12\x03\x07\x04\x10\n\
\x05\0\x02\x01\x12\x03\x08\x04\x1d\n\x0c\n\x05\x05\0\x02\x01\x01\x12\x03\ \x0c\n\x05\x05\0\x02\0\x01\x12\x03\x07\x04\x0b\n\x0c\n\x05\x05\0\x02\0\
\x08\x04\x18\n\x0c\n\x05\x05\0\x02\x01\x02\x12\x03\x08\x1b\x1c\n\x0b\n\ \x02\x12\x03\x07\x0e\x0f\n\x0b\n\x04\x05\0\x02\x01\x12\x03\x08\x04\x1d\n\
\x04\x05\0\x02\x02\x12\x03\t\x04\x1b\n\x0c\n\x05\x05\0\x02\x02\x01\x12\ \x0c\n\x05\x05\0\x02\x01\x01\x12\x03\x08\x04\x18\n\x0c\n\x05\x05\0\x02\
\x03\t\x04\x16\n\x0c\n\x05\x05\0\x02\x02\x02\x12\x03\t\x19\x1a\n\x0b\n\ \x01\x02\x12\x03\x08\x1b\x1c\n\x0b\n\x04\x05\0\x02\x02\x12\x03\t\x04\x1b\
\x04\x05\0\x02\x03\x12\x03\n\x04\x1d\n\x0c\n\x05\x05\0\x02\x03\x01\x12\ \n\x0c\n\x05\x05\0\x02\x02\x01\x12\x03\t\x04\x16\n\x0c\n\x05\x05\0\x02\
\x03\n\x04\x18\n\x0c\n\x05\x05\0\x02\x03\x02\x12\x03\n\x1b\x1c\n\x0b\n\ \x02\x02\x12\x03\t\x19\x1a\n\x0b\n\x04\x05\0\x02\x03\x12\x03\n\x04\x1d\n\
\x04\x05\0\x02\x04\x12\x03\x0b\x04\x15\n\x0c\n\x05\x05\0\x02\x04\x01\x12\ \x0c\n\x05\x05\0\x02\x03\x01\x12\x03\n\x04\x18\n\x0c\n\x05\x05\0\x02\x03\
\x03\x0b\x04\x10\n\x0c\n\x05\x05\0\x02\x04\x02\x12\x03\x0b\x13\x14\n\x0b\ \x02\x12\x03\n\x1b\x1c\n\x0b\n\x04\x05\0\x02\x04\x12\x03\x0b\x04\x16\n\
\n\x04\x05\0\x02\x05\x12\x03\x0c\x04\x1f\n\x0c\n\x05\x05\0\x02\x05\x01\ \x0c\n\x05\x05\0\x02\x04\x01\x12\x03\x0b\x04\x10\n\x0c\n\x05\x05\0\x02\
\x12\x03\x0c\x04\x1a\n\x0c\n\x05\x05\0\x02\x05\x02\x12\x03\x0c\x1d\x1e\n\ \x04\x02\x12\x03\x0b\x13\x15\n\x0b\n\x04\x05\0\x02\x05\x12\x03\x0c\x04\
\x0b\n\x04\x05\0\x02\x06\x12\x03\r\x04\x1f\n\x0c\n\x05\x05\0\x02\x06\x01\ \x18\n\x0c\n\x05\x05\0\x02\x05\x01\x12\x03\x0c\x04\x12\n\x0c\n\x05\x05\0\
\x12\x03\r\x04\x1a\n\x0c\n\x05\x05\0\x02\x06\x02\x12\x03\r\x1d\x1e\n\x0b\ \x02\x05\x02\x12\x03\x0c\x15\x17\n\x0b\n\x04\x05\0\x02\x06\x12\x03\r\x04\
\n\x04\x05\0\x02\x07\x12\x03\x0e\x04\x1b\n\x0c\n\x05\x05\0\x02\x07\x01\ \x19\n\x0c\n\x05\x05\0\x02\x06\x01\x12\x03\r\x04\x13\n\x0c\n\x05\x05\0\
\x12\x03\x0e\x04\x15\n\x0c\n\x05\x05\0\x02\x07\x02\x12\x03\x0e\x18\x1a\n\ \x02\x06\x02\x12\x03\r\x16\x18\n\x0b\n\x04\x05\0\x02\x07\x12\x03\x0e\x04\
\x0b\n\x04\x05\0\x02\x08\x12\x03\x0f\x04\x19\n\x0c\n\x05\x05\0\x02\x08\ \x1b\n\x0c\n\x05\x05\0\x02\x07\x01\x12\x03\x0e\x04\x15\n\x0c\n\x05\x05\0\
\x01\x12\x03\x0f\x04\x13\n\x0c\n\x05\x05\0\x02\x08\x02\x12\x03\x0f\x16\ \x02\x07\x02\x12\x03\x0e\x18\x1a\n\x0b\n\x04\x05\0\x02\x08\x12\x03\x0f\
\x18b\x06proto3\ \x04!\n\x0c\n\x05\x05\0\x02\x08\x01\x12\x03\x0f\x04\x1a\n\x0c\n\x05\x05\
\0\x02\x08\x02\x12\x03\x0f\x1d\x20\n\x0b\n\x04\x05\0\x02\t\x12\x03\x10\
\x04!\n\x0c\n\x05\x05\0\x02\t\x01\x12\x03\x10\x04\x1a\n\x0c\n\x05\x05\0\
\x02\t\x02\x12\x03\x10\x1d\x20\n\x0b\n\x04\x05\0\x02\n\x12\x03\x11\x04\
\x1c\n\x0c\n\x05\x05\0\x02\n\x01\x12\x03\x11\x04\x15\n\x0c\n\x05\x05\0\
\x02\n\x02\x12\x03\x11\x18\x1b\n\x0b\n\x04\x05\0\x02\x0b\x12\x03\x12\x04\
\x1a\n\x0c\n\x05\x05\0\x02\x0b\x01\x12\x03\x12\x04\x13\n\x0c\n\x05\x05\0\
\x02\x0b\x02\x12\x03\x12\x16\x19b\x06proto3\
"; ";
static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT; static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT;

View File

@ -28,6 +28,7 @@ pub enum WorkspaceEvent {
CreateWorkspace = 0, CreateWorkspace = 0,
GetWorkspaceDetail = 1, GetWorkspaceDetail = 1,
CreateApp = 101, CreateApp = 101,
CreateView = 201,
} }
impl ::protobuf::ProtobufEnum for WorkspaceEvent { impl ::protobuf::ProtobufEnum for WorkspaceEvent {
@ -40,6 +41,7 @@ impl ::protobuf::ProtobufEnum for WorkspaceEvent {
0 => ::std::option::Option::Some(WorkspaceEvent::CreateWorkspace), 0 => ::std::option::Option::Some(WorkspaceEvent::CreateWorkspace),
1 => ::std::option::Option::Some(WorkspaceEvent::GetWorkspaceDetail), 1 => ::std::option::Option::Some(WorkspaceEvent::GetWorkspaceDetail),
101 => ::std::option::Option::Some(WorkspaceEvent::CreateApp), 101 => ::std::option::Option::Some(WorkspaceEvent::CreateApp),
201 => ::std::option::Option::Some(WorkspaceEvent::CreateView),
_ => ::std::option::Option::None _ => ::std::option::Option::None
} }
} }
@ -49,6 +51,7 @@ impl ::protobuf::ProtobufEnum for WorkspaceEvent {
WorkspaceEvent::CreateWorkspace, WorkspaceEvent::CreateWorkspace,
WorkspaceEvent::GetWorkspaceDetail, WorkspaceEvent::GetWorkspaceDetail,
WorkspaceEvent::CreateApp, WorkspaceEvent::CreateApp,
WorkspaceEvent::CreateView,
]; ];
values values
} }
@ -77,17 +80,19 @@ impl ::protobuf::reflect::ProtobufValue for WorkspaceEvent {
} }
static file_descriptor_proto_data: &'static [u8] = b"\ static file_descriptor_proto_data: &'static [u8] = b"\
\n\x0bevent.proto*L\n\x0eWorkspaceEvent\x12\x13\n\x0fCreateWorkspace\x10\ \n\x0bevent.proto*]\n\x0eWorkspaceEvent\x12\x13\n\x0fCreateWorkspace\x10\
\0\x12\x16\n\x12GetWorkspaceDetail\x10\x01\x12\r\n\tCreateApp\x10eJ\xa5\ \0\x12\x16\n\x12GetWorkspaceDetail\x10\x01\x12\r\n\tCreateApp\x10e\x12\
\x01\n\x06\x12\x04\0\0\x06\x01\n\x08\n\x01\x0c\x12\x03\0\0\x12\n\n\n\x02\ \x0f\n\nCreateView\x10\xc9\x01J\xce\x01\n\x06\x12\x04\0\0\x07\x01\n\x08\
\x05\0\x12\x04\x02\0\x06\x01\n\n\n\x03\x05\0\x01\x12\x03\x02\x05\x13\n\ \n\x01\x0c\x12\x03\0\0\x12\n\n\n\x02\x05\0\x12\x04\x02\0\x07\x01\n\n\n\
\x0b\n\x04\x05\0\x02\0\x12\x03\x03\x04\x18\n\x0c\n\x05\x05\0\x02\0\x01\ \x03\x05\0\x01\x12\x03\x02\x05\x13\n\x0b\n\x04\x05\0\x02\0\x12\x03\x03\
\x12\x03\x03\x04\x13\n\x0c\n\x05\x05\0\x02\0\x02\x12\x03\x03\x16\x17\n\ \x04\x18\n\x0c\n\x05\x05\0\x02\0\x01\x12\x03\x03\x04\x13\n\x0c\n\x05\x05\
\x0b\n\x04\x05\0\x02\x01\x12\x03\x04\x04\x1b\n\x0c\n\x05\x05\0\x02\x01\ \0\x02\0\x02\x12\x03\x03\x16\x17\n\x0b\n\x04\x05\0\x02\x01\x12\x03\x04\
\x01\x12\x03\x04\x04\x16\n\x0c\n\x05\x05\0\x02\x01\x02\x12\x03\x04\x19\ \x04\x1b\n\x0c\n\x05\x05\0\x02\x01\x01\x12\x03\x04\x04\x16\n\x0c\n\x05\
\x1a\n\x0b\n\x04\x05\0\x02\x02\x12\x03\x05\x04\x14\n\x0c\n\x05\x05\0\x02\ \x05\0\x02\x01\x02\x12\x03\x04\x19\x1a\n\x0b\n\x04\x05\0\x02\x02\x12\x03\
\x02\x01\x12\x03\x05\x04\r\n\x0c\n\x05\x05\0\x02\x02\x02\x12\x03\x05\x10\ \x05\x04\x14\n\x0c\n\x05\x05\0\x02\x02\x01\x12\x03\x05\x04\r\n\x0c\n\x05\
\x13b\x06proto3\ \x05\0\x02\x02\x02\x12\x03\x05\x10\x13\n\x0b\n\x04\x05\0\x02\x03\x12\x03\
\x06\x04\x15\n\x0c\n\x05\x05\0\x02\x03\x01\x12\x03\x06\x04\x0e\n\x0c\n\
\x05\x05\0\x02\x03\x02\x12\x03\x06\x11\x14b\x06proto3\
"; ";
static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT; static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT;

View File

@ -12,6 +12,9 @@ pub use app_create::*;
mod event; mod event;
pub use event::*; pub use event::*;
mod view_create;
pub use view_create::*;
mod workspace_user_detail; mod workspace_user_detail;
pub use workspace_user_detail::*; pub use workspace_user_detail::*;

View File

@ -0,0 +1,803 @@
// This file is generated by rust-protobuf 2.22.1. Do not edit
// @generated
// https://github.com/rust-lang/rust-clippy/issues/702
#![allow(unknown_lints)]
#![allow(clippy::all)]
#![allow(unused_attributes)]
#![cfg_attr(rustfmt, rustfmt::skip)]
#![allow(box_pointers)]
#![allow(dead_code)]
#![allow(missing_docs)]
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
#![allow(non_upper_case_globals)]
#![allow(trivial_casts)]
#![allow(unused_imports)]
#![allow(unused_results)]
//! Generated file from `view_create.proto`
/// Generated files are compatible only with the same version
/// of protobuf runtime.
// const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_22_1;
#[derive(PartialEq,Clone,Default)]
pub struct CreateViewRequest {
// message fields
pub app_id: ::std::string::String,
pub name: ::std::string::String,
pub desc: ::std::string::String,
pub view_type: ViewTypeIdentifier,
// message oneof groups
pub one_of_thumbnail: ::std::option::Option<CreateViewRequest_oneof_one_of_thumbnail>,
// special fields
pub unknown_fields: ::protobuf::UnknownFields,
pub cached_size: ::protobuf::CachedSize,
}
impl<'a> ::std::default::Default for &'a CreateViewRequest {
fn default() -> &'a CreateViewRequest {
<CreateViewRequest as ::protobuf::Message>::default_instance()
}
}
#[derive(Clone,PartialEq,Debug)]
pub enum CreateViewRequest_oneof_one_of_thumbnail {
thumbnail(::std::string::String),
}
impl CreateViewRequest {
pub fn new() -> CreateViewRequest {
::std::default::Default::default()
}
// string app_id = 1;
pub fn get_app_id(&self) -> &str {
&self.app_id
}
pub fn clear_app_id(&mut self) {
self.app_id.clear();
}
// Param is passed by value, moved
pub fn set_app_id(&mut self, v: ::std::string::String) {
self.app_id = v;
}
// Mutable pointer to the field.
// If field is not initialized, it is initialized with default value first.
pub fn mut_app_id(&mut self) -> &mut ::std::string::String {
&mut self.app_id
}
// Take field
pub fn take_app_id(&mut self) -> ::std::string::String {
::std::mem::replace(&mut self.app_id, ::std::string::String::new())
}
// string name = 2;
pub fn get_name(&self) -> &str {
&self.name
}
pub fn clear_name(&mut self) {
self.name.clear();
}
// Param is passed by value, moved
pub fn set_name(&mut self, v: ::std::string::String) {
self.name = v;
}
// Mutable pointer to the field.
// If field is not initialized, it is initialized with default value first.
pub fn mut_name(&mut self) -> &mut ::std::string::String {
&mut self.name
}
// Take field
pub fn take_name(&mut self) -> ::std::string::String {
::std::mem::replace(&mut self.name, ::std::string::String::new())
}
// string desc = 3;
pub fn get_desc(&self) -> &str {
&self.desc
}
pub fn clear_desc(&mut self) {
self.desc.clear();
}
// Param is passed by value, moved
pub fn set_desc(&mut self, v: ::std::string::String) {
self.desc = v;
}
// Mutable pointer to the field.
// If field is not initialized, it is initialized with default value first.
pub fn mut_desc(&mut self) -> &mut ::std::string::String {
&mut self.desc
}
// Take field
pub fn take_desc(&mut self) -> ::std::string::String {
::std::mem::replace(&mut self.desc, ::std::string::String::new())
}
// string thumbnail = 4;
pub fn get_thumbnail(&self) -> &str {
match self.one_of_thumbnail {
::std::option::Option::Some(CreateViewRequest_oneof_one_of_thumbnail::thumbnail(ref v)) => v,
_ => "",
}
}
pub fn clear_thumbnail(&mut self) {
self.one_of_thumbnail = ::std::option::Option::None;
}
pub fn has_thumbnail(&self) -> bool {
match self.one_of_thumbnail {
::std::option::Option::Some(CreateViewRequest_oneof_one_of_thumbnail::thumbnail(..)) => true,
_ => false,
}
}
// Param is passed by value, moved
pub fn set_thumbnail(&mut self, v: ::std::string::String) {
self.one_of_thumbnail = ::std::option::Option::Some(CreateViewRequest_oneof_one_of_thumbnail::thumbnail(v))
}
// Mutable pointer to the field.
pub fn mut_thumbnail(&mut self) -> &mut ::std::string::String {
if let ::std::option::Option::Some(CreateViewRequest_oneof_one_of_thumbnail::thumbnail(_)) = self.one_of_thumbnail {
} else {
self.one_of_thumbnail = ::std::option::Option::Some(CreateViewRequest_oneof_one_of_thumbnail::thumbnail(::std::string::String::new()));
}
match self.one_of_thumbnail {
::std::option::Option::Some(CreateViewRequest_oneof_one_of_thumbnail::thumbnail(ref mut v)) => v,
_ => panic!(),
}
}
// Take field
pub fn take_thumbnail(&mut self) -> ::std::string::String {
if self.has_thumbnail() {
match self.one_of_thumbnail.take() {
::std::option::Option::Some(CreateViewRequest_oneof_one_of_thumbnail::thumbnail(v)) => v,
_ => panic!(),
}
} else {
::std::string::String::new()
}
}
// .ViewTypeIdentifier view_type = 5;
pub fn get_view_type(&self) -> ViewTypeIdentifier {
self.view_type
}
pub fn clear_view_type(&mut self) {
self.view_type = ViewTypeIdentifier::Docs;
}
// Param is passed by value, moved
pub fn set_view_type(&mut self, v: ViewTypeIdentifier) {
self.view_type = v;
}
}
impl ::protobuf::Message for CreateViewRequest {
fn is_initialized(&self) -> bool {
true
}
fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
while !is.eof()? {
let (field_number, wire_type) = is.read_tag_unpack()?;
match field_number {
1 => {
::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.app_id)?;
},
2 => {
::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.name)?;
},
3 => {
::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.desc)?;
},
4 => {
if wire_type != ::protobuf::wire_format::WireTypeLengthDelimited {
return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
}
self.one_of_thumbnail = ::std::option::Option::Some(CreateViewRequest_oneof_one_of_thumbnail::thumbnail(is.read_string()?));
},
5 => {
::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.view_type, 5, &mut self.unknown_fields)?
},
_ => {
::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
},
};
}
::std::result::Result::Ok(())
}
// Compute sizes of nested messages
#[allow(unused_variables)]
fn compute_size(&self) -> u32 {
let mut my_size = 0;
if !self.app_id.is_empty() {
my_size += ::protobuf::rt::string_size(1, &self.app_id);
}
if !self.name.is_empty() {
my_size += ::protobuf::rt::string_size(2, &self.name);
}
if !self.desc.is_empty() {
my_size += ::protobuf::rt::string_size(3, &self.desc);
}
if self.view_type != ViewTypeIdentifier::Docs {
my_size += ::protobuf::rt::enum_size(5, self.view_type);
}
if let ::std::option::Option::Some(ref v) = self.one_of_thumbnail {
match v {
&CreateViewRequest_oneof_one_of_thumbnail::thumbnail(ref v) => {
my_size += ::protobuf::rt::string_size(4, &v);
},
};
}
my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
self.cached_size.set(my_size);
my_size
}
fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
if !self.app_id.is_empty() {
os.write_string(1, &self.app_id)?;
}
if !self.name.is_empty() {
os.write_string(2, &self.name)?;
}
if !self.desc.is_empty() {
os.write_string(3, &self.desc)?;
}
if self.view_type != ViewTypeIdentifier::Docs {
os.write_enum(5, ::protobuf::ProtobufEnum::value(&self.view_type))?;
}
if let ::std::option::Option::Some(ref v) = self.one_of_thumbnail {
match v {
&CreateViewRequest_oneof_one_of_thumbnail::thumbnail(ref v) => {
os.write_string(4, v)?;
},
};
}
os.write_unknown_fields(self.get_unknown_fields())?;
::std::result::Result::Ok(())
}
fn get_cached_size(&self) -> u32 {
self.cached_size.get()
}
fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
&self.unknown_fields
}
fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
&mut self.unknown_fields
}
fn as_any(&self) -> &dyn (::std::any::Any) {
self as &dyn (::std::any::Any)
}
fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
self as &mut dyn (::std::any::Any)
}
fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
self
}
fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
Self::descriptor_static()
}
fn new() -> CreateViewRequest {
CreateViewRequest::new()
}
fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
descriptor.get(|| {
let mut fields = ::std::vec::Vec::new();
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
"app_id",
|m: &CreateViewRequest| { &m.app_id },
|m: &mut CreateViewRequest| { &mut m.app_id },
));
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
"name",
|m: &CreateViewRequest| { &m.name },
|m: &mut CreateViewRequest| { &mut m.name },
));
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
"desc",
|m: &CreateViewRequest| { &m.desc },
|m: &mut CreateViewRequest| { &mut m.desc },
));
fields.push(::protobuf::reflect::accessor::make_singular_string_accessor::<_>(
"thumbnail",
CreateViewRequest::has_thumbnail,
CreateViewRequest::get_thumbnail,
));
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<ViewTypeIdentifier>>(
"view_type",
|m: &CreateViewRequest| { &m.view_type },
|m: &mut CreateViewRequest| { &mut m.view_type },
));
::protobuf::reflect::MessageDescriptor::new_pb_name::<CreateViewRequest>(
"CreateViewRequest",
fields,
file_descriptor_proto()
)
})
}
fn default_instance() -> &'static CreateViewRequest {
static instance: ::protobuf::rt::LazyV2<CreateViewRequest> = ::protobuf::rt::LazyV2::INIT;
instance.get(CreateViewRequest::new)
}
}
impl ::protobuf::Clear for CreateViewRequest {
fn clear(&mut self) {
self.app_id.clear();
self.name.clear();
self.desc.clear();
self.one_of_thumbnail = ::std::option::Option::None;
self.view_type = ViewTypeIdentifier::Docs;
self.unknown_fields.clear();
}
}
impl ::std::fmt::Debug for CreateViewRequest {
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
::protobuf::text_format::fmt(self, f)
}
}
impl ::protobuf::reflect::ProtobufValue for CreateViewRequest {
fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
::protobuf::reflect::ReflectValueRef::Message(self)
}
}
#[derive(PartialEq,Clone,Default)]
pub struct View {
// message fields
pub id: ::std::string::String,
pub app_id: ::std::string::String,
pub name: ::std::string::String,
pub desc: ::std::string::String,
pub view_type: ViewTypeIdentifier,
// special fields
pub unknown_fields: ::protobuf::UnknownFields,
pub cached_size: ::protobuf::CachedSize,
}
impl<'a> ::std::default::Default for &'a View {
fn default() -> &'a View {
<View as ::protobuf::Message>::default_instance()
}
}
impl View {
pub fn new() -> View {
::std::default::Default::default()
}
// string id = 1;
pub fn get_id(&self) -> &str {
&self.id
}
pub fn clear_id(&mut self) {
self.id.clear();
}
// Param is passed by value, moved
pub fn set_id(&mut self, v: ::std::string::String) {
self.id = v;
}
// Mutable pointer to the field.
// If field is not initialized, it is initialized with default value first.
pub fn mut_id(&mut self) -> &mut ::std::string::String {
&mut self.id
}
// Take field
pub fn take_id(&mut self) -> ::std::string::String {
::std::mem::replace(&mut self.id, ::std::string::String::new())
}
// string app_id = 2;
pub fn get_app_id(&self) -> &str {
&self.app_id
}
pub fn clear_app_id(&mut self) {
self.app_id.clear();
}
// Param is passed by value, moved
pub fn set_app_id(&mut self, v: ::std::string::String) {
self.app_id = v;
}
// Mutable pointer to the field.
// If field is not initialized, it is initialized with default value first.
pub fn mut_app_id(&mut self) -> &mut ::std::string::String {
&mut self.app_id
}
// Take field
pub fn take_app_id(&mut self) -> ::std::string::String {
::std::mem::replace(&mut self.app_id, ::std::string::String::new())
}
// string name = 3;
pub fn get_name(&self) -> &str {
&self.name
}
pub fn clear_name(&mut self) {
self.name.clear();
}
// Param is passed by value, moved
pub fn set_name(&mut self, v: ::std::string::String) {
self.name = v;
}
// Mutable pointer to the field.
// If field is not initialized, it is initialized with default value first.
pub fn mut_name(&mut self) -> &mut ::std::string::String {
&mut self.name
}
// Take field
pub fn take_name(&mut self) -> ::std::string::String {
::std::mem::replace(&mut self.name, ::std::string::String::new())
}
// string desc = 4;
pub fn get_desc(&self) -> &str {
&self.desc
}
pub fn clear_desc(&mut self) {
self.desc.clear();
}
// Param is passed by value, moved
pub fn set_desc(&mut self, v: ::std::string::String) {
self.desc = v;
}
// Mutable pointer to the field.
// If field is not initialized, it is initialized with default value first.
pub fn mut_desc(&mut self) -> &mut ::std::string::String {
&mut self.desc
}
// Take field
pub fn take_desc(&mut self) -> ::std::string::String {
::std::mem::replace(&mut self.desc, ::std::string::String::new())
}
// .ViewTypeIdentifier view_type = 5;
pub fn get_view_type(&self) -> ViewTypeIdentifier {
self.view_type
}
pub fn clear_view_type(&mut self) {
self.view_type = ViewTypeIdentifier::Docs;
}
// Param is passed by value, moved
pub fn set_view_type(&mut self, v: ViewTypeIdentifier) {
self.view_type = v;
}
}
impl ::protobuf::Message for View {
fn is_initialized(&self) -> bool {
true
}
fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
while !is.eof()? {
let (field_number, wire_type) = is.read_tag_unpack()?;
match field_number {
1 => {
::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.id)?;
},
2 => {
::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.app_id)?;
},
3 => {
::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.name)?;
},
4 => {
::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.desc)?;
},
5 => {
::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.view_type, 5, &mut self.unknown_fields)?
},
_ => {
::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
},
};
}
::std::result::Result::Ok(())
}
// Compute sizes of nested messages
#[allow(unused_variables)]
fn compute_size(&self) -> u32 {
let mut my_size = 0;
if !self.id.is_empty() {
my_size += ::protobuf::rt::string_size(1, &self.id);
}
if !self.app_id.is_empty() {
my_size += ::protobuf::rt::string_size(2, &self.app_id);
}
if !self.name.is_empty() {
my_size += ::protobuf::rt::string_size(3, &self.name);
}
if !self.desc.is_empty() {
my_size += ::protobuf::rt::string_size(4, &self.desc);
}
if self.view_type != ViewTypeIdentifier::Docs {
my_size += ::protobuf::rt::enum_size(5, self.view_type);
}
my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
self.cached_size.set(my_size);
my_size
}
fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
if !self.id.is_empty() {
os.write_string(1, &self.id)?;
}
if !self.app_id.is_empty() {
os.write_string(2, &self.app_id)?;
}
if !self.name.is_empty() {
os.write_string(3, &self.name)?;
}
if !self.desc.is_empty() {
os.write_string(4, &self.desc)?;
}
if self.view_type != ViewTypeIdentifier::Docs {
os.write_enum(5, ::protobuf::ProtobufEnum::value(&self.view_type))?;
}
os.write_unknown_fields(self.get_unknown_fields())?;
::std::result::Result::Ok(())
}
fn get_cached_size(&self) -> u32 {
self.cached_size.get()
}
fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
&self.unknown_fields
}
fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
&mut self.unknown_fields
}
fn as_any(&self) -> &dyn (::std::any::Any) {
self as &dyn (::std::any::Any)
}
fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
self as &mut dyn (::std::any::Any)
}
fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
self
}
fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
Self::descriptor_static()
}
fn new() -> View {
View::new()
}
fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
descriptor.get(|| {
let mut fields = ::std::vec::Vec::new();
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
"id",
|m: &View| { &m.id },
|m: &mut View| { &mut m.id },
));
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
"app_id",
|m: &View| { &m.app_id },
|m: &mut View| { &mut m.app_id },
));
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
"name",
|m: &View| { &m.name },
|m: &mut View| { &mut m.name },
));
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
"desc",
|m: &View| { &m.desc },
|m: &mut View| { &mut m.desc },
));
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<ViewTypeIdentifier>>(
"view_type",
|m: &View| { &m.view_type },
|m: &mut View| { &mut m.view_type },
));
::protobuf::reflect::MessageDescriptor::new_pb_name::<View>(
"View",
fields,
file_descriptor_proto()
)
})
}
fn default_instance() -> &'static View {
static instance: ::protobuf::rt::LazyV2<View> = ::protobuf::rt::LazyV2::INIT;
instance.get(View::new)
}
}
impl ::protobuf::Clear for View {
fn clear(&mut self) {
self.id.clear();
self.app_id.clear();
self.name.clear();
self.desc.clear();
self.view_type = ViewTypeIdentifier::Docs;
self.unknown_fields.clear();
}
}
impl ::std::fmt::Debug for View {
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
::protobuf::text_format::fmt(self, f)
}
}
impl ::protobuf::reflect::ProtobufValue for View {
fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
::protobuf::reflect::ReflectValueRef::Message(self)
}
}
#[derive(Clone,PartialEq,Eq,Debug,Hash)]
pub enum ViewTypeIdentifier {
Docs = 0,
}
impl ::protobuf::ProtobufEnum for ViewTypeIdentifier {
fn value(&self) -> i32 {
*self as i32
}
fn from_i32(value: i32) -> ::std::option::Option<ViewTypeIdentifier> {
match value {
0 => ::std::option::Option::Some(ViewTypeIdentifier::Docs),
_ => ::std::option::Option::None
}
}
fn values() -> &'static [Self] {
static values: &'static [ViewTypeIdentifier] = &[
ViewTypeIdentifier::Docs,
];
values
}
fn enum_descriptor_static() -> &'static ::protobuf::reflect::EnumDescriptor {
static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::LazyV2::INIT;
descriptor.get(|| {
::protobuf::reflect::EnumDescriptor::new_pb_name::<ViewTypeIdentifier>("ViewTypeIdentifier", file_descriptor_proto())
})
}
}
impl ::std::marker::Copy for ViewTypeIdentifier {
}
impl ::std::default::Default for ViewTypeIdentifier {
fn default() -> Self {
ViewTypeIdentifier::Docs
}
}
impl ::protobuf::reflect::ProtobufValue for ViewTypeIdentifier {
fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
::protobuf::reflect::ReflectValueRef::Enum(::protobuf::ProtobufEnum::descriptor(self))
}
}
static file_descriptor_proto_data: &'static [u8] = b"\
\n\x11view_create.proto\"\xb8\x01\n\x11CreateViewRequest\x12\x15\n\x06ap\
p_id\x18\x01\x20\x01(\tR\x05appId\x12\x12\n\x04name\x18\x02\x20\x01(\tR\
\x04name\x12\x12\n\x04desc\x18\x03\x20\x01(\tR\x04desc\x12\x1e\n\tthumbn\
ail\x18\x04\x20\x01(\tH\0R\tthumbnail\x120\n\tview_type\x18\x05\x20\x01(\
\x0e2\x13.ViewTypeIdentifierR\x08viewTypeB\x12\n\x10one_of_thumbnail\"\
\x87\x01\n\x04View\x12\x0e\n\x02id\x18\x01\x20\x01(\tR\x02id\x12\x15\n\
\x06app_id\x18\x02\x20\x01(\tR\x05appId\x12\x12\n\x04name\x18\x03\x20\
\x01(\tR\x04name\x12\x12\n\x04desc\x18\x04\x20\x01(\tR\x04desc\x120\n\tv\
iew_type\x18\x05\x20\x01(\x0e2\x13.ViewTypeIdentifierR\x08viewType*\x1e\
\n\x12ViewTypeIdentifier\x12\x08\n\x04Docs\x10\0J\xc4\x05\n\x06\x12\x04\
\0\0\x12\x01\n\x08\n\x01\x0c\x12\x03\0\0\x12\n\n\n\x02\x04\0\x12\x04\x02\
\0\x08\x01\n\n\n\x03\x04\0\x01\x12\x03\x02\x08\x19\n\x0b\n\x04\x04\0\x02\
\0\x12\x03\x03\x04\x16\n\x0c\n\x05\x04\0\x02\0\x05\x12\x03\x03\x04\n\n\
\x0c\n\x05\x04\0\x02\0\x01\x12\x03\x03\x0b\x11\n\x0c\n\x05\x04\0\x02\0\
\x03\x12\x03\x03\x14\x15\n\x0b\n\x04\x04\0\x02\x01\x12\x03\x04\x04\x14\n\
\x0c\n\x05\x04\0\x02\x01\x05\x12\x03\x04\x04\n\n\x0c\n\x05\x04\0\x02\x01\
\x01\x12\x03\x04\x0b\x0f\n\x0c\n\x05\x04\0\x02\x01\x03\x12\x03\x04\x12\
\x13\n\x0b\n\x04\x04\0\x02\x02\x12\x03\x05\x04\x14\n\x0c\n\x05\x04\0\x02\
\x02\x05\x12\x03\x05\x04\n\n\x0c\n\x05\x04\0\x02\x02\x01\x12\x03\x05\x0b\
\x0f\n\x0c\n\x05\x04\0\x02\x02\x03\x12\x03\x05\x12\x13\n\x0b\n\x04\x04\0\
\x08\0\x12\x03\x06\x044\n\x0c\n\x05\x04\0\x08\0\x01\x12\x03\x06\n\x1a\n\
\x0b\n\x04\x04\0\x02\x03\x12\x03\x06\x1d2\n\x0c\n\x05\x04\0\x02\x03\x05\
\x12\x03\x06\x1d#\n\x0c\n\x05\x04\0\x02\x03\x01\x12\x03\x06$-\n\x0c\n\
\x05\x04\0\x02\x03\x03\x12\x03\x0601\n\x0b\n\x04\x04\0\x02\x04\x12\x03\
\x07\x04%\n\x0c\n\x05\x04\0\x02\x04\x06\x12\x03\x07\x04\x16\n\x0c\n\x05\
\x04\0\x02\x04\x01\x12\x03\x07\x17\x20\n\x0c\n\x05\x04\0\x02\x04\x03\x12\
\x03\x07#$\n\n\n\x02\x04\x01\x12\x04\t\0\x0f\x01\n\n\n\x03\x04\x01\x01\
\x12\x03\t\x08\x0c\n\x0b\n\x04\x04\x01\x02\0\x12\x03\n\x04\x12\n\x0c\n\
\x05\x04\x01\x02\0\x05\x12\x03\n\x04\n\n\x0c\n\x05\x04\x01\x02\0\x01\x12\
\x03\n\x0b\r\n\x0c\n\x05\x04\x01\x02\0\x03\x12\x03\n\x10\x11\n\x0b\n\x04\
\x04\x01\x02\x01\x12\x03\x0b\x04\x16\n\x0c\n\x05\x04\x01\x02\x01\x05\x12\
\x03\x0b\x04\n\n\x0c\n\x05\x04\x01\x02\x01\x01\x12\x03\x0b\x0b\x11\n\x0c\
\n\x05\x04\x01\x02\x01\x03\x12\x03\x0b\x14\x15\n\x0b\n\x04\x04\x01\x02\
\x02\x12\x03\x0c\x04\x14\n\x0c\n\x05\x04\x01\x02\x02\x05\x12\x03\x0c\x04\
\n\n\x0c\n\x05\x04\x01\x02\x02\x01\x12\x03\x0c\x0b\x0f\n\x0c\n\x05\x04\
\x01\x02\x02\x03\x12\x03\x0c\x12\x13\n\x0b\n\x04\x04\x01\x02\x03\x12\x03\
\r\x04\x14\n\x0c\n\x05\x04\x01\x02\x03\x05\x12\x03\r\x04\n\n\x0c\n\x05\
\x04\x01\x02\x03\x01\x12\x03\r\x0b\x0f\n\x0c\n\x05\x04\x01\x02\x03\x03\
\x12\x03\r\x12\x13\n\x0b\n\x04\x04\x01\x02\x04\x12\x03\x0e\x04%\n\x0c\n\
\x05\x04\x01\x02\x04\x06\x12\x03\x0e\x04\x16\n\x0c\n\x05\x04\x01\x02\x04\
\x01\x12\x03\x0e\x17\x20\n\x0c\n\x05\x04\x01\x02\x04\x03\x12\x03\x0e#$\n\
\n\n\x02\x05\0\x12\x04\x10\0\x12\x01\n\n\n\x03\x05\0\x01\x12\x03\x10\x05\
\x17\n\x0b\n\x04\x05\0\x02\0\x12\x03\x11\x04\r\n\x0c\n\x05\x05\0\x02\0\
\x01\x12\x03\x11\x04\x08\n\x0c\n\x05\x05\0\x02\0\x02\x12\x03\x11\x0b\x0c\
b\x06proto3\
";
static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT;
fn parse_descriptor_proto() -> ::protobuf::descriptor::FileDescriptorProto {
::protobuf::Message::parse_from_bytes(file_descriptor_proto_data).unwrap()
}
pub fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
file_descriptor_proto_lazy.get(|| {
parse_descriptor_proto()
})
}

View File

@ -225,7 +225,7 @@ impl ::protobuf::reflect::ProtobufValue for CreateWorkspaceRequest {
} }
#[derive(PartialEq,Clone,Default)] #[derive(PartialEq,Clone,Default)]
pub struct WorkspaceDetail { pub struct Workspace {
// message fields // message fields
pub id: ::std::string::String, pub id: ::std::string::String,
pub name: ::std::string::String, pub name: ::std::string::String,
@ -235,14 +235,14 @@ pub struct WorkspaceDetail {
pub cached_size: ::protobuf::CachedSize, pub cached_size: ::protobuf::CachedSize,
} }
impl<'a> ::std::default::Default for &'a WorkspaceDetail { impl<'a> ::std::default::Default for &'a Workspace {
fn default() -> &'a WorkspaceDetail { fn default() -> &'a Workspace {
<WorkspaceDetail as ::protobuf::Message>::default_instance() <Workspace as ::protobuf::Message>::default_instance()
} }
} }
impl WorkspaceDetail { impl Workspace {
pub fn new() -> WorkspaceDetail { pub fn new() -> Workspace {
::std::default::Default::default() ::std::default::Default::default()
} }
@ -325,7 +325,7 @@ impl WorkspaceDetail {
} }
} }
impl ::protobuf::Message for WorkspaceDetail { impl ::protobuf::Message for Workspace {
fn is_initialized(&self) -> bool { fn is_initialized(&self) -> bool {
true true
} }
@ -409,8 +409,8 @@ impl ::protobuf::Message for WorkspaceDetail {
Self::descriptor_static() Self::descriptor_static()
} }
fn new() -> WorkspaceDetail { fn new() -> Workspace {
WorkspaceDetail::new() Workspace::new()
} }
fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor { fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
@ -419,34 +419,34 @@ impl ::protobuf::Message for WorkspaceDetail {
let mut fields = ::std::vec::Vec::new(); let mut fields = ::std::vec::Vec::new();
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>( fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
"id", "id",
|m: &WorkspaceDetail| { &m.id }, |m: &Workspace| { &m.id },
|m: &mut WorkspaceDetail| { &mut m.id }, |m: &mut Workspace| { &mut m.id },
)); ));
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>( fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
"name", "name",
|m: &WorkspaceDetail| { &m.name }, |m: &Workspace| { &m.name },
|m: &mut WorkspaceDetail| { &mut m.name }, |m: &mut Workspace| { &mut m.name },
)); ));
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>( fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
"desc", "desc",
|m: &WorkspaceDetail| { &m.desc }, |m: &Workspace| { &m.desc },
|m: &mut WorkspaceDetail| { &mut m.desc }, |m: &mut Workspace| { &mut m.desc },
)); ));
::protobuf::reflect::MessageDescriptor::new_pb_name::<WorkspaceDetail>( ::protobuf::reflect::MessageDescriptor::new_pb_name::<Workspace>(
"WorkspaceDetail", "Workspace",
fields, fields,
file_descriptor_proto() file_descriptor_proto()
) )
}) })
} }
fn default_instance() -> &'static WorkspaceDetail { fn default_instance() -> &'static Workspace {
static instance: ::protobuf::rt::LazyV2<WorkspaceDetail> = ::protobuf::rt::LazyV2::INIT; static instance: ::protobuf::rt::LazyV2<Workspace> = ::protobuf::rt::LazyV2::INIT;
instance.get(WorkspaceDetail::new) instance.get(Workspace::new)
} }
} }
impl ::protobuf::Clear for WorkspaceDetail { impl ::protobuf::Clear for Workspace {
fn clear(&mut self) { fn clear(&mut self) {
self.id.clear(); self.id.clear();
self.name.clear(); self.name.clear();
@ -455,13 +455,13 @@ impl ::protobuf::Clear for WorkspaceDetail {
} }
} }
impl ::std::fmt::Debug for WorkspaceDetail { impl ::std::fmt::Debug for Workspace {
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
::protobuf::text_format::fmt(self, f) ::protobuf::text_format::fmt(self, f)
} }
} }
impl ::protobuf::reflect::ProtobufValue for WorkspaceDetail { impl ::protobuf::reflect::ProtobufValue for Workspace {
fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef { fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
::protobuf::reflect::ReflectValueRef::Message(self) ::protobuf::reflect::ReflectValueRef::Message(self)
} }
@ -470,26 +470,26 @@ impl ::protobuf::reflect::ProtobufValue for WorkspaceDetail {
static file_descriptor_proto_data: &'static [u8] = b"\ static file_descriptor_proto_data: &'static [u8] = b"\
\n\x16workspace_create.proto\"@\n\x16CreateWorkspaceRequest\x12\x12\n\ \n\x16workspace_create.proto\"@\n\x16CreateWorkspaceRequest\x12\x12\n\
\x04name\x18\x01\x20\x01(\tR\x04name\x12\x12\n\x04desc\x18\x02\x20\x01(\ \x04name\x18\x01\x20\x01(\tR\x04name\x12\x12\n\x04desc\x18\x02\x20\x01(\
\tR\x04desc\"I\n\x0fWorkspaceDetail\x12\x0e\n\x02id\x18\x01\x20\x01(\tR\ \tR\x04desc\"C\n\tWorkspace\x12\x0e\n\x02id\x18\x01\x20\x01(\tR\x02id\
\x02id\x12\x12\n\x04name\x18\x02\x20\x01(\tR\x04name\x12\x12\n\x04desc\ \x12\x12\n\x04name\x18\x02\x20\x01(\tR\x04name\x12\x12\n\x04desc\x18\x03\
\x18\x03\x20\x01(\tR\x04descJ\xd5\x02\n\x06\x12\x04\0\0\n\x01\n\x08\n\ \x20\x01(\tR\x04descJ\xd5\x02\n\x06\x12\x04\0\0\n\x01\n\x08\n\x01\x0c\
\x01\x0c\x12\x03\0\0\x12\n\n\n\x02\x04\0\x12\x04\x02\0\x05\x01\n\n\n\x03\ \x12\x03\0\0\x12\n\n\n\x02\x04\0\x12\x04\x02\0\x05\x01\n\n\n\x03\x04\0\
\x04\0\x01\x12\x03\x02\x08\x1e\n\x0b\n\x04\x04\0\x02\0\x12\x03\x03\x04\ \x01\x12\x03\x02\x08\x1e\n\x0b\n\x04\x04\0\x02\0\x12\x03\x03\x04\x14\n\
\x14\n\x0c\n\x05\x04\0\x02\0\x05\x12\x03\x03\x04\n\n\x0c\n\x05\x04\0\x02\ \x0c\n\x05\x04\0\x02\0\x05\x12\x03\x03\x04\n\n\x0c\n\x05\x04\0\x02\0\x01\
\0\x01\x12\x03\x03\x0b\x0f\n\x0c\n\x05\x04\0\x02\0\x03\x12\x03\x03\x12\ \x12\x03\x03\x0b\x0f\n\x0c\n\x05\x04\0\x02\0\x03\x12\x03\x03\x12\x13\n\
\x13\n\x0b\n\x04\x04\0\x02\x01\x12\x03\x04\x04\x14\n\x0c\n\x05\x04\0\x02\ \x0b\n\x04\x04\0\x02\x01\x12\x03\x04\x04\x14\n\x0c\n\x05\x04\0\x02\x01\
\x01\x05\x12\x03\x04\x04\n\n\x0c\n\x05\x04\0\x02\x01\x01\x12\x03\x04\x0b\ \x05\x12\x03\x04\x04\n\n\x0c\n\x05\x04\0\x02\x01\x01\x12\x03\x04\x0b\x0f\
\x0f\n\x0c\n\x05\x04\0\x02\x01\x03\x12\x03\x04\x12\x13\n\n\n\x02\x04\x01\ \n\x0c\n\x05\x04\0\x02\x01\x03\x12\x03\x04\x12\x13\n\n\n\x02\x04\x01\x12\
\x12\x04\x06\0\n\x01\n\n\n\x03\x04\x01\x01\x12\x03\x06\x08\x17\n\x0b\n\ \x04\x06\0\n\x01\n\n\n\x03\x04\x01\x01\x12\x03\x06\x08\x11\n\x0b\n\x04\
\x04\x04\x01\x02\0\x12\x03\x07\x04\x12\n\x0c\n\x05\x04\x01\x02\0\x05\x12\ \x04\x01\x02\0\x12\x03\x07\x04\x12\n\x0c\n\x05\x04\x01\x02\0\x05\x12\x03\
\x03\x07\x04\n\n\x0c\n\x05\x04\x01\x02\0\x01\x12\x03\x07\x0b\r\n\x0c\n\ \x07\x04\n\n\x0c\n\x05\x04\x01\x02\0\x01\x12\x03\x07\x0b\r\n\x0c\n\x05\
\x05\x04\x01\x02\0\x03\x12\x03\x07\x10\x11\n\x0b\n\x04\x04\x01\x02\x01\ \x04\x01\x02\0\x03\x12\x03\x07\x10\x11\n\x0b\n\x04\x04\x01\x02\x01\x12\
\x12\x03\x08\x04\x14\n\x0c\n\x05\x04\x01\x02\x01\x05\x12\x03\x08\x04\n\n\ \x03\x08\x04\x14\n\x0c\n\x05\x04\x01\x02\x01\x05\x12\x03\x08\x04\n\n\x0c\
\x0c\n\x05\x04\x01\x02\x01\x01\x12\x03\x08\x0b\x0f\n\x0c\n\x05\x04\x01\ \n\x05\x04\x01\x02\x01\x01\x12\x03\x08\x0b\x0f\n\x0c\n\x05\x04\x01\x02\
\x02\x01\x03\x12\x03\x08\x12\x13\n\x0b\n\x04\x04\x01\x02\x02\x12\x03\t\ \x01\x03\x12\x03\x08\x12\x13\n\x0b\n\x04\x04\x01\x02\x02\x12\x03\t\x04\
\x04\x14\n\x0c\n\x05\x04\x01\x02\x02\x05\x12\x03\t\x04\n\n\x0c\n\x05\x04\ \x14\n\x0c\n\x05\x04\x01\x02\x02\x05\x12\x03\t\x04\n\n\x0c\n\x05\x04\x01\
\x01\x02\x02\x01\x12\x03\t\x0b\x0f\n\x0c\n\x05\x04\x01\x02\x02\x03\x12\ \x02\x02\x01\x12\x03\t\x0b\x0f\n\x0c\n\x05\x04\x01\x02\x02\x03\x12\x03\t\
\x03\t\x12\x13b\x06proto3\ \x12\x13b\x06proto3\
"; ";
static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT; static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT;

View File

@ -228,7 +228,7 @@ impl ::protobuf::reflect::ProtobufValue for UserWorkspace {
pub struct UserWorkspaceDetail { pub struct UserWorkspaceDetail {
// message fields // message fields
pub owner: ::std::string::String, pub owner: ::std::string::String,
pub workspace: ::protobuf::SingularPtrField<super::workspace_create::WorkspaceDetail>, pub workspace: ::protobuf::SingularPtrField<super::workspace_create::Workspace>,
// special fields // special fields
pub unknown_fields: ::protobuf::UnknownFields, pub unknown_fields: ::protobuf::UnknownFields,
pub cached_size: ::protobuf::CachedSize, pub cached_size: ::protobuf::CachedSize,
@ -271,11 +271,11 @@ impl UserWorkspaceDetail {
::std::mem::replace(&mut self.owner, ::std::string::String::new()) ::std::mem::replace(&mut self.owner, ::std::string::String::new())
} }
// .WorkspaceDetail workspace = 2; // .Workspace workspace = 2;
pub fn get_workspace(&self) -> &super::workspace_create::WorkspaceDetail { pub fn get_workspace(&self) -> &super::workspace_create::Workspace {
self.workspace.as_ref().unwrap_or_else(|| <super::workspace_create::WorkspaceDetail as ::protobuf::Message>::default_instance()) self.workspace.as_ref().unwrap_or_else(|| <super::workspace_create::Workspace as ::protobuf::Message>::default_instance())
} }
pub fn clear_workspace(&mut self) { pub fn clear_workspace(&mut self) {
self.workspace.clear(); self.workspace.clear();
@ -286,13 +286,13 @@ impl UserWorkspaceDetail {
} }
// Param is passed by value, moved // Param is passed by value, moved
pub fn set_workspace(&mut self, v: super::workspace_create::WorkspaceDetail) { pub fn set_workspace(&mut self, v: super::workspace_create::Workspace) {
self.workspace = ::protobuf::SingularPtrField::some(v); self.workspace = ::protobuf::SingularPtrField::some(v);
} }
// Mutable pointer to the field. // Mutable pointer to the field.
// If field is not initialized, it is initialized with default value first. // If field is not initialized, it is initialized with default value first.
pub fn mut_workspace(&mut self) -> &mut super::workspace_create::WorkspaceDetail { pub fn mut_workspace(&mut self) -> &mut super::workspace_create::Workspace {
if self.workspace.is_none() { if self.workspace.is_none() {
self.workspace.set_default(); self.workspace.set_default();
} }
@ -300,8 +300,8 @@ impl UserWorkspaceDetail {
} }
// Take field // Take field
pub fn take_workspace(&mut self) -> super::workspace_create::WorkspaceDetail { pub fn take_workspace(&mut self) -> super::workspace_create::Workspace {
self.workspace.take().unwrap_or_else(|| super::workspace_create::WorkspaceDetail::new()) self.workspace.take().unwrap_or_else(|| super::workspace_create::Workspace::new())
} }
} }
@ -401,7 +401,7 @@ impl ::protobuf::Message for UserWorkspaceDetail {
|m: &UserWorkspaceDetail| { &m.owner }, |m: &UserWorkspaceDetail| { &m.owner },
|m: &mut UserWorkspaceDetail| { &mut m.owner }, |m: &mut UserWorkspaceDetail| { &mut m.owner },
)); ));
fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::workspace_create::WorkspaceDetail>>( fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::workspace_create::Workspace>>(
"workspace", "workspace",
|m: &UserWorkspaceDetail| { &m.workspace }, |m: &UserWorkspaceDetail| { &m.workspace },
|m: &mut UserWorkspaceDetail| { &mut m.workspace }, |m: &mut UserWorkspaceDetail| { &mut m.workspace },
@ -443,24 +443,24 @@ impl ::protobuf::reflect::ProtobufValue for UserWorkspaceDetail {
static file_descriptor_proto_data: &'static [u8] = b"\ static file_descriptor_proto_data: &'static [u8] = b"\
\n\x1bworkspace_user_detail.proto\x1a\x16workspace_create.proto\"H\n\rUs\ \n\x1bworkspace_user_detail.proto\x1a\x16workspace_create.proto\"H\n\rUs\
erWorkspace\x12\x14\n\x05owner\x18\x01\x20\x01(\tR\x05owner\x12!\n\x0cwo\ erWorkspace\x12\x14\n\x05owner\x18\x01\x20\x01(\tR\x05owner\x12!\n\x0cwo\
rkspace_id\x18\x02\x20\x01(\tR\x0bworkspaceId\"[\n\x13UserWorkspaceDetai\ rkspace_id\x18\x02\x20\x01(\tR\x0bworkspaceId\"U\n\x13UserWorkspaceDetai\
l\x12\x14\n\x05owner\x18\x01\x20\x01(\tR\x05owner\x12.\n\tworkspace\x18\ l\x12\x14\n\x05owner\x18\x01\x20\x01(\tR\x05owner\x12(\n\tworkspace\x18\
\x02\x20\x01(\x0b2\x10.WorkspaceDetailR\tworkspaceJ\xa9\x02\n\x06\x12\ \x02\x20\x01(\x0b2\n.WorkspaceR\tworkspaceJ\xa9\x02\n\x06\x12\x04\0\0\n\
\x04\0\0\n\x01\n\x08\n\x01\x0c\x12\x03\0\0\x12\n\t\n\x02\x03\0\x12\x03\ \x01\n\x08\n\x01\x0c\x12\x03\0\0\x12\n\t\n\x02\x03\0\x12\x03\x01\0\x20\n\
\x01\0\x20\n\n\n\x02\x04\0\x12\x04\x03\0\x06\x01\n\n\n\x03\x04\0\x01\x12\ \n\n\x02\x04\0\x12\x04\x03\0\x06\x01\n\n\n\x03\x04\0\x01\x12\x03\x03\x08\
\x03\x03\x08\x15\n\x0b\n\x04\x04\0\x02\0\x12\x03\x04\x04\x15\n\x0c\n\x05\ \x15\n\x0b\n\x04\x04\0\x02\0\x12\x03\x04\x04\x15\n\x0c\n\x05\x04\0\x02\0\
\x04\0\x02\0\x05\x12\x03\x04\x04\n\n\x0c\n\x05\x04\0\x02\0\x01\x12\x03\ \x05\x12\x03\x04\x04\n\n\x0c\n\x05\x04\0\x02\0\x01\x12\x03\x04\x0b\x10\n\
\x04\x0b\x10\n\x0c\n\x05\x04\0\x02\0\x03\x12\x03\x04\x13\x14\n\x0b\n\x04\ \x0c\n\x05\x04\0\x02\0\x03\x12\x03\x04\x13\x14\n\x0b\n\x04\x04\0\x02\x01\
\x04\0\x02\x01\x12\x03\x05\x04\x1c\n\x0c\n\x05\x04\0\x02\x01\x05\x12\x03\ \x12\x03\x05\x04\x1c\n\x0c\n\x05\x04\0\x02\x01\x05\x12\x03\x05\x04\n\n\
\x05\x04\n\n\x0c\n\x05\x04\0\x02\x01\x01\x12\x03\x05\x0b\x17\n\x0c\n\x05\ \x0c\n\x05\x04\0\x02\x01\x01\x12\x03\x05\x0b\x17\n\x0c\n\x05\x04\0\x02\
\x04\0\x02\x01\x03\x12\x03\x05\x1a\x1b\n\n\n\x02\x04\x01\x12\x04\x07\0\n\ \x01\x03\x12\x03\x05\x1a\x1b\n\n\n\x02\x04\x01\x12\x04\x07\0\n\x01\n\n\n\
\x01\n\n\n\x03\x04\x01\x01\x12\x03\x07\x08\x1b\n\x0b\n\x04\x04\x01\x02\0\ \x03\x04\x01\x01\x12\x03\x07\x08\x1b\n\x0b\n\x04\x04\x01\x02\0\x12\x03\
\x12\x03\x08\x04\x15\n\x0c\n\x05\x04\x01\x02\0\x05\x12\x03\x08\x04\n\n\ \x08\x04\x15\n\x0c\n\x05\x04\x01\x02\0\x05\x12\x03\x08\x04\n\n\x0c\n\x05\
\x0c\n\x05\x04\x01\x02\0\x01\x12\x03\x08\x0b\x10\n\x0c\n\x05\x04\x01\x02\ \x04\x01\x02\0\x01\x12\x03\x08\x0b\x10\n\x0c\n\x05\x04\x01\x02\0\x03\x12\
\0\x03\x12\x03\x08\x13\x14\n\x0b\n\x04\x04\x01\x02\x01\x12\x03\t\x04\"\n\ \x03\x08\x13\x14\n\x0b\n\x04\x04\x01\x02\x01\x12\x03\t\x04\x1c\n\x0c\n\
\x0c\n\x05\x04\x01\x02\x01\x06\x12\x03\t\x04\x13\n\x0c\n\x05\x04\x01\x02\ \x05\x04\x01\x02\x01\x06\x12\x03\t\x04\r\n\x0c\n\x05\x04\x01\x02\x01\x01\
\x01\x01\x12\x03\t\x14\x1d\n\x0c\n\x05\x04\x01\x02\x01\x03\x12\x03\t\x20\ \x12\x03\t\x0e\x17\n\x0c\n\x05\x04\x01\x02\x01\x03\x12\x03\t\x1a\x1bb\
!b\x06proto3\ \x06proto3\
"; ";
static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT; static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT;

View File

@ -9,7 +9,7 @@ message CreateAppRequest {
message ColorStyle { message ColorStyle {
string theme_color = 1; string theme_color = 1;
} }
message AppDetail { message App {
string id = 1; string id = 1;
string workspace_id = 2; string workspace_id = 2;
string name = 3; string name = 3;

View File

@ -9,9 +9,12 @@ enum WorkspaceErrorCode {
WorkspaceNameInvalid = 1; WorkspaceNameInvalid = 1;
WorkspaceIdInvalid = 2; WorkspaceIdInvalid = 2;
AppColorStyleInvalid = 3; AppColorStyleInvalid = 3;
AppIdInvalid = 4; AppIdInvalid = 10;
DatabaseConnectionFail = 5; AppNameInvalid = 11;
WorkspaceDatabaseError = 6; ViewNameInvalid = 20;
UserInternalError = 10; ViewThumbnailName = 21;
UserNotLoginYet = 11; DatabaseConnectionFail = 100;
WorkspaceDatabaseError = 101;
UserInternalError = 102;
UserNotLoginYet = 103;
} }

View File

@ -4,4 +4,5 @@ enum WorkspaceEvent {
CreateWorkspace = 0; CreateWorkspace = 0;
GetWorkspaceDetail = 1; GetWorkspaceDetail = 1;
CreateApp = 101; CreateApp = 101;
CreateView = 201;
} }

View File

@ -0,0 +1,19 @@
syntax = "proto3";
message CreateViewRequest {
string app_id = 1;
string name = 2;
string desc = 3;
oneof one_of_thumbnail { string thumbnail = 4; };
ViewTypeIdentifier view_type = 5;
}
message View {
string id = 1;
string app_id = 2;
string name = 3;
string desc = 4;
ViewTypeIdentifier view_type = 5;
}
enum ViewTypeIdentifier {
Docs = 0;
}

View File

@ -4,7 +4,7 @@ message CreateWorkspaceRequest {
string name = 1; string name = 1;
string desc = 2; string desc = 2;
} }
message WorkspaceDetail { message Workspace {
string id = 1; string id = 1;
string name = 2; string name = 2;
string desc = 3; string desc = 3;

View File

@ -7,5 +7,5 @@ message UserWorkspace {
} }
message UserWorkspaceDetail { message UserWorkspaceDetail {
string owner = 1; string owner = 1;
WorkspaceDetail workspace = 2; Workspace workspace = 2;
} }

View File

@ -1,5 +1,5 @@
use crate::{ use crate::{
entities::app::{AppDetail, CreateAppParams, *}, entities::app::{App, CreateAppParams, *},
errors::*, errors::*,
module::WorkspaceUser, module::WorkspaceUser,
sql_tables::app::*, sql_tables::app::*,
@ -14,15 +14,15 @@ pub struct AppController {
impl AppController { impl AppController {
pub fn new(user: Arc<dyn WorkspaceUser>) -> Self { Self { user } } pub fn new(user: Arc<dyn WorkspaceUser>) -> Self { Self { user } }
pub fn save_app(&self, params: CreateAppParams) -> Result<AppDetail, WorkspaceError> { pub fn save_app(&self, params: CreateAppParams) -> Result<App, WorkspaceError> {
let app = AppTable::new(params); let app_table = AppTable::new(params);
let conn = self.user.db_connection()?; let conn = self.user.db_connection()?;
let detail: AppDetail = app.clone().into(); let app: App = app_table.clone().into();
let _ = diesel::insert_into(app_table::table) let _ = diesel::insert_into(app_table::table)
.values(app) .values(app_table)
.execute(&*conn)?; .execute(&*conn)?;
Ok(detail) Ok(app)
} }
pub fn update_app(&self, params: UpdateAppParams) -> Result<(), WorkspaceError> { pub fn update_app(&self, params: UpdateAppParams) -> Result<(), WorkspaceError> {

View File

@ -1,7 +1,9 @@
mod app_controller; mod app_controller;
mod database; mod database;
mod helper; mod helper;
mod view_controller;
mod workspace_controller; mod workspace_controller;
pub use app_controller::*; pub use app_controller::*;
pub use view_controller::*;
pub use workspace_controller::*; pub use workspace_controller::*;

View File

@ -0,0 +1,28 @@
use crate::{
entities::view::{CreateViewParams, View},
errors::WorkspaceError,
module::WorkspaceUser,
sql_tables::view::ViewTable,
};
use flowy_database::{prelude::*, schema::view_table};
use std::sync::Arc;
pub struct ViewController {
user: Arc<dyn WorkspaceUser>,
}
impl ViewController {
pub fn new(user: Arc<dyn WorkspaceUser>) -> Self { Self { user } }
pub async fn save_view(&self, params: CreateViewParams) -> Result<View, WorkspaceError> {
let view_table = ViewTable::new(params);
let conn = self.user.db_connection()?;
let view: View = view_table.clone().into();
let _ = diesel::insert_into(view_table::table)
.values(view_table)
.execute(&*conn)?;
Ok(view)
}
}

View File

@ -15,12 +15,12 @@ impl WorkspaceController {
pub async fn save_workspace( pub async fn save_workspace(
&self, &self,
params: CreateWorkspaceParams, params: CreateWorkspaceParams,
) -> Result<WorkspaceDetail, WorkspaceError> { ) -> Result<Workspace, WorkspaceError> {
let workspace = WorkspaceTable::new(params); let workspace_table = WorkspaceTable::new(params);
let detail: WorkspaceDetail = workspace.clone().into(); let detail: Workspace = workspace_table.clone().into();
let _ = diesel::insert_into(workspace_table::table) let _ = diesel::insert_into(workspace_table::table)
.values(workspace) .values(workspace_table)
.execute(&*(self.user.db_connection()?))?; .execute(&*(self.user.db_connection()?))?;
let _ = self.user.set_cur_workspace_id(&detail.id).await?; let _ = self.user.set_cur_workspace_id(&detail.id).await?;

View File

@ -1,5 +1,5 @@
use crate::{ use crate::{
entities::app::{AppDetail, ColorStyle, CreateAppParams, UpdateAppParams}, entities::app::{App, ColorStyle, CreateAppParams, UpdateAppParams},
impl_sql_binary_expression, impl_sql_binary_expression,
sql_tables::workspace::WorkspaceTable, sql_tables::workspace::WorkspaceTable,
}; };
@ -9,20 +9,9 @@ use flowy_infra::{timestamp, uuid};
use serde::{Deserialize, Serialize, __private::TryFrom}; use serde::{Deserialize, Serialize, __private::TryFrom};
use std::convert::TryInto; use std::convert::TryInto;
#[derive( #[derive(PartialEq, Clone, Debug, Queryable, Identifiable, Insertable, Associations)]
PartialEq,
Serialize,
Deserialize,
Clone,
Debug,
Queryable,
Identifiable,
Insertable,
Associations,
)]
#[belongs_to(WorkspaceTable, foreign_key = "workspace_id")] #[belongs_to(WorkspaceTable, foreign_key = "workspace_id")]
#[table_name = "app_table"] #[table_name = "app_table"]
#[serde(tag = "type")]
pub(crate) struct AppTable { pub(crate) struct AppTable {
pub id: String, pub id: String,
pub workspace_id: String, // equal to #[belongs_to(Workspace, foreign_key = "workspace_id")]. pub workspace_id: String, // equal to #[belongs_to(Workspace, foreign_key = "workspace_id")].
@ -105,9 +94,9 @@ impl AppTableChangeset {
} }
} }
impl std::convert::Into<AppDetail> for AppTable { impl std::convert::Into<App> for AppTable {
fn into(self) -> AppDetail { fn into(self) -> App {
AppDetail { App {
id: self.id, id: self.id,
workspace_id: self.workspace_id, workspace_id: self.workspace_id,
name: self.name, name: self.name,

View File

@ -0,0 +1,106 @@
use crate::{
entities::view::{CreateViewParams, View, ViewTypeIdentifier},
impl_sql_integer_expression,
sql_tables::app::AppTable,
};
use diesel::sql_types::Integer;
use flowy_database::schema::{view_table, view_table::dsl};
use flowy_infra::{timestamp, uuid};
#[derive(PartialEq, Clone, Debug, Queryable, Identifiable, Insertable, Associations)]
#[belongs_to(AppTable, foreign_key = "app_id")]
#[table_name = "view_table"]
pub(crate) struct ViewTable {
pub id: String,
pub app_id: String,
pub name: String,
pub desc: String,
pub modified_time: i64,
pub create_time: i64,
pub thumbnail: String,
pub view_type: ViewType,
pub version: i64,
}
impl ViewTable {
pub fn new(params: CreateViewParams) -> Self {
let view_id = uuid();
let time = timestamp();
ViewTable {
id: view_id,
app_id: params.app_id,
name: params.name,
desc: params.desc,
modified_time: time,
create_time: time,
thumbnail: params.thumbnail,
view_type: params.view_type,
version: 0,
}
}
}
impl std::convert::Into<View> for ViewTable {
fn into(self) -> View {
let view_type = match self.view_type {
ViewType::Docs => ViewTypeIdentifier::Docs,
};
View {
id: self.id,
app_id: self.app_id,
name: self.name,
desc: self.desc,
view_type,
}
}
}
#[derive(AsChangeset, Identifiable, Clone, Default, Debug)]
#[table_name = "view_table"]
pub struct ViewTableChangeset {
pub id: String,
pub name: Option<String>,
pub desc: Option<String>,
pub modified_time: i64,
}
impl ViewTableChangeset {
pub fn new(id: &str) -> Self {
ViewTableChangeset {
id: id.to_string(),
name: None,
desc: None,
modified_time: timestamp(),
}
}
}
#[derive(Clone, Copy, PartialEq, Eq, Debug, Hash, FromSqlRow, AsExpression)]
#[repr(i32)]
#[sql_type = "Integer"]
pub enum ViewType {
Docs = 0,
}
impl std::default::Default for ViewType {
fn default() -> Self { ViewType::Docs }
}
impl std::convert::From<i32> for ViewType {
fn from(value: i32) -> Self {
match value {
0 => ViewType::Docs,
o => {
log::error!("Unsupported view type {}, fallback to ViewType::Docs", o);
ViewType::Docs
},
}
}
}
impl ViewType {
pub fn value(&self) -> i32 { *self as i32 }
}
impl_sql_integer_expression!(ViewType);

View File

@ -1,11 +1,9 @@
use crate::entities::workspace::{CreateWorkspaceParams, UpdateWorkspaceParams, WorkspaceDetail}; use crate::entities::workspace::{CreateWorkspaceParams, UpdateWorkspaceParams, Workspace};
use flowy_database::schema::workspace_table; use flowy_database::schema::workspace_table;
use flowy_infra::{timestamp, uuid}; use flowy_infra::{timestamp, uuid};
use serde::{Deserialize, Serialize};
#[derive(PartialEq, Clone, Serialize, Deserialize, Debug, Queryable, Identifiable, Insertable)] #[derive(PartialEq, Clone, Debug, Queryable, Identifiable, Insertable)]
#[table_name = "workspace_table"] #[table_name = "workspace_table"]
#[serde(tag = "type")]
pub struct WorkspaceTable { pub struct WorkspaceTable {
pub id: String, pub id: String,
pub name: String, pub name: String,
@ -59,9 +57,9 @@ impl WorkspaceTableChangeset {
} }
} }
impl std::convert::Into<WorkspaceDetail> for WorkspaceTable { impl std::convert::Into<Workspace> for WorkspaceTable {
fn into(self) -> WorkspaceDetail { fn into(self) -> Workspace {
WorkspaceDetail { Workspace {
id: self.id, id: self.id,
name: self.name, name: self.name,
desc: self.desc, desc: self.desc,

View File

@ -1,7 +1,7 @@
use flowy_test::builder::WorkspaceTestBuilder; use flowy_test::builder::WorkspaceTestBuilder;
use flowy_workspace::{ use flowy_workspace::{
entities::{ entities::{
app::{AppDetail, CreateAppRequest}, app::{App, CreateAppRequest},
workspace::UserWorkspaceDetail, workspace::UserWorkspaceDetail,
}, },
event::WorkspaceEvent::{CreateApp, GetWorkspaceDetail}, event::WorkspaceEvent::{CreateApp, GetWorkspaceDetail},
@ -25,7 +25,7 @@ fn app_create_success() {
.event(CreateApp) .event(CreateApp)
.request(request) .request(request)
.sync_send() .sync_send()
.parse::<AppDetail>(); .parse::<App>();
dbg!(&app_detail); dbg!(&app_detail);
} }

View File

@ -1,6 +1,6 @@
use crate::helper::*; use crate::helper::*;
use flowy_workspace::{ use flowy_workspace::{
entities::workspace::{CreateWorkspaceRequest, UserWorkspaceDetail, WorkspaceDetail}, entities::workspace::{CreateWorkspaceRequest, UserWorkspaceDetail, Workspace},
event::WorkspaceEvent::*, event::WorkspaceEvent::*,
prelude::*, prelude::*,
}; };
@ -16,7 +16,7 @@ fn workspace_create_success() {
.event(CreateWorkspace) .event(CreateWorkspace)
.request(request) .request(request)
.sync_send() .sync_send()
.parse::<WorkspaceDetail>(); .parse::<Workspace>();
dbg!(&response); dbg!(&response);
} }
@ -41,7 +41,7 @@ fn workspace_create_and_then_get_detail_success() {
.event(CreateWorkspace) .event(CreateWorkspace)
.request(request) .request(request)
.sync_send() .sync_send()
.parse::<WorkspaceDetail>(); .parse::<Workspace>();
let user_workspace = WorkspaceTestBuilder::new() let user_workspace = WorkspaceTestBuilder::new()
.event(GetWorkspaceDetail) .event(GetWorkspaceDetail)