Joedb 9.1.4
The Journal-Only Embedded Database
Loading...
Searching...
No Matches
Selective_Writable.h
Go to the documentation of this file.
1#ifndef joedb_Selective_Writable_declared
2#define joedb_Selective_Writable_declared
3
4#include "joedb/Writable.h"
5
6namespace joedb
7{
8 ////////////////////////////////////////////////////////////////////////////
10 ////////////////////////////////////////////////////////////////////////////
11 {
12 public:
13 enum Mode
14 {
15 schema = 1,
16 data = 2,
18
19 data_and_schema = 3, // bitwise operators don't work on enums
21 all = 7
22 };
23
24 private:
25 Writable &writable;
26 const Mode mode;
27 bool blob_found;
28
29 public:
30
31 Selective_Writable(Writable &writable, Mode mode);
32
33 bool has_blobs() const {return blob_found;}
34
35 //
36 // schema events
37 //
38 void create_table(const std::string &name) override;
39 void drop_table(Table_Id table_id) override;
40 void rename_table(Table_Id table_id, const std::string &name) override;
41 void add_field(Table_Id table_id, const std::string &name, Type type) override;
42 void drop_field(Table_Id table_id, Field_Id field_id) override;
43 void rename_field(Table_Id table_id, Field_Id field_id, const std::string &name) override;
44 void custom(const std::string &name) override;
45
46 //
47 // Informative events
48 //
49 void comment(const std::string &comment) override;
50 void timestamp(int64_t timestamp) override;
51 void valid_data() override;
52 void checkpoint(Commit_Level commit_level) override;
53
54 //
55 // data events
56 //
57 void insert_into(Table_Id table_id, Record_Id record_id) override;
58 void insert_vector(Table_Id table_id,
59 Record_Id record_id,
60 size_t size) override;
61 void delete_from(Table_Id table_id, Record_Id record_id) override;
62
63 #define TYPE_MACRO(type, return_type, type_id, R, W)\
64 void update_##type_id(Table_Id table_id,\
65 Record_Id record_id,\
66 Field_Id field_id,\
67 return_type value) override;
68 #include "joedb/TYPE_MACRO.h"
69
70 void on_blob(Blob blob) final;
71 };
72}
73
74#endif
void drop_field(Table_Id table_id, Field_Id field_id) override
void add_field(Table_Id table_id, const std::string &name, Type type) override
void rename_field(Table_Id table_id, Field_Id field_id, const std::string &name) override
void insert_into(Table_Id table_id, Record_Id record_id) override
void comment(const std::string &comment) override
void custom(const std::string &name) override
void delete_from(Table_Id table_id, Record_Id record_id) override
void on_blob(Blob blob) final
void checkpoint(Commit_Level commit_level) override
void drop_table(Table_Id table_id) override
void rename_table(Table_Id table_id, const std::string &name) override
void create_table(const std::string &name) override
void timestamp(int64_t timestamp) override
void insert_vector(Table_Id table_id, Record_Id record_id, size_t size) override
Definition Blob.h:7
Commit_Level
Definition Writable.h:13