20 std::string tableName,
21 std::vector<SqlVariant>* inputBindings)
noexcept;
24 template <
typename ColumnValue>
28 template <std::
size_t N>
35 [[nodiscard]] LIGHTWEIGHT_API std::string
ToSql()
const;
39 std::string m_tableName;
42 std::vector<SqlVariant>* m_inputBindings;
45inline LIGHTWEIGHT_FORCE_INLINE SqlInsertQueryBuilder::SqlInsertQueryBuilder(
SqlQueryFormatter const& formatter,
46 std::string tableName,
47 std::vector<SqlVariant>* inputBindings) noexcept
49 m_formatter { formatter },
50 m_tableName { std::move(tableName) },
51 m_inputBindings { inputBindings }
55template <
typename ColumnValue>
56SqlInsertQueryBuilder& SqlInsertQueryBuilder::Set(std::string_view columnName, ColumnValue
const& value)
58 using namespace std::string_view_literals;
60 if (!m_fields.empty())
64 m_fields += columnName;
67 if (!m_values.empty())
70 if constexpr (std::is_same_v<ColumnValue, SqlNullType>)
72 else if constexpr (std::is_same_v<ColumnValue, SqlWildcardType>)
74 else if (m_inputBindings)
77 m_inputBindings->emplace_back(value);
79 else if constexpr (std::is_same_v<ColumnValue, char>)
81 else if constexpr (std::is_arithmetic_v<ColumnValue>)
82 m_values += std::format(
"{}", value);
83 else if constexpr (std::is_convertible_v<ColumnValue, std::string>
84 || std::is_convertible_v<ColumnValue, std::string_view>
85 || std::is_convertible_v<ColumnValue, char const*>)
91 m_values += m_formatter.
StringLiteral(std::format(
"{}", value));
97template <std::
size_t N>
98inline SqlInsertQueryBuilder& SqlInsertQueryBuilder::Set(std::string_view columnName,
char const (&value)[N])
100 return Set(columnName, std::string_view { value, N - 1 });
103inline SqlInsertQueryBuilder& SqlInsertQueryBuilder::Set(std::string_view columnName, MFCStringLike
auto const* value)
105 return Set(columnName, std::string_view { value->GetString(), value->GetLength() });
108inline std::string SqlInsertQueryBuilder::ToSql()
const
110 return m_formatter.
Insert(m_tableName, m_fields, m_values);
Query builder for building INSERT INTO ... queries.
LIGHTWEIGHT_API std::vector< std::string > ToSql(SqlQueryFormatter const &formatter, SqlMigrationPlanElement const &element)