init commit
This commit is contained in:
107
proto/store/user_setting.proto
Normal file
107
proto/store/user_setting.proto
Normal file
@@ -0,0 +1,107 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package memos.store;
|
||||
|
||||
import "google/protobuf/timestamp.proto";
|
||||
|
||||
option go_package = "gen/store";
|
||||
|
||||
message UserSetting {
|
||||
enum Key {
|
||||
KEY_UNSPECIFIED = 0;
|
||||
// General user settings.
|
||||
GENERAL = 1;
|
||||
// User authentication sessions.
|
||||
SESSIONS = 2;
|
||||
// Access tokens for the user.
|
||||
ACCESS_TOKENS = 3;
|
||||
// The shortcuts of the user.
|
||||
SHORTCUTS = 4;
|
||||
// The webhooks of the user.
|
||||
WEBHOOKS = 5;
|
||||
}
|
||||
|
||||
int32 user_id = 1;
|
||||
|
||||
Key key = 2;
|
||||
oneof value {
|
||||
GeneralUserSetting general = 3;
|
||||
SessionsUserSetting sessions = 4;
|
||||
AccessTokensUserSetting access_tokens = 5;
|
||||
ShortcutsUserSetting shortcuts = 6;
|
||||
WebhooksUserSetting webhooks = 7;
|
||||
}
|
||||
}
|
||||
|
||||
message GeneralUserSetting {
|
||||
// The user's locale.
|
||||
string locale = 1;
|
||||
// The user's appearance setting.
|
||||
string appearance = 2;
|
||||
// The user's memo visibility setting.
|
||||
string memo_visibility = 3;
|
||||
// The user's theme preference.
|
||||
// This references a CSS file in the web/public/themes/ directory.
|
||||
string theme = 4;
|
||||
}
|
||||
|
||||
message SessionsUserSetting {
|
||||
message Session {
|
||||
// Unique session identifier.
|
||||
string session_id = 1;
|
||||
// Timestamp when the session was created.
|
||||
google.protobuf.Timestamp create_time = 2;
|
||||
// Timestamp when the session was last accessed.
|
||||
// Used for sliding expiration calculation (last_accessed_time + 2 weeks).
|
||||
google.protobuf.Timestamp last_accessed_time = 3;
|
||||
// Client information associated with this session.
|
||||
ClientInfo client_info = 4;
|
||||
}
|
||||
|
||||
message ClientInfo {
|
||||
// User agent string of the client.
|
||||
string user_agent = 1;
|
||||
// IP address of the client.
|
||||
string ip_address = 2;
|
||||
// Optional. Device type (e.g., "mobile", "desktop", "tablet").
|
||||
string device_type = 3;
|
||||
// Optional. Operating system (e.g., "iOS 17.0", "Windows 11").
|
||||
string os = 4;
|
||||
// Optional. Browser name and version (e.g., "Chrome 119.0").
|
||||
string browser = 5;
|
||||
}
|
||||
|
||||
repeated Session sessions = 1;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
message ShortcutsUserSetting {
|
||||
message Shortcut {
|
||||
string id = 1;
|
||||
string title = 2;
|
||||
string filter = 3;
|
||||
}
|
||||
repeated Shortcut shortcuts = 1;
|
||||
}
|
||||
|
||||
message WebhooksUserSetting {
|
||||
message Webhook {
|
||||
// Unique identifier for the webhook
|
||||
string id = 1;
|
||||
// Descriptive title for the webhook
|
||||
string title = 2;
|
||||
// The webhook URL endpoint
|
||||
string url = 3;
|
||||
}
|
||||
repeated Webhook webhooks = 1;
|
||||
}
|
||||
Reference in New Issue
Block a user