|
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 { |
@@ -91,12 +93,11 @@ inline void THROW_ERR_SQLITE_ERROR(Isolate* isolate, const char* message) { |
91 | 93 |
|
92 | 94 | DatabaseSync::DatabaseSync(Environment* env, |
93 | 95 | Local<Object> object, |
94 | | - Local<String> location, |
| 96 | + const std::string_view location, |
95 | 97 | bool open) |
96 | 98 | : BaseObject(env, object) { |
97 | 99 | MakeWeak(); |
98 | | - Utf8Value utf8_location(env->isolate(), location); |
99 | | - location_ = utf8_location.ToString(); |
| 100 | + location_ = std::string(location); |
100 | 101 | connection_ = nullptr; |
101 | 102 |
|
102 | 103 | if (open) { |
@@ -191,7 +192,10 @@ void DatabaseSync::New(const FunctionCallbackInfo<Value>& args) { |
191 | 192 | } |
192 | 193 | } |
193 | 194 |
|
194 | | - new DatabaseSync(env, args.This(), args[0].As<String>(), open); |
| 195 | + BufferValue location(env->isolate(), args[0]); |
| 196 | + CHECK_NOT_NULL(*location); |
| 197 | + ToNamespacedPath(env, &location); |
| 198 | + new DatabaseSync(env, args.This(), location.ToStringView(), open); |
195 | 199 | } |
196 | 200 |
|
197 | 201 | void DatabaseSync::Open(const FunctionCallbackInfo<Value>& args) { |
@@ -388,7 +392,7 @@ bool StatementSync::BindValue(const Local<Value>& value, const int index) { |
388 | 392 | double val = value.As<Number>()->Value(); |
389 | 393 | r = sqlite3_bind_double(statement_, index, val); |
390 | 394 | } else if (value->IsString()) { |
391 | | - auto val = Utf8Value(env()->isolate(), value.As<String>()); |
| 395 | + Utf8Value val(env()->isolate(), value.As<String>()); |
392 | 396 | r = sqlite3_bind_text( |
393 | 397 | statement_, index, *val, val.length(), SQLITE_TRANSIENT); |
394 | 398 | } else if (value->IsNull()) { |
|
0 commit comments