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

Method Deserialize

src/objects/database.cpp:87–117  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls 1

ThrowErrorFunction · 0.85

Tested by

no test coverage detected