use gremlin_client::GValue;
mod edge;
mod gid;
mod gkey;
mod glist;
mod map;
mod path;
mod vertex;
use anyhow::{anyhow, Result};
pub fn fmt(value: &GValue) -> Result<String> {
let result = match value {
GValue::Vertex(v) => vertex::fmt(v),
GValue::Edge(e) => edge::fmt(e),
GValue::Map(map) => map::fmt(map)?,
GValue::List(list) => glist::fmt(list)?,
GValue::Int32(n) => n.to_string(),
GValue::Int64(n) => n.to_string(),
GValue::String(n) => n.to_string(),
GValue::Uuid(uuid) => uuid.to_string(),
GValue::Date(date) => date.to_string(),
GValue::Double(n) => n.to_string(),
GValue::Path(path) => path::fmt(path)?,
_ => return Err(anyhow!("Printing no supported for {:?}", value)),
};
Ok(result)
}