introduced table repository

This commit is contained in:
2023-11-16 20:15:52 +01:00
parent 7c1e940814
commit c801d53e8c
25 changed files with 589 additions and 150 deletions
+32 -15
View File
@@ -183,36 +183,53 @@ bool sqlite_query_result::fetch()
return ++row_index_ < result_.size();
}
template < typename Type >
void convert(const char *valstr, sql::any_type &value)
{
Type val{};
read(val, valstr);
value = val;
}
void sqlite_query_result::read_value(const char *id, size_t index, sql::any_type &value, sql::data_type_t type, size_t size)
{
switch (type) {
case sql::data_type_t::type_char:
convert<char>(result_[row_index_][index], value);
break;
case sql::data_type_t::type_short:
convert<short>(result_[row_index_][index], value);
break;
case sql::data_type_t::type_int:
convert<int>(result_[row_index_][index], value);
break;
case sql::data_type_t::type_long:
case sql::data_type_t::type_long_long: {
long long val{};
read(val, result_[row_index_][index]);
value = val;
convert<long>(result_[row_index_][index], value);
break;
case sql::data_type_t::type_long_long:
convert<long long>(result_[row_index_][index], value);
break;
}
case sql::data_type_t::type_unsigned_char:
convert<unsigned char>(result_[row_index_][index], value);
break;
case sql::data_type_t::type_unsigned_short:
convert<unsigned short>(result_[row_index_][index], value);
break;
case sql::data_type_t::type_unsigned_int:
convert<unsigned int>(result_[row_index_][index], value);
break;
case sql::data_type_t::type_unsigned_long:
case sql::data_type_t::type_unsigned_long_long: {
unsigned long long val{};
read(val, result_[row_index_][index]);
value = val;
convert<unsigned long>(result_[row_index_][index], value);
break;
case sql::data_type_t::type_unsigned_long_long:
convert<unsigned long long>(result_[row_index_][index], value);
break;
}
case sql::data_type_t::type_float:
case sql::data_type_t::type_double: {
double val{};
read(val, result_[row_index_][index]);
value = val;
convert<float>(result_[row_index_][index], value);
break;
case sql::data_type_t::type_double:
convert<double>(result_[row_index_][index], value);
break;
}
case sql::data_type_t::type_bool: {
int val{};
read(val, result_[row_index_][index]);