14 bool save(
const QString& filePath,
15 const QList<Note>& notes,
16 const QList<Schema>& schemas,
17 const QMap<QString, int>& stats)
override
19 using namespace rapidjson;
21 PrettyWriter<StringBuffer> writer(sb);
25 writer.Key(
"schemas");
27 for (
const auto& schema : schemas) {
30 writer.String(schema.getName().toStdString().c_str());
34 for (
const auto& field : schema.getFields()) {
36 writer.Key(
"name"); writer.String(field.name.toStdString().c_str());
37 writer.Key(
"type"); writer.String(field.type.toStdString().c_str());
47 for (
const auto& note : notes) {
49 writer.Key(
"title"); writer.String(note.getTitle().toStdString().c_str());
50 writer.Key(
"schemaId"); writer.Int(note.getSchemaId());
54 auto fields = note.getFields();
55 for (
auto it = fields.begin(); it != fields.end(); ++it) {
56 writer.Key(it.key().toStdString().c_str());
57 writer.String(it.value().toStdString().c_str());
63 for (
const auto& tag : note.getTags()) {
64 writer.String(tag.toStdString().c_str());
68 writer.Key(
"image"); writer.String(note.getImage().toStdString().c_str());
69 writer.Key(
"pinned"); writer.Bool(note.isPinned());
77 for(
auto it = stats.begin(); it != stats.end(); ++it) {
78 writer.Key(it.key().toStdString().c_str());
79 writer.Int(it.value());
85 std::ofstream file(filePath.toStdString());
86 if (!file.is_open())
return false;
88 file << sb.GetString();
89 qInfo() <<
"Saved via RapidJSON Strategy";