gitdataai/libs/rpc/proto/admin.proto
ZhenYi 418f9a5d8b
Some checks are pending
CI / Rust Lint & Check (push) Waiting to run
CI / Rust Tests (push) Waiting to run
CI / Frontend Lint & Type Check (push) Waiting to run
CI / Frontend Build (push) Blocked by required conditions
feat(rpc): migrate admin from Redis Pub/Sub JSON-RPC to Tonic gRPC
- libs/rpc/proto/: admin.proto with 8 RPC methods
- libs/rpc/admin/: tonic server impl (SessionAdminService), client
  wrapper (AdminGrpcClient), types, generated/ tonic-prost build output
- libs/rpc/build.rs: tonic-prost-build two-step (proto -> message types
  + manual service defs)
- libs/rpc/lib.rs: module re-exports
- libs/session_manager/: session manager types used by admin service
2026-04-21 13:44:25 +08:00

110 lines
2.8 KiB
Protocol Buffer

syntax = "proto3";
package admin;
import "google/protobuf/timestamp.proto";
// ---------------------------------------------------------------------------
// Session entities
// ---------------------------------------------------------------------------
message UserSession {
string session_id = 1;
string user_id = 2;
string workspace_id = 3;
optional string ip_address = 4;
optional string user_agent = 5;
google.protobuf.Timestamp connected_at = 6;
google.protobuf.Timestamp last_heartbeat = 7;
}
message SessionInfo {
string user_id = 1;
uint32 session_count = 2;
repeated string workspaces = 3;
optional UserSession latest_session = 4;
}
enum OnlineStatus {
ONLINE_STATUS_UNSPECIFIED = 0;
ONLINE_STATUS_ONLINE = 1;
ONLINE_STATUS_IDLE = 2;
ONLINE_STATUS_OFFLINE = 3;
}
// ---------------------------------------------------------------------------
// Requests & Responses
// ---------------------------------------------------------------------------
message ListWorkspaceSessionsRequest {
string workspace_id = 1;
}
message ListWorkspaceSessionsResponse {
repeated UserSession sessions = 1;
}
message ListUserSessionsRequest {
string user_id = 1;
}
message ListUserSessionsResponse {
repeated UserSession sessions = 1;
}
message KickUserFromWorkspaceRequest {
string user_id = 1;
string workspace_id = 2;
}
message KickUserFromWorkspaceResponse {
uint32 kicked_count = 1;
}
message KickUserRequest {
string user_id = 1;
}
message KickUserResponse {
uint32 kicked_count = 1;
}
message GetUserStatusRequest {
string user_id = 1;
}
message GetUserStatusResponse {
OnlineStatus status = 1;
}
message GetUserInfoRequest {
string user_id = 1;
}
message GetUserInfoResponse {
optional SessionInfo info = 1;
}
message GetWorkspaceOnlineUsersRequest {
string workspace_id = 1;
}
message GetWorkspaceOnlineUsersResponse {
repeated string user_ids = 1;
}
message IsUserOnlineRequest {
string user_id = 1;
}
message IsUserOnlineResponse {
bool online = 1;
}
// ---------------------------------------------------------------------------
// Service
// ---------------------------------------------------------------------------
service SessionAdmin {
rpc ListWorkspaceSessions(ListWorkspaceSessionsRequest) returns (ListWorkspaceSessionsResponse);
rpc ListUserSessions(ListUserSessionsRequest) returns (ListUserSessionsResponse);
rpc KickUserFromWorkspace(KickUserFromWorkspaceRequest) returns (KickUserFromWorkspaceResponse);
rpc KickUser(KickUserRequest) returns (KickUserResponse);
rpc GetUserStatus(GetUserStatusRequest) returns (GetUserStatusResponse);
rpc GetUserInfo(GetUserInfoRequest) returns (GetUserInfoResponse);
rpc GetWorkspaceOnlineUsers(GetWorkspaceOnlineUsersRequest) returns (GetWorkspaceOnlineUsersResponse);
rpc IsUserOnline(IsUserOnlineRequest) returns (IsUserOnlineResponse);
}