VSQLite++
0.3
Toggle main menu visibility
Loading...
Searching...
No Matches
include
sqlite
transaction.hpp
Go to the documentation of this file.
1
/*##############################################################################
2
VSQLite++ - virtuosic bytes SQLite3 C++ wrapper
3
4
Copyright (c) 2006-2014 Vinzenz Feenstra vinzenz.feenstra@gmail.com
5
Copyright (c) 2014 mickey mickey.mouse-1985@libero.it
6
All rights reserved.
7
8
Redistribution and use in source and binary forms, with or without modification,
9
are permitted provided that the following conditions are met:
10
11
* Redistributions of source code must retain the above copyright notice,
12
this list of conditions and the following disclaimer.
13
* Redistributions in binary form must reproduce the above copyright notice,
14
this list of conditions and the following disclaimer in the documentation
15
and/or other materials provided with the distribution.
16
* Neither the name of virtuosic bytes nor the names of its contributors may
17
be used to endorse or promote products derived from this software without
18
specific prior written permission.
19
20
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30
POSSIBILITY OF SUCH DAMAGE.
31
32
##############################################################################*/
33
#ifndef GUARD_SQLITE_TRANSACTION_HPP_INCLUDED
34
#define GUARD_SQLITE_TRANSACTION_HPP_INCLUDED
35
36
#include <string>
37
#include <string_view>
38
46
namespace
sqlite
{
47
inline
namespace
v2
{
48
struct
connection
;
49
struct
snapshot
;
50
64
enum class
transaction_type
{
undefined
,
deferred
,
immediate
,
exclusive
};
65
69
struct
transaction
{
70
public
:
76
transaction
(
connection
&con,
transaction_type
type
=
transaction_type::undefined
);
77
81
~transaction
();
82
86
void
begin
(
transaction_type
type
=
transaction_type::undefined
);
87
91
void
end
();
92
96
void
commit
();
97
101
void
rollback
();
102
107
bool
isActive
()
const
{
return
m_isActive
; }
108
109
bool
isEnding
()
const
{
return
m_isEnding
; }
110
114
snapshot
take_snapshot
(std::string_view schema =
"main"
);
115
117
void
open_snapshot
(
snapshot
const
&snap, std::string_view schema =
"main"
);
118
119
private
:
120
void
exec
(std::string
const
&);
121
connection
&
m_con
;
122
bool
m_isActive
{
false
};
123
bool
m_isEnding
{
false
};
124
};
125
}
// namespace v2
126
}
// namespace sqlite
127
128
#endif
// GUARD_SQLITE_TRANSACTION_HPP_INCLUDED
sqlite::v2
Definition
backup.hpp:18
sqlite::v2::transaction_type
transaction_type
Defines the kind of transaction to begin.
Definition
transaction.hpp:64
sqlite::v2::transaction_type::deferred
@ deferred
Definition
transaction.hpp:64
sqlite::v2::transaction_type::immediate
@ immediate
Definition
transaction.hpp:64
sqlite::v2::transaction_type::undefined
@ undefined
Definition
transaction.hpp:64
sqlite::v2::transaction_type::exclusive
@ exclusive
Definition
transaction.hpp:64
sqlite::v2::type
type
Definition
variant.hpp:44
sqlite
Definition
backup.hpp:17
sqlite::v2::connection
connection is used to open, close, attach and detach a database. Further it has to be passed to all c...
Definition
connection.hpp:64
sqlite::v2::snapshot
RAII wrapper around sqlite3_snapshot.
Definition
snapshot.hpp:62
sqlite::transaction
transaction is a helper class to start transactions within SQLite
Definition
transaction.hpp:69
sqlite::v2::transaction::end
void end()
Ends an transaction.
sqlite::v2::transaction::begin
void begin(transaction_type type=transaction_type::undefined)
Starts a transaction.
sqlite::v2::transaction::exec
void exec(std::string const &)
sqlite::v2::transaction::m_isEnding
bool m_isEnding
true while COMMIT/ROLLBACK/END is running
Definition
transaction.hpp:123
sqlite::v2::transaction::commit
void commit()
Commits a transaction.
sqlite::v2::transaction::~transaction
~transaction()
destructor
sqlite::v2::transaction::rollback
void rollback()
Rolls back a transaction.
sqlite::v2::transaction::transaction
transaction(connection &con, transaction_type type=transaction_type::undefined)
constructor
sqlite::v2::transaction::isEnding
bool isEnding() const
Definition
transaction.hpp:109
sqlite::v2::transaction::m_isActive
bool m_isActive
if true there is a transaction currently opened
Definition
transaction.hpp:122
sqlite::v2::transaction::m_con
connection & m_con
Definition
transaction.hpp:121
sqlite::v2::transaction::take_snapshot
snapshot take_snapshot(std::string_view schema="main")
Capture a consistent snapshot for the current transaction.
sqlite::v2::transaction::open_snapshot
void open_snapshot(snapshot const &snap, std::string_view schema="main")
Re-open this transaction so it reads from the supplied snapshot.
sqlite::v2::transaction::isActive
bool isActive() const
Allow to check if transaction handled by this object is currently active.
Definition
transaction.hpp:107
Generated by
1.17.0