VSQLite++
0.3
Toggle main menu visibility
Loading...
Searching...
No Matches
include
sqlite
session.hpp
Go to the documentation of this file.
1
/*##############################################################################
2
VSQLite++ - virtuosic bytes SQLite3 C++ wrapper
3
4
Copyright (c) 2006-2024 Vinzenz Feenstra
5
and contributors
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_SESSION_HPP_INCLUDED
34
#define GUARD_SQLITE_SESSION_HPP_INCLUDED
35
36
#include <span>
37
#include <string>
38
#include <string_view>
39
#include <vector>
40
48
namespace
sqlite
{
49
inline
namespace
v2
{
50
struct
connection
;
51
53
struct
session_options
{
54
bool
indirect
=
false
;
55
};
56
63
struct
session
{
64
session
(
connection
&con, std::string_view schema =
"main"
,
session_options
options = {});
65
~session
();
66
67
session
(
session
&&other)
noexcept
;
68
session
&
operator=
(
session
&&other)
noexcept
;
69
70
session
(
session
const
&) =
delete
;
71
session
&
operator=
(
session
const
&) =
delete
;
72
73
void
attach
(std::string_view table);
74
void
attach_all
();
75
void
enable
(
bool
value);
76
void
set_indirect
(
bool
value);
78
std::vector<unsigned char>
changeset
();
80
std::vector<unsigned char>
patchset
();
81
82
void
*
native_handle
() const noexcept;
83
84
private:
85
std::vector<
unsigned
char
>
collect
(
bool
patchset
);
86
connection
*
con_
;
87
void
*
handle_
;
88
};
89
91
bool
sessions_supported
() noexcept;
92
94
void
apply_changeset
(
connection
&con, std::span<const
unsigned
char
> data);
96
void
apply_patchset
(
connection
&con, std::span<const
unsigned
char
> data);
97
}
// namespace v2
98
}
// namespace sqlite
99
100
#endif
// GUARD_SQLITE_SESSION_HPP_INCLUDED
sqlite::v2
Definition
backup.hpp:18
sqlite::v2::apply_patchset
void apply_patchset(connection &con, std::span< const unsigned char > data)
Applies a patchset produced by session::patchset onto con.
sqlite::v2::apply_changeset
void apply_changeset(connection &con, std::span< const unsigned char > data)
Applies a changeset produced by session::changeset onto con.
sqlite::v2::sessions_supported
bool sessions_supported() noexcept
Returns true when SQLite sessions API is available.
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::session_options
Configuration flags supplied when opening a new change session.
Definition
session.hpp:53
sqlite::v2::session_options::indirect
bool indirect
Definition
session.hpp:54
sqlite::session
RAII wrapper around sqlite3_session.
Definition
session.hpp:63
sqlite::v2::session::handle_
void * handle_
Definition
session.hpp:87
sqlite::v2::session::collect
std::vector< unsigned char > collect(bool patchset)
sqlite::v2::session::~session
~session()
sqlite::v2::session::attach_all
void attach_all()
sqlite::v2::session::operator=
session & operator=(session const &)=delete
sqlite::v2::session::session
session(session const &)=delete
sqlite::v2::session::enable
void enable(bool value)
sqlite::v2::session::session
session(connection &con, std::string_view schema="main", session_options options={})
sqlite::v2::session::patchset
std::vector< unsigned char > patchset()
Serializes the recorded changes in the smaller patchset format.
sqlite::v2::session::changeset
std::vector< unsigned char > changeset()
Serializes the recorded changes in the standard changeset format.
sqlite::v2::session::operator=
session & operator=(session &&other) noexcept
sqlite::v2::session::attach
void attach(std::string_view table)
sqlite::v2::session::native_handle
void * native_handle() const noexcept
sqlite::v2::session::set_indirect
void set_indirect(bool value)
sqlite::v2::session::session
session(session &&other) noexcept
sqlite::v2::session::con_
connection * con_
Definition
session.hpp:86
Generated by
1.17.0