Skip to content

Commit 5e6d3a2

Browse files
committed
src: cleanup sqlite async api
1 parent 081d7c5 commit 5e6d3a2

File tree

2 files changed

+25
-56
lines changed

2 files changed

+25
-56
lines changed

src/node_sqlite.cc

Lines changed: 25 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1129,6 +1129,21 @@ inline void DatabaseNew(const FunctionCallbackInfo<Value>& args,
11291129
allow_unknown_named_params_v.As<Boolean>()->Value());
11301130
}
11311131
}
1132+
1133+
Local<Value> defensive_v;
1134+
if (!options->Get(env->context(), env->defensive_string())
1135+
.ToLocal(&defensive_v)) {
1136+
return;
1137+
}
1138+
if (!defensive_v->IsUndefined()) {
1139+
if (!defensive_v->IsBoolean()) {
1140+
THROW_ERR_INVALID_ARG_TYPE(
1141+
env->isolate(),
1142+
"The \"options.defensive\" argument must be a boolean.");
1143+
return;
1144+
}
1145+
open_config.set_enable_defensive(defensive_v.As<Boolean>()->Value());
1146+
}
11321147
}
11331148

11341149
open_config.set_async(async);
@@ -2576,8 +2591,10 @@ MaybeLocal<Promise::Resolver> StatementAsyncExecutionHelper::All(
25762591
}
25772592
}
25782593

2579-
resolver->Resolve(env->context(),
2580-
Array::New(isolate, js_rows.data(), js_rows.size()));
2594+
resolver
2595+
->Resolve(env->context(),
2596+
Array::New(isolate, js_rows.data(), js_rows.size()))
2597+
.FromJust();
25812598
};
25822599

25832600
Local<Promise::Resolver> resolver =
@@ -2647,7 +2664,6 @@ MaybeLocal<Promise::Resolver> StatementAsyncExecutionHelper::Get(
26472664

26482665
MaybeLocal<Promise::Resolver> StatementAsyncExecutionHelper::Run(
26492666
Environment* env, Statement* stmt) {
2650-
Isolate* isolate = env->isolate();
26512667
Database* db = stmt->db_.get();
26522668
sqlite3* conn = db->Connection();
26532669
auto task =
@@ -3379,61 +3395,16 @@ void SQLTagStore::MemoryInfo(MemoryTracker* tracker) const {
33793395
tracker->TrackFieldWithSize("sql_tags_cache", cache_content_size);
33803396
}
33813397

3382-
// TODO(geeksilva97): move this to a common location if other classes need it
3383-
inline Local<FunctionTemplate> GetStatementConstructorTemplate(
3384-
Isolate* isolate) {
3385-
Local<FunctionTemplate> tmpl =
3386-
NewFunctionTemplate(isolate, IllegalConstructor);
3387-
tmpl->InstanceTemplate()->SetInternalFieldCount(
3388-
Statement::kInternalFieldCount);
3389-
SetProtoMethod(isolate, tmpl, "iterate", Statement::Iterate);
3390-
SetProtoMethod(isolate, tmpl, "all", Statement::All);
3391-
SetProtoMethod(isolate, tmpl, "get", Statement::Get);
3392-
SetProtoMethod(isolate, tmpl, "run", Statement::Run);
3393-
SetProtoMethodNoSideEffect(isolate, tmpl, "columns", Statement::Columns);
3394-
SetSideEffectFreeGetter(isolate,
3395-
tmpl,
3396-
FIXED_ONE_BYTE_STRING(isolate, "sourceSQL"),
3397-
Statement::SourceSQLGetter);
3398-
SetSideEffectFreeGetter(isolate,
3399-
tmpl,
3400-
FIXED_ONE_BYTE_STRING(isolate, "expandedSQL"),
3401-
Statement::ExpandedSQLGetter);
3402-
SetProtoMethod(isolate,
3403-
tmpl,
3404-
"setAllowBareNamedParameters",
3405-
Statement::SetAllowBareNamedParameters);
3406-
SetProtoMethod(isolate,
3407-
tmpl,
3408-
"setAllowUnknownNamedParameters",
3409-
Statement::SetAllowUnknownNamedParameters);
3410-
SetProtoMethod(isolate, tmpl, "setReadBigInts", Statement::SetReadBigInts);
3411-
SetProtoMethod(isolate, tmpl, "setReturnArrays", Statement::SetReturnArrays);
3412-
3413-
return tmpl;
3414-
}
3415-
3416-
Local<FunctionTemplate> Statement::GetConstructorTemplate(
3417-
Environment* env, std::string_view name = "Statement") {
3418-
Isolate* isolate = env->isolate();
3419-
Local<FunctionTemplate> tmpl = GetStatementConstructorTemplate(isolate);
3420-
Local<String> class_name;
3421-
if (!String::NewFromUtf8(isolate, name.data()).ToLocal(&class_name)) {
3422-
return Local<FunctionTemplate>();
3423-
}
3424-
3425-
tmpl->SetClassName(class_name);
3426-
return tmpl;
3427-
}
3428-
34293398
BaseObjectPtr<Statement> Statement::Create(Environment* env,
34303399
BaseObjectPtr<Database> db,
34313400
sqlite3_stmt* stmt) {
3401+
Local<FunctionTemplate> tmpl =
3402+
env->sqlite_statement_async_constructor_template();
3403+
if (!db->is_async()) {
3404+
tmpl = env->sqlite_statement_sync_constructor_template();
3405+
}
34323406
Local<Object> obj;
3433-
if (!GetConstructorTemplate(env)
3434-
->InstanceTemplate()
3435-
->NewInstance(env->context())
3436-
.ToLocal(&obj)) {
3407+
if (!tmpl->InstanceTemplate()->NewInstance(env->context()).ToLocal(&obj)) {
34373408
return nullptr;
34383409
}
34393410

src/node_sqlite.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -247,8 +247,6 @@ class Statement : public BaseObject {
247247
BaseObjectPtr<Database> db,
248248
sqlite3_stmt* stmt);
249249
void MemoryInfo(MemoryTracker* tracker) const override;
250-
static v8::Local<v8::FunctionTemplate> GetConstructorTemplate(
251-
Environment* env, std::string_view class_name);
252250
static BaseObjectPtr<Statement> Create(Environment* env,
253251
BaseObjectPtr<Database> db,
254252
sqlite3_stmt* stmt);

0 commit comments

Comments
 (0)