25 out <<
"#include \"Writable_Database.h\"\n";
26 out <<
"#include \"joedb/Writable.h\"\n";
27 out <<
"#include \"joedb/journal/Readonly_Memory_File.h\"\n";
29 out <<
"#include <ctime>\n\n";
35 void Writable_Database::write_comment(const std::string &comment)
38 journal.comment(comment);
42 void Writable_Database::write_timestamp()
45 journal.timestamp(std::time(nullptr));
49 void Writable_Database::write_timestamp(int64_t timestamp)
52 journal.timestamp(timestamp);
56 void Writable_Database::write_valid_data()
63 void Writable_Database::play_journal()
66 max_record_id = size_t(journal.get_checkpoint_position());
67 ready_to_write = false;
68 journal.play_until_checkpoint(*this);
69 ready_to_write = true;
74 void Writable_Database::auto_upgrade()
77 const size_t file_schema_size = size_t(schema_file.get_size());
79 if (file_schema_size < detail::schema_string_size)
81 journal.comment("Automatic schema upgrade");
83 joedb::Readonly_Memory_File schema_file(detail::schema_string, detail::schema_string_size);
84 joedb::Readonly_Journal schema_journal(schema_file);
86 schema_journal.set_position(int64_t(file_schema_size));
87 schema_journal.play_until(journal, detail::schema_string_size);
89 schema_journal.set_position(int64_t(file_schema_size));
90 upgrading_schema = true;
91 schema_journal.play_until(*this, detail::schema_string_size);
92 upgrading_schema = false;
99 Writable_Database::Writable_Database
102 joedb::Buffered_File &file,
103 bool perform_initialization,
104 joedb::Readonly_Journal::Check check,
105 joedb::Commit_Level commit_level
107 journal(file, check, commit_level)
111 if (perform_initialization)
116 Writable_Database::Writable_Database
119 joedb::Buffered_File &file,
120 joedb::Readonly_Journal::Check check,
121 joedb::Commit_Level commit_level
123 Writable_Database(file, true, check, commit_level)
128 void Writable_Database::check_single_row()