60 update_value(parameters, table_id, record_id, fid);
71 const std::string_view command,
72 std::istream ¶meters,
85 if (status == Status::done)
87 else if (command ==
"help")
89 out << R
"RRR(Data manipulation
91 append_into <table_name> [<field_value>*]
92 insert_into <table_name> <record_id> [<field_value>*]
93 delete_from <table_name> <record_id>
94 insert_vector <table_name> <record_id> <size>
95 delete_vector <table_name> <record_id> <size>
96 update <table_name> <record_id> <field_name> <value>
97 update_vector <table_name> <record_id> <field_name> <N> <v_1> ... <v_N>
103 else if (command ==
"append_into")
105 insert_into(parameters,
true);
107 else if (command ==
"insert_into")
109 insert_into(parameters,
false);
111 else if (command ==
"delete_from")
113 const Table_Id table_id = parse_table(parameters, readable);
115 parameters >> record_id;
117 writable.delete_from(table_id, record_id);
119 else if (command ==
"insert_vector")
121 const Table_Id table_id = parse_table(parameters, readable);
124 parameters >> record_id >> size;
125 writable.insert_vector(table_id, record_id, size);
127 else if (command ==
"delete_vector")
129 const Table_Id table_id = parse_table(parameters, readable);
132 parameters >> record_id >> size;
133 writable.delete_vector(table_id, record_id, size);
135 else if (command ==
"update")
137 const Table_Id table_id = parse_table(parameters, readable);
139 parameters >> record_id;
140 std::string field_name;
141 parameters >> field_name;
142 const Field_Id field_id = readable.find_field(table_id, field_name);
143 update_value(parameters, table_id, record_id, field_id);
145 else if (command ==
"update_vector")
147 const Table_Id table_id = parse_table(parameters, readable);
149 parameters >> record_id;
150 std::string field_name;
151 parameters >> field_name;
152 const Field_Id field_id = readable.find_field(table_id, field_name);
156 if (max_record_id.is_not_null() && size >=
size_t(
index_t(max_record_id)))
160 switch(readable.get_field_type(table_id, field_id).get_type_id())
166 #define TYPE_MACRO(type, return_type, type_id, R, W)\
167 case Type::Type_Id::type_id:\
169 std::vector<type> v(size);\
170 for (size_t i = 0; i < size; i++)\
171 v[i] = joedb::read_##type_id(parameters);\
172 writable.update_vector_##type_id(table_id, record_id, field_id, size, &v[0]);\