12#ifndef tutorial_rpc_population_Database_Writable_declared
13#define tutorial_rpc_population_Database_Writable_declared
29 extern const char * schema_string;
30 inline constexpr size_t schema_string_size = 89;
33 class container_of_city;
34 class container_of_data;
45 if (table_id == Table_Id(1))
47 else if (table_id == Table_Id(2))
55 if (table_id == Table_Id(1))
63 else if (table_id == Table_Id(2))
82 if (table_id == Table_Id(1))
84 else if (table_id == Table_Id(2))
103 to_underlying(record_id) < 0 ||
109 if (table_id == Table_Id(1))
115 else if (table_id == Table_Id(2))
128 const std::string& value
132 if (table_id == Table_Id(2))
134 if (field_id == Field_Id(1))
152 if (table_id == Table_Id(2))
154 if (field_id == Field_Id(3))
172 if (table_id == Table_Id(2))
174 if (field_id == Field_Id(2))
189 const std::string *value
193 if (table_id == Table_Id(2))
195 if (field_id == Field_Id(1))
214 if (table_id == Table_Id(2))
216 if (field_id == Field_Id(3))
235 if (table_id == Table_Id(2))
237 if (field_id == Field_Id(2))
255 if (table_id == Table_Id(2))
258 if (field_id == Field_Id(1))
260 return (
storage_of_data.field_value_of_city_name.data() + to_underlying(record_id));
276 if (table_id == Table_Id(2))
279 if (field_id == Field_Id(3))
281 return (
storage_of_data.field_value_of_population.data() + to_underlying(record_id));
297 if (table_id == Table_Id(2))
300 if (field_id == Field_Id(2))
329 schema_file_size < pos ||
330 schema_file_size > detail::schema_string_size ||
333 detail::schema_string + pos,
335 schema_file_size - pos
359 const std::string &name
369 const std::string &name,
377 void drop_field(Table_Id table_id, Field_Id field_id)
override
387 const std::string &name
394 void custom(
const std::string &name)
override
425 throw_exception<joedb::Out_Of_Date>(
"Schema is out of date. Can't upgrade a read-only database.");
bool is_used_vector(Record_Id index, size_t size) const
void replay_log(Writable &writable)
int64_t get_checkpoint() const
void add_field(Table_Id table_id, const std::string &name, Type type) override
void soft_checkpoint() override
void custom(const std::string &name) override
void create_table(const std::string &name) override
void rename_table(Table_Id table_id, const std::string &name) override
void drop_table(Table_Id table_id) override
void rename_field(Table_Id table_id, Field_Id field_id, const std::string &name) override
void drop_field(Table_Id table_id, Field_Id field_id) override
Superclass with all joedb journal event listeners as virtual functions.
virtual void delete_vector(Table_Id table_id, Record_Id record_id, size_t size)=0
Strongly-typed wrapper around an integer representing a row of the city table.
implement joedb::Writable in a Database
void drop_field(Table_Id table_id, Field_Id field_id) override
void valid_data() override
void delete_vector(Table_Id table_id, Record_Id record_id, size_t size) override
void update_reference(Table_Id table_id, Record_Id record_id, Field_Id field_id, joedb::Record_Id value) override
joedb::Memory_File schema_file
joedb::Record_Id * get_own_reference_storage(Table_Id table_id, Record_Id record_id, Field_Id field_id, size_t &capacity) override
void set_max_record_id(joedb::index_t record_id)
void insert_vector(Table_Id table_id, Record_Id record_id, size_t size) override
void drop_table(Table_Id table_id) override
void timestamp(int64_t timestamp) override
int64_t get_schema_checkpoint() const
void comment(const std::string &comment) override
void delete_from(Table_Id table_id, Record_Id record_id) override
void rename_table(Table_Id table_id, const std::string &name) override
joedb::Writable_Journal schema_journal
void initialize_with_readonly_journal(joedb::Readonly_Journal &journal)
void update_int64(Table_Id table_id, Record_Id record_id, Field_Id field_id, int64_t value) override
void create_table(const std::string &name) override
joedb::index_t max_record_id
void update_vector_reference(Table_Id table_id, Record_Id record_id, Field_Id field_id, size_t size, const joedb::Record_Id *value) override
void update_vector_string(Table_Id table_id, Record_Id record_id, Field_Id field_id, size_t size, const std::string *value) override
void rename_field(Table_Id table_id, Field_Id field_id, const std::string &name) override
Table_Id current_table_id
bool requires_schema_upgrade() const
void custom(const std::string &name) override
std::string * get_own_string_storage(Table_Id table_id, Record_Id record_id, Field_Id field_id, size_t &capacity) override
void update_string(Table_Id table_id, Record_Id record_id, Field_Id field_id, const std::string &value) override
void insert_into(Table_Id table_id, Record_Id record_id) override
int64_t * get_own_int64_storage(Table_Id table_id, Record_Id record_id, Field_Id field_id, size_t &capacity) override
void update_vector_int64(Table_Id table_id, Record_Id record_id, Field_Id field_id, size_t size, const int64_t *value) override
void add_field(Table_Id table_id, const std::string &name, joedb::Type type) override
Store all the tables of the database.
detail::data_of_data storage_of_data
detail::data_of_city storage_of_city
void internal_update_vector_data__city_name(Record_Id record_id, size_t size, const std::string *value)
void internal_update_vector_data__city(Record_Id record_id, size_t size, const id_of_city *value)
void internal_vector_insert_city(Record_Id record_id, size_t size)
void internal_update_data__population(Record_Id record_id, int64_t field_value_of_population)
void internal_delete_city(Record_Id record_id)
void internal_update_data__city(Record_Id record_id, id_of_city field_value_of_city)
void internal_delete_data(Record_Id record_id)
void internal_update_data__city_name(Record_Id record_id, const std::string &field_value_of_city_name)
bool is_valid_record_id_for_data(Record_Id record_id) const
bool is_valid_record_id_for_city(Record_Id record_id) const
void internal_insert_data(Record_Id record_id)
void internal_update_vector_data__population(Record_Id record_id, size_t size, const int64_t *value)
static void throw_exception(const std::string &message)
void internal_vector_insert_data(Record_Id record_id, size_t size)
void internal_insert_city(Record_Id record_id)
#define JOEDB_RELEASE_ASSERT(x)
always-tested assertion (release and debug mode)
Automatically generated by joedbc.
tutorial::id_of_city id_of_city