From 4349e53cb0fea8aac749e2053d27490c8ee87ffa Mon Sep 17 00:00:00 2001 From: Jacyking <791026912@qq.com> Date: Tue, 11 Jul 2023 11:46:26 +0800 Subject: [PATCH] fix use unique to create table bug --- include/sqlite.hpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/include/sqlite.hpp b/include/sqlite.hpp index caef44c1..62bdcb53 100644 --- a/include/sqlite.hpp +++ b/include/sqlite.hpp @@ -18,7 +18,7 @@ class sqlite { void set_last_error(std::string last_error) { last_error_ = std::move(last_error); - // std::cout << last_error_ << std::endl;//todo, write to log file + std::cout << last_error_ << std::endl; // todo, write to log file } std::string get_last_error() const { return last_error_; } @@ -282,13 +282,14 @@ class sqlite { auto tp = sort_tuple(std::make_tuple(std::forward(args)...)); const size_t arr_size = arr.size(); + std::string unique_field; for (size_t i = 0; i < arr_size; ++i) { auto field_name = arr[i]; bool has_add_field = false; for_each0( tp, - [&sql, &i, &has_add_field, field_name, type_name_arr, name, - this](auto item) { + [&sql, &i, &has_add_field, &unique_field, field_name, type_name_arr, + name, this](auto item) { if constexpr (std::is_same_v) { if (item.fields.find(field_name.data()) == item.fields.end()) return; @@ -326,7 +327,7 @@ class sqlite { append(sql, field_name.data(), " ", type_name_arr[i]); } - append(sql, ", UNIQUE(", item.fields, ")"); + append(unique_field, ", UNIQUE(", item.fields, ")"); has_add_field = true; } else { @@ -343,6 +344,10 @@ class sqlite { sql += ", "; } + if (!unique_field.empty()) { + append(sql, unique_field.data()); + } + sql += ")"; return sql;