11 void SQL_Writable::write_type(Type type)
14 switch(type.get_type_id())
20 case Type::Type_Id::string:
24 case Type::Type_Id::int32:
28 case Type::Type_Id::int64:
32 case Type::Type_Id::reference:
34 out << key_type <<
" REFERENCES ";
39 case Type::Type_Id::boolean:
43 case Type::Type_Id::float32:
47 case Type::Type_Id::float64:
51 case Type::Type_Id::int8:
55 case Type::Type_Id::int16:
59 case Type::Type_Id::blob:
69 out <<
"CREATE TABLE \"" << name <<
"\"(" << id_field_name <<
70 ' ' << key_type <<
" PRIMARY KEY);\n";
77 out <<
"DROP TABLE \"" << schema.
get_table_name(table_id) <<
"\";\n";
85 const std::string &name
88 out <<
"ALTER TABLE \"" << schema.get_table_name(table_id);
89 out <<
"\" RENAME TO \"" << name <<
"\";\n";
97 const std::string &name,
101 out <<
"ALTER TABLE \"" << schema.get_table_name(table_id);
102 out <<
"\" ADD \"" << name <<
"\" ";
114 out <<
"\" DROP COLUMN \"" << schema.
get_field_name(table_id, field_id) <<
"\";\n";
123 const std::string &name
126 out <<
"ALTER TABLE \"" << schema.get_table_name(table_id) <<
"\" RENAME COLUMN \"";
127 out << schema.get_field_name(table_id, field_id) <<
"\" TO \"" << name <<
"\";\n";
134 out <<
"-- custom: " << name <<
'\n';
141 out <<
"-- " <<
comment <<
'\n';
155 out <<
"-- valid data\n";
163 out <<
"\"(" << id_field_name <<
") VALUES(" << record_id <<
");\n";
175 for (
size_t i = 0; i < size; i++)
176 insert_into(table_id, record_id + i);
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
222 void SQL_Writable::update_boolean
230 write_update(table_id, field_id);
232 write_where(record_id);
236 void SQL_Writable::update_string
242 const std::string &value)
244 write_update(table_id, field_id);
246 write_where(record_id);
250 void SQL_Writable::update_blob
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 drop_table(Table_Id table_id) final
void insert_into(Table_Id table_id, Record_Id record_id) final
void insert_vector(Table_Id table_id, Record_Id record_id, size_t size) final
void custom(const std::string &name) final
void rename_field(Table_Id table_id, Field_Id field_id, const std::string &name) final
void timestamp(int64_t timestamp) final
void delete_from(Table_Id table_id, Record_Id record_id) final
void drop_field(Table_Id table_id, Field_Id field_id) final
void add_field(Table_Id table_id, const std::string &name, Type type) final
void comment(const std::string &comment) final
void rename_table(Table_Id table_id, const std::string &name) final
void create_table(const std::string &name) final
std::string get_time_string(int64_t timestamp)
void write_sql_string(std::ostream &out, const std::string &s)