Joedb 10.0.1
The Journal-Only Embedded Database
Loading...
Searching...
No Matches
SQL_Dump_Writable.h
Go to the documentation of this file.
1#ifndef joedb_SQL_Dump_Writable_declared
2#define joedb_SQL_Dump_Writable_declared
3
5#include "joedb/Multiplexer.h"
6
7namespace joedb
8{
9 class Buffered_File;
10
11 /// @ingroup ui
13 {
14 private:
15 static constexpr const char *id_field_name = "\"__id\"";
16 static constexpr const char *key_type = "INTEGER";
17
18 std::ostream &out;
19 const Database_Schema &schema;
20 const Buffered_File *blob_reader;
21
22 void write_type(Type type);
23 void write_update(Table_Id table_id, Field_Id field_id);
24 void write_where(Record_Id record_id);
25
26 public:
28 (
29 std::ostream &out,
30 const Database_Schema &schema,
31 const Buffered_File *blob_reader = nullptr
32 ):
33 out(out),
34 schema(schema),
35 blob_reader(blob_reader)
36 {}
37
38 const char *get_name() const {return "sql";}
39
40 void start_writing(int64_t position) override;
41 void end_writing(int64_t position) override;
42
43 void create_table(const std::string &name) override;
44 void drop_table(Table_Id table_id) override;
45 void rename_table(Table_Id table_id, const std::string &name) override;
46 void add_field
47 (
48 Table_Id table_id,
49 const std::string &name,
50 Type type
51 ) override;
52 void drop_field(Table_Id table_id, Field_Id field_id) override;
53 void rename_field
54 (
55 Table_Id table_id,
56 Field_Id field_id,
57 const std::string &name
58 ) override;
59 void custom(const std::string &name) override;
60 void comment(const std::string &comment) override;
61 void timestamp(int64_t timestamp) override;
62 void valid_data() override;
63 void insert_into(Table_Id table_id, Record_Id record_id) override;
64 void delete_from(Table_Id table_id, Record_Id record_id) override;
65
66 #define TYPE_MACRO(type, return_type, type_id, R, W)\
67 void update_##type_id(Table_Id table_id,\
68 Record_Id record_id,\
69 Field_Id field_id,\
70 return_type value) override;
71 #include "joedb/TYPE_MACRO.h"
72
74 };
75
77 {
78 protected:
81
82 public:
84 (
85 std::ostream &out,
86 const Buffered_File *blob_reader = nullptr
87 ):
88 interpreter_writable(out, schema, blob_reader)
89 {
90 }
91 };
92
95 public Multiplexer
96 {
97 public:
99 (
100 std::ostream &out,
101 const Buffered_File *blob_reader = nullptr
102 ):
103 SQL_Dump_Writable_Parent(out, blob_reader),
105 {
106 }
107 };
108}
109
110#endif
Writable with looping insert_vector and delete_vector.
Definition Writable.h:145
SQL_Dump_Writable_Parent(std::ostream &out, const Buffered_File *blob_reader=nullptr)
SQL_Dump_Writable(std::ostream &out, const Buffered_File *blob_reader=nullptr)
void rename_field(Table_Id table_id, Field_Id field_id, const std::string &name) override
void add_field(Table_Id table_id, const std::string &name, Type type) override
void delete_from(Table_Id table_id, Record_Id record_id) override
void timestamp(int64_t timestamp) override
void custom(const std::string &name) override
void rename_table(Table_Id table_id, const std::string &name) override
void drop_field(Table_Id table_id, Field_Id field_id) override
const char * get_name() const
void comment(const std::string &comment) override
void end_writing(int64_t position) override
void drop_table(Table_Id table_id) override
void insert_into(Table_Id table_id, Record_Id record_id) override
void create_table(const std::string &name) override
SQL_Writable(std::ostream &out, const Database_Schema &schema, const Buffered_File *blob_reader=nullptr)
void start_writing(int64_t position) override
Definition Blob.h:7