|
9 | 9 | #include "path.h" |
10 | 10 | #include "sqlite3.h" |
11 | 11 | #include "util-inl.h" |
| 12 | +#include "util.h" |
12 | 13 |
|
13 | 14 | #include <cinttypes> |
| 15 | +#include <string_view> |
14 | 16 |
|
15 | 17 | namespace node { |
16 | 18 | namespace sqlite { |
@@ -78,12 +80,11 @@ inline void THROW_ERR_SQLITE_ERROR(Isolate* isolate, sqlite3* db) { |
78 | 80 |
|
79 | 81 | DatabaseSync::DatabaseSync(Environment* env, |
80 | 82 | Local<Object> object, |
81 | | - Local<String> location, |
| 83 | + const std::string_view location, |
82 | 84 | bool open) |
83 | 85 | : BaseObject(env, object) { |
84 | 86 | MakeWeak(); |
85 | | - Utf8Value utf8_location(env->isolate(), location); |
86 | | - location_ = utf8_location.ToString(); |
| 87 | + location_ = std::string(location); |
87 | 88 | connection_ = nullptr; |
88 | 89 |
|
89 | 90 | if (open) { |
@@ -178,7 +179,10 @@ void DatabaseSync::New(const FunctionCallbackInfo<Value>& args) { |
178 | 179 | } |
179 | 180 | } |
180 | 181 |
|
181 | | - new DatabaseSync(env, args.This(), args[0].As<String>(), open); |
| 182 | + BufferValue location(env->isolate(), args[0]); |
| 183 | + CHECK_NOT_NULL(*location); |
| 184 | + ToNamespacedPath(env, &location); |
| 185 | + new DatabaseSync(env, args.This(), location.ToStringView(), open); |
182 | 186 | } |
183 | 187 |
|
184 | 188 | void DatabaseSync::Open(const FunctionCallbackInfo<Value>& args) { |
@@ -375,7 +379,7 @@ bool StatementSync::BindValue(const Local<Value>& value, const int index) { |
375 | 379 | double val = value.As<Number>()->Value(); |
376 | 380 | r = sqlite3_bind_double(statement_, index, val); |
377 | 381 | } else if (value->IsString()) { |
378 | | - auto val = Utf8Value(env()->isolate(), value.As<String>()); |
| 382 | + Utf8Value val(env()->isolate(), value.As<String>()); |
379 | 383 | r = sqlite3_bind_text( |
380 | 384 | statement_, index, *val, val.length(), SQLITE_TRANSIENT); |
381 | 385 | } else if (value->IsNull()) { |
|
0 commit comments