@@ -121,24 +121,41 @@ namespace tao::pq
121
121
122
122
[[nodiscard]] auto subtransaction () -> std::shared_ptr< transaction >;
123
123
124
+ void send ( const internal::zsv statement )
125
+ {
126
+ send_params ( statement, 0 , nullptr , nullptr , nullptr , nullptr );
127
+ }
128
+
129
+ template < parameter_type_direct... As >
130
+ void send ( const internal::zsv statement, As&&... as )
131
+ {
132
+ send_traits ( statement, parameter_traits< std::decay_t < As > >( std::forward< As >( as ) )... );
133
+ }
134
+
135
+ template < std::size_t Max >
136
+ void send ( const internal::zsv statement, const parameter< Max >& p )
137
+ {
138
+ send_params ( statement, p.m_size , p.m_types , p.m_values , p.m_lengths , p.m_formats );
139
+ }
140
+
141
+ template < std::size_t Max >
142
+ void send ( const internal::zsv statement, parameter< Max >& p )
143
+ {
144
+ send_params ( statement, p.m_size , p.m_types , p.m_values , p.m_lengths , p.m_formats );
145
+ }
146
+
147
+ template < std::size_t Max >
148
+ void send ( const internal::zsv statement, parameter< Max >&& p )
149
+ {
150
+ send_params ( statement, p.m_size , p.m_types , p.m_values , p.m_lengths , p.m_formats );
151
+ }
152
+
124
153
template < parameter_type... As >
154
+ requires internal::contains_parameter< As... >
125
155
void send ( const internal::zsv statement, As&&... as )
126
156
{
127
- if constexpr ( sizeof ...( As ) == 0 ) {
128
- send_params ( statement, 0 , nullptr , nullptr , nullptr , nullptr );
129
- }
130
- else if constexpr ( internal::contains_parameter< As... > ) {
131
- if constexpr ( sizeof ...( As ) == 1 ) {
132
- ( send_params ( statement, as.m_size , as.m_types , as.m_values , as.m_lengths , as.m_formats ), ... );
133
- }
134
- else {
135
- const parameter< internal::parameter_size< As... > > p ( std::forward< As >( as )... );
136
- send_params ( statement, p.m_size , p.m_types , p.m_values , p.m_lengths , p.m_formats );
137
- }
138
- }
139
- else {
140
- send_traits ( statement, parameter_traits< std::decay_t < As > >( std::forward< As >( as ) )... );
141
- }
157
+ const parameter< internal::parameter_size< As... > > p ( std::forward< As >( as )... );
158
+ send_params ( statement, p.m_size , p.m_types , p.m_values , p.m_lengths , p.m_formats );
142
159
}
143
160
144
161
void set_single_row_mode ();
0 commit comments