forked from WiseLibs/better-sqlite3
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Incorporated new modules into read-only query methods - Rewrote pragma method - Added limits to sqlite3 connections to prevent segfaults and data corruption
- Loading branch information
Joshua Wise
committed
Sep 16, 2016
1 parent
f5e3520
commit 3c542c1
Showing
12 changed files
with
144 additions
and
273 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
#include <stdint.h> | ||
#include <sqlite3.h> | ||
#include <nan.h> | ||
#include "../objects/int64/int64.h" | ||
#include "../util/macros.h" | ||
|
||
namespace Data { | ||
|
||
v8::Local<v8::Value> GetIntegerJS(sqlite3_stmt* handle, int column) { | ||
return Int64::NewProperInteger(sqlite3_column_int64(handle, column)); | ||
} | ||
v8::Local<v8::Value> GetFloatJS(sqlite3_stmt* handle, int column) { | ||
return Nan::New<v8::Number>(sqlite3_column_double(handle, column)); | ||
} | ||
v8::Local<v8::Value> GetTextJS(sqlite3_stmt* handle, int column) { | ||
const void* value = sqlite3_column_text16(handle, column); | ||
int byte_count = sqlite3_column_bytes16(handle, column); | ||
return v8::String::NewFromTwoByte( | ||
v8::Isolate::GetCurrent(), | ||
static_cast<const uint16_t*>(value), | ||
v8::NewStringType::kNormal, | ||
byte_count / sizeof (uint16_t) | ||
).ToLocalChecked(); | ||
} | ||
v8::Local<v8::Value> GetBlobJS(sqlite3_stmt* handle, int column) { | ||
const void* value = sqlite3_column_blob(handle, column); | ||
int byte_count = sqlite3_column_bytes(handle, column); | ||
return Nan::CopyBuffer( | ||
static_cast<const char*>(value), | ||
byte_count | ||
).ToLocalChecked(); | ||
} | ||
|
||
v8::Local<v8::Value> GetValueJS(sqlite3_stmt* handle, int column) { | ||
int type = sqlite3_column_type(handle, column); | ||
switch (type) { | ||
case SQLITE_INTEGER: | ||
return Data::GetIntegerJS(handle, column); | ||
case SQLITE_FLOAT: | ||
return Data::GetFloatJS(handle, column); | ||
case SQLITE_TEXT: | ||
return Data::GetTextJS(handle, column); | ||
case SQLITE_BLOB: | ||
return Data::GetBlobJS(handle, column); | ||
default: // SQLITE_NULL | ||
return Nan::Null(); | ||
} | ||
} | ||
|
||
v8::Local<v8::Value> GetRowJS(sqlite3_stmt* handle, int column_count) { | ||
v8::Local<v8::Object> row = Nan::New<v8::Object>(); | ||
for (int i=0; i<column_count; ++i) { | ||
Nan::Set(row, NEW_INTERNAL_STRING16(sqlite3_column_name16(handle, i)), Data::GetValueJS(handle, i)); | ||
} | ||
return row; | ||
} | ||
|
||
} |
Oops, something went wrong.