@@ -5383,52 +5383,63 @@ static void Initialize(Local<Object> target,
53835383 }
53845384 });
53855385 }
5386- Local<FunctionTemplate> db_tmpl = NewFunctionTemplate (isolate, Database::New);
5387- db_tmpl->InstanceTemplate ()->SetInternalFieldCount (
5388- Database::kInternalFieldCount );
53895386 Local<Object> constants = Object::New (isolate);
53905387
53915388 DefineConstants (constants);
53925389
5393- SetProtoMethod (isolate, db_tmpl, " open" , Database::Open);
5394- SetProtoMethod (isolate, db_tmpl, " close" , Database::Close);
5395- SetProtoDispose (isolate, db_tmpl, Database::Dispose);
5396- SetProtoMethod (isolate, db_tmpl, " prepare" , Database::Prepare);
5397- SetProtoMethod (isolate, db_tmpl, " exec" , Database::Exec);
5398- SetProtoMethod (isolate, db_tmpl, " function" , Database::CustomFunction);
5399- SetProtoMethod (isolate, db_tmpl, " createTagStore" , Database::CreateTagStore);
5400- SetProtoMethodNoSideEffect (isolate, db_tmpl, " location" , Database::Location);
5401- SetProtoMethod (isolate, db_tmpl, " aggregate" , Database::AggregateFunction);
5402- SetProtoMethod (isolate, db_tmpl, " createSession" , Database::CreateSession);
5403- SetProtoMethod (isolate, db_tmpl, " applyChangeset" , Database::ApplyChangeset);
5404- SetProtoMethod (
5405- isolate, db_tmpl, " enableLoadExtension" , Database::EnableLoadExtension);
5406- SetProtoMethod (
5407- isolate, db_tmpl, " enableDefensive" , Database::EnableDefensive);
5408- SetProtoMethod (isolate, db_tmpl, " loadExtension" , Database::LoadExtension);
5409- SetProtoMethod (isolate, db_tmpl, " serialize" , Database::Serialize);
5410- SetProtoMethod (isolate, db_tmpl, " deserialize" , Database::Deserialize);
5411- SetProtoMethod (isolate, db_tmpl, " setAuthorizer" , Database::SetAuthorizer);
5412- SetProtoMethod (isolate, db_tmpl, " createModule" , Database::CreateModule);
5413- SetSideEffectFreeGetter (isolate,
5414- db_tmpl,
5415- FIXED_ONE_BYTE_STRING (isolate, " isOpen" ),
5416- Database::IsOpenGetter);
5417- SetSideEffectFreeGetter (isolate,
5418- db_tmpl,
5419- FIXED_ONE_BYTE_STRING (isolate, " isTransaction" ),
5420- Database::IsTransactionGetter);
5421- SetSideEffectFreeGetter (
5422- isolate, db_tmpl, env->limits_string (), Database::LimitsGetter);
5423- Local<String> sqlite_type_key = FIXED_ONE_BYTE_STRING (isolate, " sqlite-type" );
5424- Local<v8::Symbol> sqlite_type_symbol =
5425- v8::Symbol::For (isolate, sqlite_type_key);
5426- Local<String> database_sync_string =
5427- FIXED_ONE_BYTE_STRING (isolate, " node:sqlite" );
5428- db_tmpl->InstanceTemplate ()->Set (sqlite_type_symbol, database_sync_string);
5429-
5430- env->set_sqlite_database_constructor_template (db_tmpl);
5431- SetConstructorFunction (context, target, " Database" , db_tmpl);
5390+ Local<FunctionTemplate> db_tmpl = env->sqlite_database_constructor_template ();
5391+ if (db_tmpl.IsEmpty ()) {
5392+ db_tmpl = NewFunctionTemplate (isolate, Database::New);
5393+ db_tmpl->SetClassName (FIXED_ONE_BYTE_STRING (isolate, " Database" ));
5394+ db_tmpl->InstanceTemplate ()->SetInternalFieldCount (
5395+ Database::kInternalFieldCount );
5396+ SetProtoMethod (isolate, db_tmpl, " open" , Database::Open);
5397+ SetProtoMethod (isolate, db_tmpl, " close" , Database::Close);
5398+ SetProtoDispose (isolate, db_tmpl, Database::Dispose);
5399+ SetProtoMethod (isolate, db_tmpl, " prepare" , Database::Prepare);
5400+ SetProtoMethod (isolate, db_tmpl, " exec" , Database::Exec);
5401+ SetProtoMethod (isolate, db_tmpl, " function" , Database::CustomFunction);
5402+ SetProtoMethod (
5403+ isolate, db_tmpl, " createTagStore" , Database::CreateTagStore);
5404+ SetProtoMethodNoSideEffect (
5405+ isolate, db_tmpl, " location" , Database::Location);
5406+ SetProtoMethod (isolate, db_tmpl, " aggregate" , Database::AggregateFunction);
5407+ SetProtoMethod (isolate, db_tmpl, " createSession" , Database::CreateSession);
5408+ SetProtoMethod (
5409+ isolate, db_tmpl, " applyChangeset" , Database::ApplyChangeset);
5410+ SetProtoMethod (
5411+ isolate, db_tmpl, " enableLoadExtension" , Database::EnableLoadExtension);
5412+ SetProtoMethod (
5413+ isolate, db_tmpl, " enableDefensive" , Database::EnableDefensive);
5414+ SetProtoMethod (isolate, db_tmpl, " loadExtension" , Database::LoadExtension);
5415+ SetProtoMethod (isolate, db_tmpl, " serialize" , Database::Serialize);
5416+ SetProtoMethod (isolate, db_tmpl, " deserialize" , Database::Deserialize);
5417+ SetProtoMethod (isolate, db_tmpl, " setAuthorizer" , Database::SetAuthorizer);
5418+ SetProtoMethod (isolate, db_tmpl, " createModule" , Database::CreateModule);
5419+ SetSideEffectFreeGetter (isolate,
5420+ db_tmpl,
5421+ FIXED_ONE_BYTE_STRING (isolate, " isOpen" ),
5422+ Database::IsOpenGetter);
5423+ SetSideEffectFreeGetter (isolate,
5424+ db_tmpl,
5425+ FIXED_ONE_BYTE_STRING (isolate, " isTransaction" ),
5426+ Database::IsTransactionGetter);
5427+ SetSideEffectFreeGetter (
5428+ isolate, db_tmpl, env->limits_string (), Database::LimitsGetter);
5429+ Local<String> sqlite_type_key =
5430+ FIXED_ONE_BYTE_STRING (isolate, " sqlite-type" );
5431+ Local<v8::Symbol> sqlite_type_symbol =
5432+ v8::Symbol::For (isolate, sqlite_type_key);
5433+ Local<String> database_sync_string =
5434+ FIXED_ONE_BYTE_STRING (isolate, " node:sqlite" );
5435+ db_tmpl->InstanceTemplate ()->Set (sqlite_type_symbol, database_sync_string);
5436+ env->set_sqlite_database_constructor_template (db_tmpl);
5437+ }
5438+ SetConstructorFunction (context,
5439+ target,
5440+ " Database" ,
5441+ db_tmpl,
5442+ SetConstructorFunctionFlag::NONE );
54325443 SetConstructorFunction (context,
54335444 target,
54345445 " Statement" ,
0 commit comments