34 std::optional<int> sqlite_open_flags = std::nullopt);
49 size_t row_count(std::string_view table_name)
override;
68 std::shared_ptr<Statement>
new_statement(std::string_view sql)
const override;
76 std::shared_ptr<Statement>
upsert(std::string_view table,
77 std::initializer_list<std::string_view> columns)
const override;
86 class Sqlite3_Statement final :
public Statement {
88 void bind(
int column, std::string_view val)
override;
89 void bind(
int column,
size_t val)
override;
90 void bind(
int column, std::chrono::system_clock::time_point time)
override;
91 void bind(
int column,
const std::vector<uint8_t>& val)
override;
92 void bind(
int column,
const uint8_t* data,
size_t len)
override;
93 void bind_null(
int column)
override;
95 std::span<const uint8_t> get_blob(
int column)
override;
96 std::optional<std::string> get_str(
int column)
override;
97 size_t get_size_t(
int column)
override;
99 size_t spin()
override;
100 bool step()
override;
102 Sqlite3_Statement(std::shared_ptr<sqlite3> db, std::string_view base_sql);
103 ~Sqlite3_Statement()
override;
105 Sqlite3_Statement(
const Sqlite3_Statement& other) =
delete;
106 Sqlite3_Statement(Sqlite3_Statement&& other) =
delete;
107 Sqlite3_Statement&
operator=(
const Sqlite3_Statement& other) =
delete;
108 Sqlite3_Statement&
operator=(Sqlite3_Statement&& other) =
delete;
113 std::shared_ptr<sqlite3> m_db;
114 sqlite3_stmt* m_stmt;
117 std::shared_ptr<sqlite3> m_db;