This commit is contained in:
Ihor Andrianov 2025-03-16 15:31:06 +02:00
parent 23d7d82b6c
commit 328ebfcd9e
No known key found for this signature in database
2 changed files with 21 additions and 25 deletions

View file

@ -192,22 +192,21 @@ pub enum ElementType {
RESERVED3 = 15,
}
impl Into<String> for ElementType {
fn into(self) -> String {
let result = match self {
ElementType::ARRAY => "array",
ElementType::OBJECT => "object",
ElementType::NULL => "null",
ElementType::TRUE => "true",
ElementType::FALSE => "false",
ElementType::FLOAT | ElementType::FLOAT5 => "real",
ElementType::INT | ElementType::INT5 => "integer",
impl From<ElementType> for String {
fn from(element_type: ElementType) -> String {
match element_type {
ElementType::ARRAY => "array".to_string(),
ElementType::OBJECT => "object".to_string(),
ElementType::NULL => "null".to_string(),
ElementType::TRUE => "true".to_string(),
ElementType::FALSE => "false".to_string(),
ElementType::FLOAT | ElementType::FLOAT5 => "real".to_string(),
ElementType::INT | ElementType::INT5 => "integer".to_string(),
ElementType::TEXT | ElementType::TEXT5 | ElementType::TEXTJ | ElementType::TEXTRAW => {
"text"
"text".to_string()
}
_ => unreachable!(),
};
result.into()
}
}
}
@ -412,7 +411,7 @@ impl Jsonb {
pub fn is_valid(&self) -> Result<ElementType> {
match self.read_header(0) {
Ok((header, offset)) => {
if let Some(_) = self.data.get(offset..offset + header.1) {
if self.data.get(offset..offset + header.1).is_some() {
Ok(header.0)
} else {
bail_parse_error!("malformed JSON")
@ -1602,7 +1601,7 @@ fn compare(key: (&str, ElementType), path_key: (&str, bool)) -> bool {
_ => {}
};
return false;
false
}
#[inline]

View file

@ -87,7 +87,7 @@ fn convert_dbtype_to_jsonb(val: &OwnedValue) -> crate::Result<Jsonb> {
match val {
OwnedValue::Text(text) => Jsonb::from_str(text.as_str()),
OwnedValue::Blob(blob) => {
let json = Jsonb::from_raw_data(&blob);
let json = Jsonb::from_raw_data(blob);
json.is_valid()?;
Ok(json)
}
@ -446,12 +446,12 @@ pub fn json_type(value: &OwnedValue, path: Option<&OwnedValue>) -> crate::Result
let json = convert_dbtype_to_jsonb(value)?;
if let Ok((_, element_type)) = json.get_by_path(&path) {
return Ok(OwnedValue::Text(Text::json(element_type.into())));
Ok(OwnedValue::Text(Text::json(element_type.into())))
} else {
return Ok(OwnedValue::Null);
Ok(OwnedValue::Null)
}
} else {
return Ok(OwnedValue::Null);
Ok(OwnedValue::Null)
}
}
@ -692,12 +692,9 @@ pub fn is_json_valid(json_value: &OwnedValue) -> OwnedValue {
if matches!(json_value, OwnedValue::Null) {
return OwnedValue::Null;
}
let json_is_ok = convert_dbtype_to_jsonb(json_value)
.and_then(|_| {
return Ok(OwnedValue::Integer(1));
})
.unwrap_or(OwnedValue::Integer(0));
json_is_ok
convert_dbtype_to_jsonb(json_value)
.map(|_| OwnedValue::Integer(1))
.unwrap_or(OwnedValue::Integer(0))
}
pub fn json_quote(value: &OwnedValue) -> crate::Result<OwnedValue> {