gitdataai/libs/rpc/build.rs
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

94 lines
3.9 KiB
Rust

fn main() -> Result<(), Box<dyn std::error::Error>> {
let proto_file = "proto/admin.proto";
let out_dir = "admin/generated";
std::fs::create_dir_all(out_dir)?;
tonic_prost_build::configure()
.out_dir(out_dir)
.compile_protos(&[proto_file], &["proto/"])?;
let service = tonic_prost_build::manual::Service::builder()
.name("SessionAdmin")
.package("admin")
.method(
tonic_prost_build::manual::Method::builder()
.name("list_workspace_sessions")
.route_name("ListWorkspaceSessions")
.input_type("crate::admin::generated::admin::ListWorkspaceSessionsRequest")
.output_type("crate::admin::generated::admin::ListWorkspaceSessionsResponse")
.codec_path("tonic_prost::ProstCodec")
.build(),
)
.method(
tonic_prost_build::manual::Method::builder()
.name("list_user_sessions")
.route_name("ListUserSessions")
.input_type("crate::admin::generated::admin::ListUserSessionsRequest")
.output_type("crate::admin::generated::admin::ListUserSessionsResponse")
.codec_path("tonic_prost::ProstCodec")
.build(),
)
.method(
tonic_prost_build::manual::Method::builder()
.name("kick_user_from_workspace")
.route_name("KickUserFromWorkspace")
.input_type("crate::admin::generated::admin::KickUserFromWorkspaceRequest")
.output_type("crate::admin::generated::admin::KickUserFromWorkspaceResponse")
.codec_path("tonic_prost::ProstCodec")
.build(),
)
.method(
tonic_prost_build::manual::Method::builder()
.name("kick_user")
.route_name("KickUser")
.input_type("crate::admin::generated::admin::KickUserRequest")
.output_type("crate::admin::generated::admin::KickUserResponse")
.codec_path("tonic_prost::ProstCodec")
.build(),
)
.method(
tonic_prost_build::manual::Method::builder()
.name("get_user_status")
.route_name("GetUserStatus")
.input_type("crate::admin::generated::admin::GetUserStatusRequest")
.output_type("crate::admin::generated::admin::GetUserStatusResponse")
.codec_path("tonic_prost::ProstCodec")
.build(),
)
.method(
tonic_prost_build::manual::Method::builder()
.name("get_user_info")
.route_name("GetUserInfo")
.input_type("crate::admin::generated::admin::GetUserInfoRequest")
.output_type("crate::admin::generated::admin::GetUserInfoResponse")
.codec_path("tonic_prost::ProstCodec")
.build(),
)
.method(
tonic_prost_build::manual::Method::builder()
.name("get_workspace_online_users")
.route_name("GetWorkspaceOnlineUsers")
.input_type("crate::admin::generated::admin::GetWorkspaceOnlineUsersRequest")
.output_type("crate::admin::generated::admin::GetWorkspaceOnlineUsersResponse")
.codec_path("tonic_prost::ProstCodec")
.build(),
)
.method(
tonic_prost_build::manual::Method::builder()
.name("is_user_online")
.route_name("IsUserOnline")
.input_type("crate::admin::generated::admin::IsUserOnlineRequest")
.output_type("crate::admin::generated::admin::IsUserOnlineResponse")
.codec_path("tonic_prost::ProstCodec")
.build(),
)
.build();
tonic_prost_build::manual::Builder::new()
.out_dir(out_dir)
.build_transport(true)
.compile(&[service]);
Ok(())
}