FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
sqlpp11/include/sqlpp11/insert.h at develop · rbock/sqlpp11 · GitHub
rbock
/
sqlpp11
Public
Notifications
You must be signed in to change notification settings
Fork
361
Star
2.6k
Code
Issues
2
Pull requests
1
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
sqlpp11
/
include
/
sqlpp11
/
insert.h
Copy path
More file actions
More file actions
Latest commit
History
History
History
126 lines (109 loc) · 3.99 KB
Breadcrumbs
sqlpp11
/
include
/
sqlpp11
/
insert.h
Copy path
File metadata and controls
126 lines (109 loc) · 3.99 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#
pragma
once
/*
* Copyright (c) 2013-2015, Roland Bock
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright notice, this
* list of conditions and the following disclaimer in the documentation and/or
* other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#
include
<
sqlpp11/statement.h
>
#
include
<
sqlpp11/connection.h
>
#
include
<
sqlpp11/type_traits.h
>
#
include
<
sqlpp11/parameter_list.h
>
#
include
<
sqlpp11/prepared_insert.h
>
#
include
<
sqlpp11/default_value.h
>
#
include
<
sqlpp11/noop.h
>
#
include
<
sqlpp11/into.h
>
#
include
<
sqlpp11/insert_value_list.h
>
namespace
sqlpp
{
struct
insert_name_t
{
};
struct
insert_t
:
public
statement_name_t
<
insert_name_t
>
{
using
_traits = make_traits<
no_value_t
, tag::is_return_value>;
struct
_alias_t
{
};
template
<
typename
Statement>
struct
_result_methods_t
{
using
_statement_t
= Statement;
const
_statement_t
&
_get_statement
()
const
{
return
static_cast
<
const
_statement_t
&>(*
this
);
}
//
Execute
template
<
typename
Db,
typename
Composite>
auto
_run
(Db& db,
const
Composite& composite)
const
-> decltype(db.insert(composite))
{
return
db.
insert
(composite);
}
template
<
typename
Db>
auto
_run
(Db& db)
const
-> decltype(db.insert(
this
->
_get_statement
()))
{
return
db.
insert
(
_get_statement
());
}
//
Prepare
template
<
typename
Db,
typename
Composite>
auto
_prepare
(Db& db,
const
Composite& composite)
const
-> prepared_insert_t<Db, Composite>
{
return
{{}, db.
prepare_insert
(composite)};
}
template
<
typename
Db>
auto
_prepare
(Db& db)
const
-> prepared_insert_t<Db, _statement_t>
{
return
{{}, db.
prepare_insert
(
_get_statement
())};
}
};
};
template
<
typename
Context>
Context&
serialize
(
const
insert_name_t
&, Context& context)
{
context <<
"
INSERT
"
;
return
context;
}
template
<
typename
Database>
using
blank_insert_t
=
statement_t
<Database,
insert_t
,
no_into_t
,
no_insert_value_list_t
>;
inline
auto
insert
() -> blank_insert_t<void>
{
return
{};
}
template
<
typename
Table>
constexpr
auto
insert_into
(Table table) -> decltype(
blank_insert_t
<
void
>().into(table))
{
return
{
blank_insert_t
<
void
>().
into
(table)};
}
template
<
typename
Database>
constexpr
auto
dynamic_insert
(
const
Database &
/*
unused
*/
) -> decltype(
blank_insert_t
<Database>())
{
static_assert
(std::is_base_of<connection, Database>::value,
"
Invalid database parameter
"
);
return
{
blank_insert_t
<Database>()};
}
template
<
typename
Database,
typename
Table>
constexpr
auto
dynamic_insert_into
(
const
Database&
/*
unused
*/
, Table table)
-> decltype(
blank_insert_t
<Database>().into(table))
{
static_assert
(std::is_base_of<connection, Database>::value,
"
Invalid database parameter
"
);
return
{
blank_insert_t
<Database>().
into
(table)};
}
}
//
namespace sqlpp
Back
|
FazBrowse Home
|
New Git URL