25 out <<
"#include \"Writable_Database.h\"\n";
26 out <<
"#include \"joedb/journal/Readonly_Memory_File.h\"\n";
28 out <<
"#include <ctime>\n\n";
34 void Writable_Database::write_comment(const std::string &comment)
37 journal.comment(comment);
41 void Writable_Database::write_timestamp()
44 journal.timestamp(std::time(nullptr));
48 void Writable_Database::write_timestamp(int64_t timestamp)
51 journal.timestamp(timestamp);
55 void Writable_Database::write_valid_data()
62 void Writable_Database::play_journal()
65 max_record_id = size_t(journal.get_checkpoint());
66 ready_to_write = false;
67 journal.play_until_checkpoint(*this);
68 ready_to_write = true;
73 void Writable_Database::auto_upgrade()
76 const size_t file_schema_size = size_t(schema_file.get_size());
78 if (file_schema_size < detail::schema_string_size)
80 journal.comment("Automatic schema upgrade");
82 joedb::Readonly_Memory_File schema_file(detail::schema_string, detail::schema_string_size);
83 joedb::Readonly_Journal schema_journal(schema_file);
85 schema_journal.skip_directly_to(int64_t(file_schema_size));
86 schema_journal.raw_play_until(journal, detail::schema_string_size);
88 schema_journal.skip_directly_to(int64_t(file_schema_size));
89 upgrading_schema = true;
90 schema_journal.raw_play_until(*this, detail::schema_string_size);
91 upgrading_schema = false;
94 journal.soft_checkpoint();
99 void Writable_Database::initialize()
109 Writable_Database::Writable_Database
112 joedb::Buffered_File &file,
113 joedb::Construction_Flags flags,
114 bool perform_initialization
116 journal(joedb::Journal_Construction_Lock(file, flags))
120 if (perform_initialization)
125 Writable_Database::Writable_Database(joedb::Buffered_File &file):
127 Writable_Database(file, joedb::Construction_Flags::none, true)