Commit 8a796d12 authored by Steven's avatar Steven

chore: add user access token setting definition

parent c87df879
......@@ -156,36 +156,3 @@ func convertUserRoleToStore(role apiv2pb.User_Role) store.Role {
return store.RoleUser
}
}
// ConvertUserSettingFromStore converts a user setting from store to protobuf.
func ConvertUserSettingFromStore(userSetting *store.UserSetting) *apiv2pb.UserSetting {
userSettingKey := apiv2pb.UserSetting_KEY_UNSPECIFIED
userSettingValue := &apiv2pb.UserSettingValue{}
switch userSetting.Key {
case "locale":
userSettingKey = apiv2pb.UserSetting_LOCALE
userSettingValue.Value = &apiv2pb.UserSettingValue_StringValue{
StringValue: userSetting.Value,
}
case "appearance":
userSettingKey = apiv2pb.UserSetting_APPEARANCE
userSettingValue.Value = &apiv2pb.UserSettingValue_StringValue{
StringValue: userSetting.Value,
}
case "memo-visibility":
userSettingKey = apiv2pb.UserSetting_MEMO_VISIBILITY
userSettingValue.Value = &apiv2pb.UserSettingValue_VisibilityValue{
VisibilityValue: convertVisibilityFromStore(store.Visibility(userSetting.Value)),
}
case "telegram-user-id":
userSettingKey = apiv2pb.UserSetting_TELEGRAM_USER_ID
userSettingValue.Value = &apiv2pb.UserSettingValue_StringValue{
StringValue: userSetting.Value,
}
}
return &apiv2pb.UserSetting{
UserId: int32(userSetting.UserID),
Key: userSettingKey,
Value: userSettingValue,
}
}
......@@ -3,7 +3,6 @@ syntax = "proto3";
package memos.api.v2;
import "api/v2/common.proto";
import "api/v2/memo_service.proto";
import "google/api/annotations.proto";
import "google/api/client.proto";
import "google/api/field_behavior.proto";
......@@ -23,18 +22,30 @@ service UserService {
};
option (google.api.method_signature) = "username";
}
// ListUserAccessTokens returns a list of access tokens for a user.
rpc ListUserAccessTokens(ListUserAccessTokensRequest) returns (ListUserAccessTokensResponse) {
option (google.api.http) = {get: "/api/v2/users/{username}/access_tokens"};
option (google.api.method_signature) = "username";
}
// CreateUserAccessToken creates a new access token for a user.
rpc CreateUserAccessToken(CreateUserAccessTokenRequest) returns (CreateUserAccessTokenResponse) {
option (google.api.http) = {
post: "/api/v2/users/{username}/access_tokens"
body: "user_access_token"
};
option (google.api.method_signature) = "username";
}
// DeleteUserAccessToken deletes an access token for a user.
rpc DeleteUserAccessToken(DeleteUserAccessTokenRequest) returns (DeleteUserAccessTokenResponse) {
option (google.api.http) = {delete: "/api/v2/users/{username}/access_tokens/{access_token}"};
option (google.api.method_signature) = "username,access_token";
}
}
message User {
int32 id = 1;
RowStatus row_status = 2;
google.protobuf.Timestamp create_time = 3;
google.protobuf.Timestamp update_time = 4;
string username = 5;
string username = 2;
enum Role {
ROLE_UNSPECIFIED = 0;
......@@ -42,18 +53,23 @@ message User {
ADMIN = 2;
USER = 3;
}
Role role = 3;
Role role = 6;
string email = 4;
string email = 7;
string nickname = 5;
string nickname = 8;
string open_id = 6;
string open_id = 9;
string avatar_url = 7;
string avatar_url = 10;
string password = 8 [(google.api.field_behavior) = INPUT_ONLY];
string password = 11 [(google.api.field_behavior) = INPUT_ONLY];
RowStatus row_status = 9;
google.protobuf.Timestamp create_time = 10;
google.protobuf.Timestamp update_time = 11;
}
message GetUserRequest {
......@@ -77,32 +93,35 @@ message UpdateUserResponse {
User user = 1;
}
message UserSetting {
// The user id of the setting.
int32 user_id = 1;
enum Key {
KEY_UNSPECIFIED = 0;
// The preferred locale.
LOCALE = 1;
// The preferred appearance.
APPEARANCE = 2;
// The default visibility of the memo when creating a new memo.
MEMO_VISIBILITY = 3;
// User's telegram id
TELEGRAM_USER_ID = 4;
}
// The key of the setting.
Key key = 2;
message ListUserAccessTokensRequest {
string username = 1;
}
// The value of the setting.
UserSettingValue value = 3;
message ListUserAccessTokensResponse {
repeated UserAccessToken access_tokens = 1;
}
message UserSettingValue {
oneof value {
// Default value as a string.
string string_value = 1;
Visibility visibility_value = 2;
}
message CreateUserAccessTokenRequest {
string username = 1;
UserAccessToken user_access_token = 2;
}
message CreateUserAccessTokenResponse {
UserAccessToken access_token = 1;
}
message DeleteUserAccessTokenRequest {
string username = 1;
// access_token is the access token to delete.
string access_token = 2;
}
message DeleteUserAccessTokenResponse {}
message UserAccessToken {
string access_token = 1;
string description = 2;
google.protobuf.Timestamp issued_at = 3;
google.protobuf.Timestamp expires_at = 4;
}
......@@ -34,16 +34,20 @@
- [TagService](#memos-api-v2-TagService)
- [api/v2/user_service.proto](#api_v2_user_service-proto)
- [CreateUserAccessTokenRequest](#memos-api-v2-CreateUserAccessTokenRequest)
- [CreateUserAccessTokenResponse](#memos-api-v2-CreateUserAccessTokenResponse)
- [DeleteUserAccessTokenRequest](#memos-api-v2-DeleteUserAccessTokenRequest)
- [DeleteUserAccessTokenResponse](#memos-api-v2-DeleteUserAccessTokenResponse)
- [GetUserRequest](#memos-api-v2-GetUserRequest)
- [GetUserResponse](#memos-api-v2-GetUserResponse)
- [ListUserAccessTokensRequest](#memos-api-v2-ListUserAccessTokensRequest)
- [ListUserAccessTokensResponse](#memos-api-v2-ListUserAccessTokensResponse)
- [UpdateUserRequest](#memos-api-v2-UpdateUserRequest)
- [UpdateUserResponse](#memos-api-v2-UpdateUserResponse)
- [User](#memos-api-v2-User)
- [UserSetting](#memos-api-v2-UserSetting)
- [UserSettingValue](#memos-api-v2-UserSettingValue)
- [UserAccessToken](#memos-api-v2-UserAccessToken)
- [User.Role](#memos-api-v2-User-Role)
- [UserSetting.Key](#memos-api-v2-UserSetting-Key)
- [UserService](#memos-api-v2-UserService)
......@@ -388,6 +392,63 @@
<a name="memos-api-v2-CreateUserAccessTokenRequest"></a>
### CreateUserAccessTokenRequest
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| username | [string](#string) | | |
| user_access_token | [UserAccessToken](#memos-api-v2-UserAccessToken) | | |
<a name="memos-api-v2-CreateUserAccessTokenResponse"></a>
### CreateUserAccessTokenResponse
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| access_token | [UserAccessToken](#memos-api-v2-UserAccessToken) | | |
<a name="memos-api-v2-DeleteUserAccessTokenRequest"></a>
### DeleteUserAccessTokenRequest
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| username | [string](#string) | | |
| access_token | [string](#string) | | access_token is the access token to delete. |
<a name="memos-api-v2-DeleteUserAccessTokenResponse"></a>
### DeleteUserAccessTokenResponse
<a name="memos-api-v2-GetUserRequest"></a>
### GetUserRequest
......@@ -418,6 +479,36 @@
<a name="memos-api-v2-ListUserAccessTokensRequest"></a>
### ListUserAccessTokensRequest
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| username | [string](#string) | | |
<a name="memos-api-v2-ListUserAccessTokensResponse"></a>
### ListUserAccessTokensResponse
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| access_tokens | [UserAccessToken](#memos-api-v2-UserAccessToken) | repeated | |
<a name="memos-api-v2-UpdateUserRequest"></a>
### UpdateUserRequest
......@@ -459,9 +550,6 @@
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| id | [int32](#int32) | | |
| row_status | [RowStatus](#memos-api-v2-RowStatus) | | |
| create_time | [google.protobuf.Timestamp](#google-protobuf-Timestamp) | | |
| update_time | [google.protobuf.Timestamp](#google-protobuf-Timestamp) | | |
| username | [string](#string) | | |
| role | [User.Role](#memos-api-v2-User-Role) | | |
| email | [string](#string) | | |
......@@ -469,39 +557,27 @@
| open_id | [string](#string) | | |
| avatar_url | [string](#string) | | |
| password | [string](#string) | | |
| row_status | [RowStatus](#memos-api-v2-RowStatus) | | |
| create_time | [google.protobuf.Timestamp](#google-protobuf-Timestamp) | | |
| update_time | [google.protobuf.Timestamp](#google-protobuf-Timestamp) | | |
<a name="memos-api-v2-UserSetting"></a>
### UserSetting
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| user_id | [int32](#int32) | | The user id of the setting. |
| key | [UserSetting.Key](#memos-api-v2-UserSetting-Key) | | The key of the setting. |
| value | [UserSettingValue](#memos-api-v2-UserSettingValue) | | The value of the setting. |
<a name="memos-api-v2-UserSettingValue"></a>
<a name="memos-api-v2-UserAccessToken"></a>
### UserSettingValue
### UserAccessToken
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| string_value | [string](#string) | | Default value as a string. |
| visibility_value | [Visibility](#memos-api-v2-Visibility) | | |
| access_token | [string](#string) | | |
| description | [string](#string) | | |
| issued_at | [google.protobuf.Timestamp](#google-protobuf-Timestamp) | | |
| expires_at | [google.protobuf.Timestamp](#google-protobuf-Timestamp) | | |
......@@ -523,21 +599,6 @@
| USER | 3 | |
<a name="memos-api-v2-UserSetting-Key"></a>
### UserSetting.Key
| Name | Number | Description |
| ---- | ------ | ----------- |
| KEY_UNSPECIFIED | 0 | |
| LOCALE | 1 | The preferred locale. |
| APPEARANCE | 2 | The preferred appearance. |
| MEMO_VISIBILITY | 3 | The default visibility of the memo when creating a new memo. |
| TELEGRAM_USER_ID | 4 | User&#39;s telegram id |
......@@ -552,6 +613,9 @@
| ----------- | ------------ | ------------- | ------------|
| GetUser | [GetUserRequest](#memos-api-v2-GetUserRequest) | [GetUserResponse](#memos-api-v2-GetUserResponse) | |
| UpdateUser | [UpdateUserRequest](#memos-api-v2-UpdateUserRequest) | [UpdateUserResponse](#memos-api-v2-UpdateUserResponse) | |
| ListUserAccessTokens | [ListUserAccessTokensRequest](#memos-api-v2-ListUserAccessTokensRequest) | [ListUserAccessTokensResponse](#memos-api-v2-ListUserAccessTokensResponse) | ListUserAccessTokens returns a list of access tokens for a user. |
| CreateUserAccessToken | [CreateUserAccessTokenRequest](#memos-api-v2-CreateUserAccessTokenRequest) | [CreateUserAccessTokenResponse](#memos-api-v2-CreateUserAccessTokenResponse) | CreateUserAccessToken creates a new access token for a user. |
| DeleteUserAccessToken | [DeleteUserAccessTokenRequest](#memos-api-v2-DeleteUserAccessTokenRequest) | [DeleteUserAccessTokenResponse](#memos-api-v2-DeleteUserAccessTokenResponse) | DeleteUserAccessToken deletes an access token for a user. |
......
This diff is collapsed.
This diff is collapsed.
......@@ -19,8 +19,11 @@ import (
const _ = grpc.SupportPackageIsVersion7
const (
UserService_GetUser_FullMethodName = "/memos.api.v2.UserService/GetUser"
UserService_UpdateUser_FullMethodName = "/memos.api.v2.UserService/UpdateUser"
UserService_GetUser_FullMethodName = "/memos.api.v2.UserService/GetUser"
UserService_UpdateUser_FullMethodName = "/memos.api.v2.UserService/UpdateUser"
UserService_ListUserAccessTokens_FullMethodName = "/memos.api.v2.UserService/ListUserAccessTokens"
UserService_CreateUserAccessToken_FullMethodName = "/memos.api.v2.UserService/CreateUserAccessToken"
UserService_DeleteUserAccessToken_FullMethodName = "/memos.api.v2.UserService/DeleteUserAccessToken"
)
// UserServiceClient is the client API for UserService service.
......@@ -29,6 +32,12 @@ const (
type UserServiceClient interface {
GetUser(ctx context.Context, in *GetUserRequest, opts ...grpc.CallOption) (*GetUserResponse, error)
UpdateUser(ctx context.Context, in *UpdateUserRequest, opts ...grpc.CallOption) (*UpdateUserResponse, error)
// ListUserAccessTokens returns a list of access tokens for a user.
ListUserAccessTokens(ctx context.Context, in *ListUserAccessTokensRequest, opts ...grpc.CallOption) (*ListUserAccessTokensResponse, error)
// CreateUserAccessToken creates a new access token for a user.
CreateUserAccessToken(ctx context.Context, in *CreateUserAccessTokenRequest, opts ...grpc.CallOption) (*CreateUserAccessTokenResponse, error)
// DeleteUserAccessToken deletes an access token for a user.
DeleteUserAccessToken(ctx context.Context, in *DeleteUserAccessTokenRequest, opts ...grpc.CallOption) (*DeleteUserAccessTokenResponse, error)
}
type userServiceClient struct {
......@@ -57,12 +66,45 @@ func (c *userServiceClient) UpdateUser(ctx context.Context, in *UpdateUserReques
return out, nil
}
func (c *userServiceClient) ListUserAccessTokens(ctx context.Context, in *ListUserAccessTokensRequest, opts ...grpc.CallOption) (*ListUserAccessTokensResponse, error) {
out := new(ListUserAccessTokensResponse)
err := c.cc.Invoke(ctx, UserService_ListUserAccessTokens_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *userServiceClient) CreateUserAccessToken(ctx context.Context, in *CreateUserAccessTokenRequest, opts ...grpc.CallOption) (*CreateUserAccessTokenResponse, error) {
out := new(CreateUserAccessTokenResponse)
err := c.cc.Invoke(ctx, UserService_CreateUserAccessToken_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *userServiceClient) DeleteUserAccessToken(ctx context.Context, in *DeleteUserAccessTokenRequest, opts ...grpc.CallOption) (*DeleteUserAccessTokenResponse, error) {
out := new(DeleteUserAccessTokenResponse)
err := c.cc.Invoke(ctx, UserService_DeleteUserAccessToken_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// UserServiceServer is the server API for UserService service.
// All implementations must embed UnimplementedUserServiceServer
// for forward compatibility
type UserServiceServer interface {
GetUser(context.Context, *GetUserRequest) (*GetUserResponse, error)
UpdateUser(context.Context, *UpdateUserRequest) (*UpdateUserResponse, error)
// ListUserAccessTokens returns a list of access tokens for a user.
ListUserAccessTokens(context.Context, *ListUserAccessTokensRequest) (*ListUserAccessTokensResponse, error)
// CreateUserAccessToken creates a new access token for a user.
CreateUserAccessToken(context.Context, *CreateUserAccessTokenRequest) (*CreateUserAccessTokenResponse, error)
// DeleteUserAccessToken deletes an access token for a user.
DeleteUserAccessToken(context.Context, *DeleteUserAccessTokenRequest) (*DeleteUserAccessTokenResponse, error)
mustEmbedUnimplementedUserServiceServer()
}
......@@ -76,6 +118,15 @@ func (UnimplementedUserServiceServer) GetUser(context.Context, *GetUserRequest)
func (UnimplementedUserServiceServer) UpdateUser(context.Context, *UpdateUserRequest) (*UpdateUserResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method UpdateUser not implemented")
}
func (UnimplementedUserServiceServer) ListUserAccessTokens(context.Context, *ListUserAccessTokensRequest) (*ListUserAccessTokensResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ListUserAccessTokens not implemented")
}
func (UnimplementedUserServiceServer) CreateUserAccessToken(context.Context, *CreateUserAccessTokenRequest) (*CreateUserAccessTokenResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method CreateUserAccessToken not implemented")
}
func (UnimplementedUserServiceServer) DeleteUserAccessToken(context.Context, *DeleteUserAccessTokenRequest) (*DeleteUserAccessTokenResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method DeleteUserAccessToken not implemented")
}
func (UnimplementedUserServiceServer) mustEmbedUnimplementedUserServiceServer() {}
// UnsafeUserServiceServer may be embedded to opt out of forward compatibility for this service.
......@@ -125,6 +176,60 @@ func _UserService_UpdateUser_Handler(srv interface{}, ctx context.Context, dec f
return interceptor(ctx, in, info, handler)
}
func _UserService_ListUserAccessTokens_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListUserAccessTokensRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(UserServiceServer).ListUserAccessTokens(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: UserService_ListUserAccessTokens_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(UserServiceServer).ListUserAccessTokens(ctx, req.(*ListUserAccessTokensRequest))
}
return interceptor(ctx, in, info, handler)
}
func _UserService_CreateUserAccessToken_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CreateUserAccessTokenRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(UserServiceServer).CreateUserAccessToken(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: UserService_CreateUserAccessToken_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(UserServiceServer).CreateUserAccessToken(ctx, req.(*CreateUserAccessTokenRequest))
}
return interceptor(ctx, in, info, handler)
}
func _UserService_DeleteUserAccessToken_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DeleteUserAccessTokenRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(UserServiceServer).DeleteUserAccessToken(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: UserService_DeleteUserAccessToken_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(UserServiceServer).DeleteUserAccessToken(ctx, req.(*DeleteUserAccessTokenRequest))
}
return interceptor(ctx, in, info, handler)
}
// UserService_ServiceDesc is the grpc.ServiceDesc for UserService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
......@@ -140,6 +245,18 @@ var UserService_ServiceDesc = grpc.ServiceDesc{
MethodName: "UpdateUser",
Handler: _UserService_UpdateUser_Handler,
},
{
MethodName: "ListUserAccessTokens",
Handler: _UserService_ListUserAccessTokens_Handler,
},
{
MethodName: "CreateUserAccessToken",
Handler: _UserService_CreateUserAccessToken_Handler,
},
{
MethodName: "DeleteUserAccessToken",
Handler: _UserService_DeleteUserAccessToken_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "api/v2/user_service.proto",
......
......@@ -9,6 +9,13 @@
- [SystemSettingKey](#memos-store-SystemSettingKey)
- [store/user_setting.proto](#store_user_setting-proto)
- [AccessTokensUserSetting](#memos-store-AccessTokensUserSetting)
- [AccessTokensUserSetting.AccessToken](#memos-store-AccessTokensUserSetting-AccessToken)
- [UserSetting](#memos-store-UserSetting)
- [UserSettingKey](#memos-store-UserSettingKey)
- [Scalar Value Types](#scalar-value-types)
......@@ -74,6 +81,81 @@
<a name="store_user_setting-proto"></a>
<p align="right"><a href="#top">Top</a></p>
## store/user_setting.proto
<a name="memos-store-AccessTokensUserSetting"></a>
### AccessTokensUserSetting
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| access_tokens | [AccessTokensUserSetting.AccessToken](#memos-store-AccessTokensUserSetting-AccessToken) | repeated | |
<a name="memos-store-AccessTokensUserSetting-AccessToken"></a>
### AccessTokensUserSetting.AccessToken
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| access_token | [string](#string) | | The access token is a JWT token. Including expiration time, issuer, etc. |
| description | [string](#string) | | A description for the access token. |
<a name="memos-store-UserSetting"></a>
### UserSetting
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| user_id | [int32](#int32) | | |
| key | [UserSettingKey](#memos-store-UserSettingKey) | | |
| access_tokens | [AccessTokensUserSetting](#memos-store-AccessTokensUserSetting) | | |
<a name="memos-store-UserSettingKey"></a>
### UserSettingKey
| Name | Number | Description |
| ---- | ------ | ----------- |
| USER_SETTING_KEY_UNSPECIFIED | 0 | |
## Scalar Value Types
| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby |
......
This diff is collapsed.
syntax = "proto3";
package memos.store;
option go_package = "gen/store";
message UserSetting {
int32 user_id = 1;
UserSettingKey key = 2;
oneof value {
AccessTokensUserSetting access_tokens = 3;
}
}
enum UserSettingKey {
USER_SETTING_KEY_UNSPECIFIED = 0;
}
message AccessTokensUserSetting {
message AccessToken {
// The access token is a JWT token.
// Including expiration time, issuer, etc.
string access_token = 1;
// A description for the access token.
string description = 2;
}
repeated AccessToken access_tokens = 1;
}
......@@ -5,7 +5,6 @@
import { proto3, Timestamp } from "@bufbuild/protobuf";
import { RowStatus } from "./common_pb.js";
import { Visibility } from "./memo_service_pb.js";
/**
* @generated from message memos.api.v2.User
......@@ -14,16 +13,16 @@ export const User = proto3.makeMessageType(
"memos.api.v2.User",
() => [
{ no: 1, name: "id", kind: "scalar", T: 5 /* ScalarType.INT32 */ },
{ no: 2, name: "row_status", kind: "enum", T: proto3.getEnumType(RowStatus) },
{ no: 3, name: "create_time", kind: "message", T: Timestamp },
{ no: 4, name: "update_time", kind: "message", T: Timestamp },
{ no: 5, name: "username", kind: "scalar", T: 9 /* ScalarType.STRING */ },
{ no: 6, name: "role", kind: "enum", T: proto3.getEnumType(User_Role) },
{ no: 7, name: "email", kind: "scalar", T: 9 /* ScalarType.STRING */ },
{ no: 8, name: "nickname", kind: "scalar", T: 9 /* ScalarType.STRING */ },
{ no: 9, name: "open_id", kind: "scalar", T: 9 /* ScalarType.STRING */ },
{ no: 10, name: "avatar_url", kind: "scalar", T: 9 /* ScalarType.STRING */ },
{ no: 11, name: "password", kind: "scalar", T: 9 /* ScalarType.STRING */ },
{ no: 2, name: "username", kind: "scalar", T: 9 /* ScalarType.STRING */ },
{ no: 3, name: "role", kind: "enum", T: proto3.getEnumType(User_Role) },
{ no: 4, name: "email", kind: "scalar", T: 9 /* ScalarType.STRING */ },
{ no: 5, name: "nickname", kind: "scalar", T: 9 /* ScalarType.STRING */ },
{ no: 6, name: "open_id", kind: "scalar", T: 9 /* ScalarType.STRING */ },
{ no: 7, name: "avatar_url", kind: "scalar", T: 9 /* ScalarType.STRING */ },
{ no: 8, name: "password", kind: "scalar", T: 9 /* ScalarType.STRING */ },
{ no: 9, name: "row_status", kind: "enum", T: proto3.getEnumType(RowStatus) },
{ no: 10, name: "create_time", kind: "message", T: Timestamp },
{ no: 11, name: "update_time", kind: "message", T: Timestamp },
],
);
......@@ -83,39 +82,75 @@ export const UpdateUserResponse = proto3.makeMessageType(
);
/**
* @generated from message memos.api.v2.UserSetting
* @generated from message memos.api.v2.ListUserAccessTokensRequest
*/
export const UserSetting = proto3.makeMessageType(
"memos.api.v2.UserSetting",
export const ListUserAccessTokensRequest = proto3.makeMessageType(
"memos.api.v2.ListUserAccessTokensRequest",
() => [
{ no: 1, name: "user_id", kind: "scalar", T: 5 /* ScalarType.INT32 */ },
{ no: 2, name: "key", kind: "enum", T: proto3.getEnumType(UserSetting_Key) },
{ no: 3, name: "value", kind: "message", T: UserSettingValue },
{ no: 1, name: "username", kind: "scalar", T: 9 /* ScalarType.STRING */ },
],
);
/**
* @generated from enum memos.api.v2.UserSetting.Key
* @generated from message memos.api.v2.ListUserAccessTokensResponse
*/
export const UserSetting_Key = proto3.makeEnum(
"memos.api.v2.UserSetting.Key",
[
{no: 0, name: "KEY_UNSPECIFIED"},
{no: 1, name: "LOCALE"},
{no: 2, name: "APPEARANCE"},
{no: 3, name: "MEMO_VISIBILITY"},
{no: 4, name: "TELEGRAM_USER_ID"},
export const ListUserAccessTokensResponse = proto3.makeMessageType(
"memos.api.v2.ListUserAccessTokensResponse",
() => [
{ no: 1, name: "access_tokens", kind: "message", T: UserAccessToken, repeated: true },
],
);
/**
* @generated from message memos.api.v2.CreateUserAccessTokenRequest
*/
export const CreateUserAccessTokenRequest = proto3.makeMessageType(
"memos.api.v2.CreateUserAccessTokenRequest",
() => [
{ no: 1, name: "username", kind: "scalar", T: 9 /* ScalarType.STRING */ },
{ no: 2, name: "user_access_token", kind: "message", T: UserAccessToken },
],
);
/**
* @generated from message memos.api.v2.UserSettingValue
* @generated from message memos.api.v2.CreateUserAccessTokenResponse
*/
export const CreateUserAccessTokenResponse = proto3.makeMessageType(
"memos.api.v2.CreateUserAccessTokenResponse",
() => [
{ no: 1, name: "access_token", kind: "message", T: UserAccessToken },
],
);
/**
* @generated from message memos.api.v2.DeleteUserAccessTokenRequest
*/
export const DeleteUserAccessTokenRequest = proto3.makeMessageType(
"memos.api.v2.DeleteUserAccessTokenRequest",
() => [
{ no: 1, name: "username", kind: "scalar", T: 9 /* ScalarType.STRING */ },
{ no: 2, name: "access_token", kind: "scalar", T: 9 /* ScalarType.STRING */ },
],
);
/**
* @generated from message memos.api.v2.DeleteUserAccessTokenResponse
*/
export const DeleteUserAccessTokenResponse = proto3.makeMessageType(
"memos.api.v2.DeleteUserAccessTokenResponse",
[],
);
/**
* @generated from message memos.api.v2.UserAccessToken
*/
export const UserSettingValue = proto3.makeMessageType(
"memos.api.v2.UserSettingValue",
export const UserAccessToken = proto3.makeMessageType(
"memos.api.v2.UserAccessToken",
() => [
{ no: 1, name: "string_value", kind: "scalar", T: 9 /* ScalarType.STRING */, oneof: "value" },
{ no: 2, name: "visibility_value", kind: "enum", T: proto3.getEnumType(Visibility), oneof: "value" },
{ no: 1, name: "access_token", kind: "scalar", T: 9 /* ScalarType.STRING */ },
{ no: 2, name: "description", kind: "scalar", T: 9 /* ScalarType.STRING */ },
{ no: 3, name: "issued_at", kind: "message", T: Timestamp },
{ no: 4, name: "expires_at", kind: "message", T: Timestamp },
],
);
// @generated by protoc-gen-es v1.3.0
// @generated from file store/user_setting.proto (package memos.store, syntax proto3)
/* eslint-disable */
// @ts-nocheck
import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf";
import { Message, proto3 } from "@bufbuild/protobuf";
/**
* @generated from enum memos.store.UserSettingKey
*/
export declare enum UserSettingKey {
/**
* @generated from enum value: USER_SETTING_KEY_UNSPECIFIED = 0;
*/
UNSPECIFIED = 0,
}
/**
* @generated from message memos.store.UserSetting
*/
export declare class UserSetting extends Message<UserSetting> {
/**
* @generated from field: int32 user_id = 1;
*/
userId: number;
/**
* @generated from field: memos.store.UserSettingKey key = 2;
*/
key: UserSettingKey;
/**
* @generated from oneof memos.store.UserSetting.value
*/
value: {
/**
* @generated from field: memos.store.AccessTokensUserSetting access_tokens = 3;
*/
value: AccessTokensUserSetting;
case: "accessTokens";
} | { case: undefined; value?: undefined };
constructor(data?: PartialMessage<UserSetting>);
static readonly runtime: typeof proto3;
static readonly typeName = "memos.store.UserSetting";
static readonly fields: FieldList;
static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): UserSetting;
static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): UserSetting;
static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): UserSetting;
static equals(a: UserSetting | PlainMessage<UserSetting> | undefined, b: UserSetting | PlainMessage<UserSetting> | undefined): boolean;
}
/**
* @generated from message memos.store.AccessTokensUserSetting
*/
export declare class AccessTokensUserSetting extends Message<AccessTokensUserSetting> {
/**
* @generated from field: repeated memos.store.AccessTokensUserSetting.AccessToken access_tokens = 1;
*/
accessTokens: AccessTokensUserSetting_AccessToken[];
constructor(data?: PartialMessage<AccessTokensUserSetting>);
static readonly runtime: typeof proto3;
static readonly typeName = "memos.store.AccessTokensUserSetting";
static readonly fields: FieldList;
static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): AccessTokensUserSetting;
static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): AccessTokensUserSetting;
static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): AccessTokensUserSetting;
static equals(a: AccessTokensUserSetting | PlainMessage<AccessTokensUserSetting> | undefined, b: AccessTokensUserSetting | PlainMessage<AccessTokensUserSetting> | undefined): boolean;
}
/**
* @generated from message memos.store.AccessTokensUserSetting.AccessToken
*/
export declare class AccessTokensUserSetting_AccessToken extends Message<AccessTokensUserSetting_AccessToken> {
/**
* The access token is a JWT token.
* Including expiration time, issuer, etc.
*
* @generated from field: string access_token = 1;
*/
accessToken: string;
/**
* A description for the access token.
*
* @generated from field: string description = 2;
*/
description: string;
constructor(data?: PartialMessage<AccessTokensUserSetting_AccessToken>);
static readonly runtime: typeof proto3;
static readonly typeName = "memos.store.AccessTokensUserSetting.AccessToken";
static readonly fields: FieldList;
static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): AccessTokensUserSetting_AccessToken;
static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): AccessTokensUserSetting_AccessToken;
static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): AccessTokensUserSetting_AccessToken;
static equals(a: AccessTokensUserSetting_AccessToken | PlainMessage<AccessTokensUserSetting_AccessToken> | undefined, b: AccessTokensUserSetting_AccessToken | PlainMessage<AccessTokensUserSetting_AccessToken> | undefined): boolean;
}
// @generated by protoc-gen-es v1.3.0
// @generated from file store/user_setting.proto (package memos.store, syntax proto3)
/* eslint-disable */
// @ts-nocheck
import { proto3 } from "@bufbuild/protobuf";
/**
* @generated from enum memos.store.UserSettingKey
*/
export const UserSettingKey = proto3.makeEnum(
"memos.store.UserSettingKey",
[
{no: 0, name: "USER_SETTING_KEY_UNSPECIFIED", localName: "UNSPECIFIED"},
],
);
/**
* @generated from message memos.store.UserSetting
*/
export const UserSetting = proto3.makeMessageType(
"memos.store.UserSetting",
() => [
{ no: 1, name: "user_id", kind: "scalar", T: 5 /* ScalarType.INT32 */ },
{ no: 2, name: "key", kind: "enum", T: proto3.getEnumType(UserSettingKey) },
{ no: 3, name: "access_tokens", kind: "message", T: AccessTokensUserSetting, oneof: "value" },
],
);
/**
* @generated from message memos.store.AccessTokensUserSetting
*/
export const AccessTokensUserSetting = proto3.makeMessageType(
"memos.store.AccessTokensUserSetting",
() => [
{ no: 1, name: "access_tokens", kind: "message", T: AccessTokensUserSetting_AccessToken, repeated: true },
],
);
/**
* @generated from message memos.store.AccessTokensUserSetting.AccessToken
*/
export const AccessTokensUserSetting_AccessToken = proto3.makeMessageType(
"memos.store.AccessTokensUserSetting.AccessToken",
() => [
{ no: 1, name: "access_token", kind: "scalar", T: 9 /* ScalarType.STRING */ },
{ no: 2, name: "description", kind: "scalar", T: 9 /* ScalarType.STRING */ },
],
{localName: "AccessTokensUserSetting_AccessToken"},
);
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment