11 void SQL_Writable::write_type(
Type type)
34 out << key_type <<
" REFERENCES ";
35 out <<
'\"' << schema.get_table_name(type.
get_table_id()) <<
'\"';
69 out <<
"BEGIN TRANSACTION; -- checkpoint = " << position <<
'\n';
76 out <<
"COMMIT; --checkpoint = " << position <<
'\n' <<
'\n';
84 out <<
"CREATE TABLE \"" << name <<
"\"(" << id_field_name <<
85 ' ' << key_type <<
" PRIMARY KEY);\n";
92 out <<
"DROP TABLE \"" << schema.get_table_name(table_id) <<
"\";\n";
100 const std::string &name
103 out <<
"ALTER TABLE \"" << schema.get_table_name(table_id);
104 out <<
"\" RENAME TO \"" << name <<
"\";\n";
112 const std::string &name,
116 out <<
"ALTER TABLE \"" << schema.get_table_name(table_id);
117 out <<
"\" ADD \"" << name <<
"\" ";
126 out <<
"ALTER TABLE \"" << schema.get_table_name(table_id);
127 out <<
"\" DROP COLUMN \"" << schema.get_field_name(table_id, field_id) <<
"\";\n";
136 const std::string &name
139 out <<
"ALTER TABLE \"" << schema.get_table_name(table_id) <<
"\" RENAME COLUMN \"";
140 out << schema.get_field_name(table_id, field_id) <<
"\" TO \"" << name <<
"\";\n";
147 out <<
"-- custom: " << name <<
'\n';
154 out <<
"-- " <<
comment <<
'\n';
168 out <<
"-- valid data\n";
175 out <<
"INSERT INTO \"" << schema.get_table_name(table_id);
176 out <<
"\"(" << id_field_name <<
") VALUES(" << record_id <<
");\n";
183 out <<
"DELETE FROM \"" << schema.get_table_name(table_id) <<
'"';
184 write_where(record_id);
192 out <<
"\" SET \"" << schema.
get_field_name(table_id, field_id) <<
"\" = ";
196 void SQL_Writable::write_where(Record_Id record_id)
199 out <<
" WHERE " << id_field_name <<
" = " << record_id <<
";\n";
202 #define TYPE_MACRO(type, return_type, type_id, R, W)\
203 void SQL_Writable::update_##type_id\
206 Record_Id record_id,\
211 write_update(table_id, field_id);\
212 write_##type_id(out, value);\
213 write_where(record_id);\
215 #define TYPE_MACRO_NO_STRING
216 #define TYPE_MACRO_NO_BLOB
217 #define TYPE_MACRO_NO_REFERENCE
218 #define TYPE_MACRO_NO_BOOL
230 write_update(table_id, field_id);
232 write_where(record_id);
242 const std::string_view value)
244 write_update(table_id, field_id);
246 write_where(record_id);
261 write_update(table_id, field_id);
268 write_where(record_id);
272 void SQL_Writable::update_reference
281 write_update(table_id, field_id);
288 write_where(record_id);
const std::string & get_field_name(Table_Id table_id, Field_Id field_id) const
const std::string & get_table_name(Table_Id table_id) const
void rename_field(Table_Id table_id, Field_Id field_id, const std::string &name) override
void update_blob(Table_Id table_id, Record_Id record_id, Field_Id field_id, joedb::Blob value) 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 update_boolean(Table_Id table_id, Record_Id record_id, Field_Id field_id, bool value) 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
void update_string(Table_Id table_id, Record_Id record_id, Field_Id field_id, std::string_view value) override
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
void valid_data() override
void start_writing(int64_t position) override
Table_Id get_table_id() const
Type_Id get_type_id() const
std::string get_time_string(int64_t timestamp)
void write_sql_string(std::ostream &out, const std::string_view s)