Skip to content

Commit 38aba21

Browse files
matthijsrbock
authored andcommitted
std::string_view should also be assignable in prepared statements
1 parent 9412851 commit 38aba21

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

include/sqlpp11/data_types/text/parameter_value.h

+20
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@
3333
#include <sqlpp11/data_types/text/wrap_operand.h>
3434
#include <sqlpp11/data_types/text/operand.h>
3535

36+
#if __cplusplus >= 201703L
37+
#include <string_view>
38+
#endif
39+
3640
namespace sqlpp
3741
{
3842
template <>
@@ -47,6 +51,22 @@ namespace sqlpp
4751
{
4852
target._bind_text_parameter(index, &_value, _is_null);
4953
}
54+
55+
#if __cplusplus >= 201703L
56+
parameter_value_base& operator=(const std::string_view& val)
57+
{
58+
_value = val;
59+
_is_null = false;
60+
return *this;
61+
}
62+
63+
parameter_value_base& operator=(const char* val)
64+
{
65+
_value = val;
66+
_is_null = false;
67+
return *this;
68+
}
69+
#endif
5070
};
5171
} // namespace sqlpp
5272
#endif

tests/core/usage/Insert.cpp

+12
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@
2727
#include "Sample.h"
2828
#include "is_regular.h"
2929
#include <iostream>
30+
#if __cplusplus >= 201703L
31+
#include <string_view>
32+
#endif
3033
#include <sqlpp11/functions.h>
3134
#include <sqlpp11/insert.h>
3235

@@ -103,5 +106,14 @@ int Insert(int, char*[])
103106
prepared_insert.params.delta = sqlpp::value_or_null(17);
104107
db(prepared_insert);
105108

109+
#if __cplusplus >= 201703L
110+
auto prepared_insert_sv = db.prepare(insert_into(t).set(t.gamma = parameter(t.gamma), t.delta = parameter(t.delta), t.beta = parameter(t.beta)));
111+
prepared_insert_sv.params.gamma = true;
112+
prepared_insert_sv.params.delta = 17;
113+
std::string_view sv = "string_view";
114+
prepared_insert_sv.params.beta = sv;
115+
db(prepared_insert_sv);
116+
#endif
117+
106118
return 0;
107119
}

0 commit comments

Comments
 (0)