This commit is contained in:
nadja
2026-11-01 20:14:25 +01:00
parent 828c38c779
commit c4685c2152
1686 changed files with 570761 additions and 560 deletions

View File

@@ -0,0 +1,65 @@
class Statement : public Napi::ObjectWrap<Statement> { friend class StatementIterator;
public:
explicit Statement(const Napi::CallbackInfo& info);
~Statement();
// Whenever this is used, db->RemoveStatement must be invoked beforehand.
void CloseHandles();
// Used to support ordered containers.
static inline bool Compare(Statement const * const a, Statement const * const b) {
return a->extras->id < b->extras->id;
}
// Returns the Statement's bind map (creates it upon first execution).
BindMap& GetBindMap(Napi::Env env);
// Returns the Statement's row builder.
RowBuilder& GetRowBuilder();
// Identifies objects that are backed by this class (see IsInstanceOf).
static const napi_type_tag TYPE_TAG;
static INIT(Init);
private:
// A class for holding values that are less often used.
class Extras { friend class Statement; friend class StatementIterator;
explicit Extras(
Napi::Env env,
Napi::Function row_factory,
Napi::Function array_Factory,
sqlite3_uint64 id
);
BindMap bind_map;
RowBuilder row_builder;
const sqlite3_uint64 id;
};
NODE_METHOD(JS_new);
static NODE_METHOD(JS_run);
static NODE_METHOD(JS_get);
static NODE_METHOD(JS_all);
static NODE_METHOD(JS_iterate);
static NODE_METHOD(JS_bind);
static NODE_METHOD(JS_pluck);
static NODE_METHOD(JS_expand);
static NODE_METHOD(JS_raw);
static NODE_METHOD(JS_safeIntegers);
static NODE_METHOD(JS_columns);
static NODE_METHOD(JS_toString);
static NODE_GETTER(JS_busy);
Database* db;
sqlite3_stmt* handle;
Extras* extras;
bool alive;
bool locked;
bool bound;
bool has_bind_map;
bool safe_ints;
char mode;
bool returns_data;
};