diff --git a/src/baseexpression.cpp b/src/baseexpression.cpp index 370fa9b..9a3bbfc 100644 --- a/src/baseexpression.cpp +++ b/src/baseexpression.cpp @@ -586,8 +586,13 @@ void BaseExpression::esc(const pt::WTextStream & val, pt::TextStream & stream, c void BaseExpression::esc(const pt::Space & space, pt::TextStream & stream, const FT & field_type) { pt::WTextStream tmp_stream; + bool pretty_print = field_type.is_pretty_print(); + + if( field_type.is_space() ) + space.serialize_to_space_stream(tmp_stream, pretty_print); + else + space.serialize_to_json_stream(tmp_stream, pretty_print); - space.serialize_to_space_stream(tmp_stream, true); esc(tmp_stream, stream, field_type); } diff --git a/src/dbconnector.cpp b/src/dbconnector.cpp index ae312a3..bc1169d 100644 --- a/src/dbconnector.cpp +++ b/src/dbconnector.cpp @@ -722,14 +722,30 @@ void DbConnector::get_value(const char * value_str, pt::Space & field_value, con { pt::SpaceParser space_parser; - if( space_parser.parse_space(value_str, field_value) != pt::SpaceParser::ok ) + if( field_type.is_space() ) { - field_value.clear(); - - if( log ) + if( space_parser.parse_space(value_str, field_value) != pt::SpaceParser::ok ) { - (*log) << pt::Log::log2 << "Morm: I cannot correctly parse the Space struct from the datebase" - << ", the raw string is: " << value_str << pt::Log::logend; + field_value.clear(); + + if( log ) + { + (*log) << pt::Log::log2 << "Morm: I cannot correctly parse the Space struct (space format) from the datebase" + << ", the raw string was: " << value_str << pt::Log::logend; + } + } + } + else + { + if( space_parser.parse_json(value_str, field_value) != pt::SpaceParser::ok ) + { + field_value.clear(); + + if( log ) + { + (*log) << pt::Log::log2 << "Morm: I cannot correctly parse the Space struct (json format) from the datebase" + << ", the raw string was: " << value_str << pt::Log::logend; + } } } } diff --git a/src/ft.h b/src/ft.h index deacf1f..d725ea0 100644 --- a/src/ft.h +++ b/src/ft.h @@ -61,6 +61,9 @@ public: dont_use_utf8 = 256, hexadecimal = 512, binary = 1024, + json = 2048, + space = 4096, + pretty_print = 8192, }; /* @@ -158,6 +161,20 @@ public: return is_flag_set(binary); } + bool is_json() const + { + return is_flag_set(json); + } + + bool is_space() const + { + return is_flag_set(space); + } + + bool is_pretty_print() const + { + return is_flag_set(pretty_print); + } };