Joedb 9.1.4
The Journal-Only Embedded Database
Loading...
Searching...
No Matches
Writable.h
Go to the documentation of this file.
1#ifndef joedb_Writable_declared
2#define joedb_Writable_declared
3
4#include "joedb/Type.h"
5
6#include <string>
7
8namespace joedb
9{
10 ////////////////////////////////////////////////////////////////////////////
11 enum class Commit_Level
12 ////////////////////////////////////////////////////////////////////////////
13 {
17 };
18
19 ////////////////////////////////////////////////////////////////////////////
21 ////////////////////////////////////////////////////////////////////////////
22 {
23 private:
24 const Commit_Level default_commit_level;
25
26 public:
28 default_commit_level(default_commit_level)
29 {
30 }
31
32 virtual void create_table(const std::string &name) {}
33 virtual void drop_table(Table_Id table_id) {}
34 virtual void rename_table(Table_Id table_id, const std::string &name) {}
35
36 virtual void add_field
37 (
38 Table_Id table_id,
39 const std::string &name,
40 Type type
41 ) {}
42 virtual void drop_field(Table_Id table_id, Field_Id field_id) {}
43 virtual void rename_field
44 (
45 Table_Id table_id,
46 Field_Id field_id,
47 const std::string &name
48 ) {}
49
50 virtual void custom(const std::string &name) {}
51 virtual void comment(const std::string &comment) {}
52 virtual void timestamp(int64_t timestamp) {}
53 virtual void valid_data() {}
54 virtual void flush() {}
55 virtual void checkpoint(Commit_Level commit_level) {}
56
57 Commit_Level get_default_commit_level() const {return default_commit_level;}
58 void default_checkpoint();
59
60 virtual void insert_into(Table_Id table_id, Record_Id record_id) {}
61 virtual void insert_vector
62 (
63 Table_Id table_id,
64 Record_Id record_id,
65 size_t size
66 ) {}
67 virtual void delete_from(Table_Id table_id, Record_Id record_id) {}
68
69 #define TYPE_MACRO(type, return_type, type_id, R, W)\
70 virtual void update_##type_id\
71 (\
72 Table_Id table_id,\
73 Record_Id record_id,\
74 Field_Id field_id,\
75 return_type value\
76 );
77 #include "joedb/TYPE_MACRO.h"
78
79 #define TYPE_MACRO(type, return_type, type_id, R, W)\
80 virtual void update_vector_##type_id\
81 (\
82 Table_Id table_id,\
83 Record_Id record_id,\
84 Field_Id field_id,\
85 size_t size,\
86 const type *value\
87 );\
88 virtual type *get_own_##type_id##_storage\
89 (\
90 Table_Id table_id,\
91 Record_Id record_id,\
92 Field_Id field_id,\
93 size_t &capacity\
94 )\
95 {\
96 capacity = 0;\
97 return nullptr;\
98 }\
99 const type *get_own_##type_id##_const_storage\
100 (\
101 Table_Id table_id,\
102 Record_Id record_id,\
103 Field_Id field_id,\
104 size_t &capacity\
105 ) const\
106 {\
107 return (const_cast<Writable *>(this))->get_own_##type_id##_storage(table_id, record_id, field_id, capacity);\
108 }
109 #include "joedb/TYPE_MACRO.h"
110
111 virtual void on_blob(Blob blob) {}
112 virtual bool wants_blob_data() const {return false;}
113 virtual Blob write_blob_data(const std::string &data) {return Blob();}
114
115 virtual ~Writable() = default;
116 };
117}
118
119#endif
Writable(Commit_Level default_commit_level=Commit_Level::no_commit)
Definition Writable.h:27
virtual void insert_into(Table_Id table_id, Record_Id record_id)
Definition Writable.h:60
virtual void drop_table(Table_Id table_id)
Definition Writable.h:33
virtual void create_table(const std::string &name)
Definition Writable.h:32
virtual void drop_field(Table_Id table_id, Field_Id field_id)
Definition Writable.h:42
virtual Blob write_blob_data(const std::string &data)
Definition Writable.h:113
virtual void rename_table(Table_Id table_id, const std::string &name)
Definition Writable.h:34
virtual void insert_vector(Table_Id table_id, Record_Id record_id, size_t size)
Definition Writable.h:62
virtual bool wants_blob_data() const
Definition Writable.h:112
virtual void custom(const std::string &name)
Definition Writable.h:50
virtual void flush()
Definition Writable.h:54
virtual ~Writable()=default
Commit_Level get_default_commit_level() const
Definition Writable.h:57
virtual void add_field(Table_Id table_id, const std::string &name, Type type)
Definition Writable.h:37
virtual void delete_from(Table_Id table_id, Record_Id record_id)
Definition Writable.h:67
virtual void checkpoint(Commit_Level commit_level)
Definition Writable.h:55
virtual void comment(const std::string &comment)
Definition Writable.h:51
virtual void on_blob(Blob blob)
Definition Writable.h:111
virtual void valid_data()
Definition Writable.h:53
virtual void rename_field(Table_Id table_id, Field_Id field_id, const std::string &name)
Definition Writable.h:44
virtual void timestamp(int64_t timestamp)
Definition Writable.h:52
void default_checkpoint()
Definition Writable.cpp:32
Definition Blob.h:7
Commit_Level
Definition Writable.h:13