Joedb 10.0.1
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 /// @ingroup joedb
10 {
11 public:
12 enum Mode
13 {
14 schema = 1,
15 data = 2,
17
18 data_and_schema = 3, // bitwise operators don't work on enums
20 all = 7
21 };
22
23 private:
24 Writable &writable;
25 const Mode mode;
26 bool blob_found;
27
28 public:
29
30 Selective_Writable(Writable &writable, Mode mode);
31
32 bool has_blobs() const {return blob_found;}
33
34 //
35 // schema events
36 //
37 void create_table(const std::string &name) override;
38 void drop_table(Table_Id table_id) override;
39 void rename_table(Table_Id table_id, const std::string &name) override;
40 void add_field(Table_Id table_id, const std::string &name, Type type) override;
41 void drop_field(Table_Id table_id, Field_Id field_id) override;
42 void rename_field(Table_Id table_id, Field_Id field_id, const std::string &name) override;
43 void custom(const std::string &name) override;
44
45 //
46 // Informative events
47 //
48 void comment(const std::string &comment) override;
49 void timestamp(int64_t timestamp) override;
50 void valid_data() override;
51 int64_t get_position() const override;
52 void start_writing(int64_t position) override;
53 void end_writing(int64_t position) override;
54 void soft_checkpoint() override;
55 void hard_checkpoint() override;
56
57 //
58 // data events
59 //
60 void insert_into(Table_Id table_id, Record_Id record_id) override;
61 void delete_from(Table_Id table_id, Record_Id record_id) override;
62
63 void insert_vector
64 (
65 Table_Id table_id,
66 Record_Id record_id,
67 size_t size
68 ) override;
69
70 void delete_vector
71 (
72 Table_Id table_id,
73 Record_Id record_id,
74 size_t size
75 ) override;
76
77 #define TYPE_MACRO(type, return_type, type_id, R, W)\
78 void update_##type_id(Table_Id table_id,\
79 Record_Id record_id,\
80 Field_Id field_id,\
81 return_type value) override;
82 #include "joedb/TYPE_MACRO.h"
83
84 void on_blob(Blob blob) override;
85 };
86}
87
88#endif
void drop_field(Table_Id table_id, Field_Id field_id) override
void start_writing(int64_t position) 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 end_writing(int64_t position) override
void delete_vector(Table_Id table_id, Record_Id record_id, size_t size) override
void on_blob(Blob blob) 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
int64_t get_position() const override
Superclass with all joedb journal event listeners as virtual functions.
Definition Writable.h:17
Definition Blob.h:7