From 464c0b6698215b0c56bd4682fc82ef7eedffca4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jind=C5=99ich=20Moravec?= Date: Sat, 27 Jan 2024 18:47:43 +0100 Subject: [PATCH] fix: parse uuid with 'u' prefix --- parser/src/parsing/literal.rs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/parser/src/parsing/literal.rs b/parser/src/parsing/literal.rs index 44e7910..13d2b83 100644 --- a/parser/src/parsing/literal.rs +++ b/parser/src/parsing/literal.rs @@ -100,17 +100,17 @@ pub fn parse_string(input: &str) -> IResult<&str, Value> { Ok((input, Value::Indexable(IndexableValue::String(value)))) } -fn parse_uuid(input: &str) -> IResult<&str, Value> { - // TODO: make it actually uuid - u64(input).map(|(input, v)| { +pub fn parse_uuid(input: &str) -> IResult<&str, Value> { + let (input, value) = pair(char('u'), u64)(input).map(|(input, (_, v))| { (input, Value::Indexable(IndexableValue::Uuid(v))) - }) + })?; + Ok((input, value)) } #[cfg(test)] mod tests { use minisql::type_system::{IndexableValue, Value}; - use crate::parsing::literal::{parse_db_value, parse_string}; + use crate::parsing::literal::{parse_db_value, parse_string, parse_uuid}; #[test] @@ -161,4 +161,9 @@ mod tests { fn test_parse_int() { assert_eq!(parse_db_value("5134616"), Ok(("", Value::Indexable(IndexableValue::Int(5134616))))); } + + #[test] + fn test_parse_uuid() { + assert_eq!(parse_uuid("u131515"), Ok(("", Value::Indexable(IndexableValue::Uuid(131515))))) + } }