surrealdb_core/sql/value/
generate.rsuse crate::err::Error;
use crate::sql::id::Id;
use crate::sql::table::Table;
use crate::sql::thing::Thing;
use crate::sql::value::Value;
impl Value {
pub(crate) fn generate(self, tb: &Table, retable: bool) -> Result<Thing, Error> {
match self {
Value::Number(id) if id.is_float() => Ok(Thing {
tb: tb.0.to_string(),
id: id.as_int().into(),
}),
Value::Number(id) if id.is_int() => Ok(Thing {
tb: tb.0.to_string(),
id: id.as_int().into(),
}),
Value::Strand(id) if !id.is_empty() => Ok(Thing {
tb: tb.0.to_string(),
id: id.into(),
}),
Value::Object(id) => Ok(Thing {
tb: tb.0.to_string(),
id: id.into(),
}),
Value::Array(id) => Ok(Thing {
tb: tb.0.to_string(),
id: id.into(),
}),
Value::Uuid(id) => Ok(Thing {
tb: tb.0.to_string(),
id: id.into(),
}),
Value::None => Ok(Thing {
tb: tb.0.to_string(),
id: Id::rand(),
}),
Value::Thing(id) => match retable {
true => Ok(Thing {
tb: tb.0.to_string(),
id: id.id,
}),
false => match tb.0 == id.tb {
true => Ok(id),
false => Ok(Thing {
tb: tb.0.to_string(),
id: id.id,
}),
},
},
id => Err(Error::IdInvalid {
value: id.to_string(),
}),
}
}
}