added flags FT::json and FT::space for pt::Space class - serializing/parsing to/from json/space

This commit is contained in:
Tomasz Sowa 2021-08-12 21:56:32 +02:00
parent d162ca13bb
commit f94a9e27db
3 changed files with 45 additions and 7 deletions

View File

@ -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);
}

View File

@ -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;
}
}
}
}

View File

@ -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);
}
};