surrealdb_core/rpc/format/
json.rs

1use crate::rpc::request::Request;
2use crate::rpc::RpcError;
3use crate::sql::Value;
4use crate::syn;
5
6use super::ResTrait;
7
8pub fn parse_value(val: &[u8]) -> Result<Value, RpcError> {
9	syn::value_legacy_strand(std::str::from_utf8(val).or(Err(RpcError::ParseError))?)
10		.or(Err(RpcError::ParseError))
11}
12
13pub fn req(val: &[u8]) -> Result<Request, RpcError> {
14	parse_value(val)?.try_into()
15}
16
17pub fn res(res: impl ResTrait) -> Result<Vec<u8>, RpcError> {
18	// Convert the response into simplified JSON
19	let val: Value = res.into();
20	let val = val.into_json();
21	// Serialize the response with simplified type information
22	let res = serde_json::to_string(&val).unwrap();
23	// Return the message length, and message as binary
24	Ok(res.into())
25}