Joedb 9.5.0
The Journal-Only Embedded Database
Loading...
Searching...
No Matches
Interpreter_Dump_Writable.h
Go to the documentation of this file.
1#ifndef joedb_Interpreter_Dump_Writable_declared
2#define joedb_Interpreter_Dump_Writable_declared
3
5#include "joedb/Multiplexer.h"
6
7namespace joedb
8{
9 /// @ingroup ui
11 {
12 private:
13 std::ostream &out;
14 const Database_Schema &schema;
15 const bool blob_wanted;
16
17 void write_type(Type type);
18
19 public:
21 (
22 std::ostream &out,
23 const Database_Schema &schema,
24 bool blob_wanted = true
25 ):
26 out(out),
27 schema(schema),
28 blob_wanted(blob_wanted)
29 {
30 }
31
32 const char *get_name() const {return "dump";}
33
34 void start_writing(int64_t position);
35 void soft_checkpoint_at(int64_t position);
36
37 void create_table(const std::string &name) final;
38 void drop_table(Table_Id table_id) final;
39 void rename_table(Table_Id table_id, const std::string &name) final;
40 void add_field
41 (
42 Table_Id table_id,
43 const std::string &name,
44 Type type
45 ) final;
46 void drop_field(Table_Id table_id, Field_Id field_id) final;
47 void rename_field
48 (
49 Table_Id table_id,
50 Field_Id field_id,
51 const std::string &name
52 ) final;
53 void custom(const std::string &name) final;
54 void comment(const std::string &comment) final;
55 void timestamp(int64_t timestamp) final;
56 void valid_data() final;
57
58 void insert_into(Table_Id table_id, Record_Id record_id) final;
59 void delete_from(Table_Id table_id, Record_Id record_id) final;
60
61 void insert_vector
62 (
63 Table_Id table_id,
64 Record_Id record_id,
65 size_t size
66 ) final;
67
68 void delete_vector
69 (
70 Table_Id table_id,
71 Record_Id record_id,
72 size_t size
73 ) final;
74
75 void write_update(const char *command, Table_Id table_id, Record_Id record_id, Field_Id field_id);
76
77 #define TYPE_MACRO(type, return_type, type_id, R, W)\
78 void update_##type_id\
79 (\
80 Table_Id table_id,\
81 Record_Id record_id,\
82 Field_Id field_id,\
83 return_type value\
84 ) final;\
85 void update_vector_##type_id\
86 (\
87 Table_Id table_id,\
88 Record_Id record_id,\
89 Field_Id field_id,\
90 size_t size,\
91 const type *value\
92 ) final;
93 #include "joedb/TYPE_MACRO.h"
94
95 bool wants_blob_data() const final {return blob_wanted;}
96 void on_blob(Blob blob) final;
97 Blob write_blob(const std::string &data) final;
98
100 };
101
103 {
104 protected:
107
108 public:
109 Interpreter_Dump_Writable_Parent(std::ostream &out, bool blob_wanted):
110 interpreter_writable(out, schema, blob_wanted)
111 {
112 }
113 };
114
117 public Multiplexer
118 {
119
120 public:
121 Interpreter_Dump_Writable(std::ostream &out, bool blob_wanted = true):
122 Interpreter_Dump_Writable_Parent(out, blob_wanted),
124 {
125 }
126 };
127}
128
129#endif
Interpreter_Dump_Writable_Parent(std::ostream &out, bool blob_wanted)
Interpreter_Dump_Writable(std::ostream &out, bool blob_wanted=true)
void delete_vector(Table_Id table_id, Record_Id record_id, size_t size) final
Interpreter_Writable(std::ostream &out, const Database_Schema &schema, bool blob_wanted=true)
void timestamp(int64_t timestamp) final
void drop_field(Table_Id table_id, Field_Id field_id) final
void create_table(const std::string &name) final
void add_field(Table_Id table_id, const std::string &name, Type type) final
void delete_from(Table_Id table_id, Record_Id record_id) final
void rename_table(Table_Id table_id, const std::string &name) final
void drop_table(Table_Id table_id) final
void rename_field(Table_Id table_id, Field_Id field_id, const std::string &name) final
void insert_into(Table_Id table_id, Record_Id record_id) final
void custom(const std::string &name) final
void insert_vector(Table_Id table_id, Record_Id record_id, size_t size) final
void comment(const std::string &comment) final
Blob write_blob(const std::string &data) final
void write_update(const char *command, Table_Id table_id, Record_Id record_id, Field_Id field_id)
Definition Blob.h:7