feat: enhance validation and serialization with fiscal code checks and JSON schema support
This commit is contained in:
+41
-2
@@ -6,7 +6,31 @@
|
||||
|
||||
namespace visione::repositories
|
||||
{
|
||||
Json::Value scalarToJson(JsonFieldType type, const drogon::orm::Field &field)
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case JsonFieldType::String:
|
||||
return Json::Value(field.as<std::string>());
|
||||
case JsonFieldType::Int64:
|
||||
return Json::Value(Json::Int64(field.as<long long>()));
|
||||
case JsonFieldType::UInt64:
|
||||
return Json::Value(Json::UInt64(field.as<unsigned long long>()));
|
||||
case JsonFieldType::Double:
|
||||
return Json::Value(field.as<double>());
|
||||
case JsonFieldType::Bool:
|
||||
return Json::Value(field.as<bool>());
|
||||
}
|
||||
return Json::nullValue;
|
||||
}
|
||||
|
||||
Json::Value rowToJson(const drogon::orm::Row &row)
|
||||
{
|
||||
static const JsonRowSchema emptySchema;
|
||||
return rowToJson(row, emptySchema);
|
||||
}
|
||||
|
||||
Json::Value rowToJson(const drogon::orm::Row &row, const JsonRowSchema &schema)
|
||||
{
|
||||
Json::Value object(Json::objectValue);
|
||||
for (const auto &field : row)
|
||||
@@ -17,18 +41,33 @@ Json::Value rowToJson(const drogon::orm::Row &row)
|
||||
}
|
||||
else
|
||||
{
|
||||
object[field.name()] = field.as<std::string>();
|
||||
const auto it = schema.find(field.name());
|
||||
if (it == schema.end())
|
||||
{
|
||||
object[field.name()] = field.as<std::string>();
|
||||
}
|
||||
else
|
||||
{
|
||||
object[field.name()] = scalarToJson(it->second, field);
|
||||
}
|
||||
}
|
||||
}
|
||||
return object;
|
||||
}
|
||||
|
||||
Json::Value resultToJson(const drogon::orm::Result &result)
|
||||
{
|
||||
static const JsonRowSchema emptySchema;
|
||||
return resultToJson(result, emptySchema);
|
||||
}
|
||||
|
||||
Json::Value resultToJson(const drogon::orm::Result &result,
|
||||
const JsonRowSchema &schema)
|
||||
{
|
||||
Json::Value array(Json::arrayValue);
|
||||
for (const auto &row : result)
|
||||
{
|
||||
array.append(rowToJson(row));
|
||||
array.append(rowToJson(row, schema));
|
||||
}
|
||||
return array;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user