MCPcopy Create free account
hub / github.com/WiseLibs/better-sqlite3 / Deserialize

Method Deserialize

src/objects/database.cpp:88–118  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

86}
87
88bool Database::Deserialize(
89 Napi::Env env,
90 Napi::Object buffer,
91 Addon* addon,
92 sqlite3* db_handle,
93 bool readonly
94) {
95 Napi::Buffer<char> buf = buffer.As<Napi::Buffer<char>>();
96 size_t length = buf.Length();
97 unsigned char* data = (unsigned char*)sqlite3_malloc64(length);
98 unsigned int flags = SQLITE_DESERIALIZE_FREEONCLOSE | SQLITE_DESERIALIZE_RESIZEABLE;
99
100 if (readonly) {
101 flags |= SQLITE_DESERIALIZE_READONLY;
102 }
103 if (length) {
104 if (!data) {
105 ThrowError(env, "Out of memory");
106 return false;
107 }
108 memcpy(data, buf.Data(), length);
109 }
110
111 int status = sqlite3_deserialize(db_handle, "main", data, length, length, flags);
112 if (status != SQLITE_OK) {
113 ThrowSqliteError(env, addon, status == SQLITE_ERROR ? "unable to deserialize database" : sqlite3_errstr(status), status);
114 return false;
115 }
116
117 return true;
118}
119
120void Database::FreeSerialization(Napi::Env env, char* data) {
121 sqlite3_free(data);

Callers

nothing calls this directly

Calls 1

ThrowErrorFunction · 0.85

Tested by

no test coverage detected