@@ -17,32 +17,13 @@ class SQLGEN_API DuckDBAppender {
1717 static Result<Ref<DuckDBAppender>> make (
1818 const std::string& _sql, const ConnPtr& _conn,
1919 const std::vector<const char *>& _columns,
20- const std::vector<duckdb_logical_type>& _types) {
21- try {
22- return Ref<DuckDBAppender>::make (_sql, _conn, _columns, _types);
23- } catch (const std::exception& e) {
24- return error (e.what ());
25- }
26- }
20+ const std::vector<duckdb_logical_type>& _types);
2721
2822 DuckDBAppender (const std::string& _sql, const ConnPtr& _conn,
2923 std::vector<const char *> _columns,
30- std::vector<duckdb_logical_type> _types)
31- : destroy_(false ) {
32- if (duckdb_appender_create_query (
33- _conn->conn (), _sql.c_str (), static_cast <idx_t >(_columns.size ()),
34- _types.data (), " sqlgen_appended_data" , _columns.data (),
35- &appender_) == DuckDBError) {
36- throw std::runtime_error (" Could not create appender." );
37- }
38- destroy_ = true ;
39- }
24+ std::vector<duckdb_logical_type> _types);
4025
41- ~DuckDBAppender () {
42- if (destroy_) {
43- duckdb_appender_destroy (&appender_);
44- }
45- }
26+ ~DuckDBAppender ();
4627
4728 DuckDBAppender (const DuckDBAppender& _other) = delete ;
4829
@@ -53,25 +34,11 @@ class SQLGEN_API DuckDBAppender {
5334
5435 DuckDBAppender& operator =(const DuckDBAppender& _other) = delete ;
5536
56- DuckDBAppender& operator =(DuckDBAppender&& _other) {
57- if (this == &_other) {
58- return *this ;
59- }
60- destroy_ = _other.destroy_ ;
61- appender_ = _other.appender_ ;
62- _other.destroy_ = false ;
63- return *this ;
64- }
37+ DuckDBAppender& operator =(DuckDBAppender&& _other);
6538
6639 duckdb_appender& appender () { return appender_; }
6740
68- Result<Nothing> close () {
69- const auto state = duckdb_appender_close (appender_);
70- if (state == DuckDBError) {
71- return error (duckdb_appender_error (appender_));
72- }
73- return Nothing{};
74- }
41+ Result<Nothing> close ();
7542
7643 private:
7744 bool destroy_;
0 commit comments