#pragma once #include #include #include namespace { template typename std::enable_if::type add_column_name(std::string&) { } template typename std::enable_if::type add_column_name(std::string& out) { using ColumnType = typename std::remove_reference(std::declval>()))>::type; out += ColumnType::name; if (N != sizeof...(T) - 1) out += ","; add_column_name(out); } } template void create_index(DatabaseEngine& db, const std::string& name, const std::string& table) { std::string query{"CREATE INDEX IF NOT EXISTS "}; query += name + " ON " + table + "("; add_column_name<0, Columns...>(query); query += ")"; auto result = db.raw_exec(query); if (std::get<0>(result) == false) log_error("Error executing query: ", std::get<1>(result)); }