forked from projectmoon/tenebrous-dicebot
Avoid random clones in API.
This commit is contained in:
parent
05157507aa
commit
57ab6a51da
|
@ -41,20 +41,17 @@ pub struct Context {
|
||||||
pub dicebot_client: DicebotGrpcClient,
|
pub dicebot_client: DicebotGrpcClient,
|
||||||
}
|
}
|
||||||
|
|
||||||
// To make our context usable by Juniper, we have to implement a marker trait.
|
/// Marker trait to make the context object usable in GraphQL.
|
||||||
impl juniper::Context for Context {}
|
impl juniper::Context for Context {}
|
||||||
|
|
||||||
#[derive(Clone, Copy, Debug)]
|
#[derive(Clone, Copy, Debug)]
|
||||||
pub struct Query;
|
pub struct Query;
|
||||||
|
|
||||||
#[graphql_object(
|
#[graphql_object(
|
||||||
// Here we specify the context type for the object.
|
context = Context,
|
||||||
// We need to do this in every type that
|
|
||||||
// needs access to the context.
|
|
||||||
context = Context,
|
|
||||||
)]
|
)]
|
||||||
impl Query {
|
impl Query {
|
||||||
fn apiVersion() -> &str {
|
fn api_version() -> &str {
|
||||||
"1.0"
|
"1.0"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,9 +62,9 @@ impl Query {
|
||||||
variable: String,
|
variable: String,
|
||||||
) -> FieldResult<UserVariable> {
|
) -> FieldResult<UserVariable> {
|
||||||
let request = TonicRequest::new(GetVariableRequest {
|
let request = TonicRequest::new(GetVariableRequest {
|
||||||
room_id: room_id.clone(),
|
room_id,
|
||||||
user_id: user_id.clone(),
|
user_id,
|
||||||
variable_name: variable.clone(),
|
variable_name: variable,
|
||||||
});
|
});
|
||||||
|
|
||||||
let response = context
|
let response = context
|
||||||
|
@ -78,17 +75,15 @@ impl Query {
|
||||||
.into_inner();
|
.into_inner();
|
||||||
|
|
||||||
Ok(UserVariable {
|
Ok(UserVariable {
|
||||||
user_id: user_id.clone(),
|
user_id: response.user_id,
|
||||||
room_id: room_id.clone(),
|
room_id: response.room_id,
|
||||||
variable_name: variable.clone(),
|
variable_name: response.variable_name,
|
||||||
value: response.value,
|
value: response.value,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn user_rooms(context: &Context, user_id: String) -> FieldResult<UserRoomList> {
|
async fn user_rooms(context: &Context, user_id: String) -> FieldResult<UserRoomList> {
|
||||||
let request = TonicRequest::new(UserIdRequest {
|
let request = TonicRequest::new(UserIdRequest { user_id });
|
||||||
user_id: user_id.clone(),
|
|
||||||
});
|
|
||||||
|
|
||||||
let response = context
|
let response = context
|
||||||
.dicebot_client
|
.dicebot_client
|
||||||
|
@ -98,7 +93,7 @@ impl Query {
|
||||||
.into_inner();
|
.into_inner();
|
||||||
|
|
||||||
Ok(UserRoomList {
|
Ok(UserRoomList {
|
||||||
user_id,
|
user_id: response.user_id,
|
||||||
rooms: response
|
rooms: response
|
||||||
.rooms
|
.rooms
|
||||||
.into_iter()
|
.into_iter()
|
||||||
|
|
|
@ -63,7 +63,12 @@ impl Dicebot for DicebotRpcService {
|
||||||
.get_user_variable(&request.user_id, &request.room_id, &request.variable_name)
|
.get_user_variable(&request.user_id, &request.room_id, &request.variable_name)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
Ok(Response::new(GetVariableReply { value }))
|
Ok(Response::new(GetVariableReply {
|
||||||
|
user_id: request.user_id.clone(),
|
||||||
|
room_id: request.room_id.clone(),
|
||||||
|
variable_name: request.variable_name.clone(),
|
||||||
|
value,
|
||||||
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn get_all_variables(
|
async fn get_all_variables(
|
||||||
|
@ -76,7 +81,11 @@ impl Dicebot for DicebotRpcService {
|
||||||
.get_user_variables(&request.user_id, &request.room_id)
|
.get_user_variables(&request.user_id, &request.room_id)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
Ok(Response::new(GetAllVariablesReply { variables }))
|
Ok(Response::new(GetAllVariablesReply {
|
||||||
|
user_id: request.user_id.clone(),
|
||||||
|
room_id: request.user_id.clone(),
|
||||||
|
variables,
|
||||||
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn rooms_for_user(
|
async fn rooms_for_user(
|
||||||
|
@ -111,6 +120,9 @@ impl Dicebot for DicebotRpcService {
|
||||||
|
|
||||||
rooms.sort_by(sort);
|
rooms.sort_by(sort);
|
||||||
|
|
||||||
Ok(Response::new(RoomsListReply { rooms }))
|
Ok(Response::new(RoomsListReply {
|
||||||
|
user_id: user_id.into_string(),
|
||||||
|
rooms,
|
||||||
|
}))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,10 @@ message GetVariableRequest {
|
||||||
}
|
}
|
||||||
|
|
||||||
message GetVariableReply {
|
message GetVariableReply {
|
||||||
int32 value = 1;
|
string user_id = 1;
|
||||||
|
string room_id = 2;
|
||||||
|
string variable_name = 3;
|
||||||
|
int32 value = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
message GetAllVariablesRequest {
|
message GetAllVariablesRequest {
|
||||||
|
@ -24,7 +27,9 @@ message GetAllVariablesRequest {
|
||||||
}
|
}
|
||||||
|
|
||||||
message GetAllVariablesReply {
|
message GetAllVariablesReply {
|
||||||
map<string, int32> variables = 1;
|
string user_id = 1;
|
||||||
|
string room_id = 2;
|
||||||
|
map<string, int32> variables = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
message SetVariableRequest {
|
message SetVariableRequest {
|
||||||
|
@ -48,5 +53,6 @@ message RoomsListReply {
|
||||||
string display_name = 2;
|
string display_name = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
repeated Room rooms = 1;
|
string user_id = 1;
|
||||||
|
repeated Room rooms = 2;
|
||||||
}
|
}
|
Loading…
Reference in New Issue