1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-27 20:41:58 +03:00

Add oo1.JsStorageDb.clearStorage/storageSize() methods, copies of capi.sqlite3_web_kvvfs_clear/size().

FossilOrigin-Name: 1e09efe7fa15b8908f8b8353164a8361de778e27ea6c0b11c402bf4e1c56333d
This commit is contained in:
stephan
2022-09-30 15:46:08 +00:00
parent 359d62395e
commit 07c0b72253
4 changed files with 43 additions and 15 deletions

View File

@ -426,6 +426,14 @@ self.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
DB.checkRc = checkSqlite3Rc; DB.checkRc = checkSqlite3Rc;
DB.prototype = { DB.prototype = {
/** Returns true if this db handle is open, else false. */
isOpen: function(){
return !!this.pointer;
},
/** Throws if this given DB has been closed, else returns `this`. */
affirmOpen: function(){
return affirmDbOpen(this);
},
/** /**
Finalizes all open statements and closes this database Finalizes all open statements and closes this database
connection. This is a no-op if the db has already been connection. This is a no-op if the db has already been
@ -1666,8 +1674,28 @@ self.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
vfs: "kvvfs" vfs: "kvvfs"
}); });
}; };
sqlite3.oo1.JsStorageDb.prototype = Object.create(DB.prototype); const jdb = sqlite3.oo1.JsStorageDb;
} jdb.prototype = Object.create(DB.prototype);
/** Equivalent to sqlite3_web_kvvfs_clear(). */
jdb.clearStorage = capi.sqlite3_web_kvvfs_clear;
/**
Clears this database instance's storage or throws if this
instance has been closed. Returns the number of
database blocks which were cleaned up.
*/
jdb.prototype.clearStorage = function(){
return jdb.clearStorage(affirmDbOpen(this).filename);
};
/** Equivalent to sqlite3_web_kvvfs_size(). */
jdb.storageSize = capi.sqlite3_web_kvvfs_size;
/**
Returns the _approximate_ number of bytes this database takes
up in its storage or throws if this instance has been closed.
*/
jdb.prototype.storageSize = function(){
return jdb.storageSize(affirmDbOpen(this).filename);
};
}/*main-window-only bits*/
}); });

View File

@ -56,10 +56,10 @@
const theStore = 's'===dbStorage[0] ? sessionStorage : localStorage; const theStore = 's'===dbStorage[0] ? sessionStorage : localStorage;
const db = new oo.JsStorageDb( dbStorage ); const db = new oo.JsStorageDb( dbStorage );
// Or: oo.DB(dbStorage, 'c', 'kvvfs') // Or: oo.DB(dbStorage, 'c', 'kvvfs')
log("db.storageSize():",db.storageSize());
document.querySelector('#btn-clear-storage').addEventListener('click',function(){ document.querySelector('#btn-clear-storage').addEventListener('click',function(){
const sz = capi.sqlite3_web_kvvfs_clear(); const sz = db.clearStorage();
log("kvvfs localStorage and sessionStorage cleared:",sz,"entries."); log("kvvfs",db.filename+"Storage cleared:",sz,"entries.");
}); });
document.querySelector('#btn-clear-log').addEventListener('click',function(){ document.querySelector('#btn-clear-log').addEventListener('click',function(){
eOutput.innerText = ''; eOutput.innerText = '';
@ -96,8 +96,8 @@
} }
}); });
document.querySelector('#btn-storage-size').addEventListener('click',function(){ document.querySelector('#btn-storage-size').addEventListener('click',function(){
log("sqlite3_web_kvvfs_size(",dbStorage,") says", capi.sqlite3_web_kvvfs_size(dbStorage), log("size.storageSize(",dbStorage,") says", db.storageSize(),
"bytes"); "bytes");
}); });
log("Storage backend:",db.filename); log("Storage backend:",db.filename);
if(0===db.selectValue('select count(*) from sqlite_master')){ if(0===db.selectValue('select count(*) from sqlite_master')){

View File

@ -1,5 +1,5 @@
C batch-runner.js:\sforce\sWebSQL\sbatches\sto\snot\sabort\sfor\sa\sfailed\sstatement\s(necessary\sfor\sapples-to-apples-ish\sbenchmark\scomparisons). C Add\soo1.JsStorageDb.clearStorage/storageSize()\smethods,\scopies\sof\scapi.sqlite3_web_kvvfs_clear/size().
D 2022-09-30T15:24:58.096 D 2022-09-30T15:46:08.196
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@ -486,7 +486,7 @@ F ext/wasm/api/post-js-header.js 2e5c886398013ba2af88028ecbced1e4b22dc96a86467f1
F ext/wasm/api/pre-js.js 2db711eb637991b383fc6b5c0f3df65ec48a7201e5730e304beba8de2d3f9b0b F ext/wasm/api/pre-js.js 2db711eb637991b383fc6b5c0f3df65ec48a7201e5730e304beba8de2d3f9b0b
F ext/wasm/api/sqlite3-api-cleanup.js 98905936119a555659b5cf43844211809ab9f436c52a569004e5585d2842b5c2 F ext/wasm/api/sqlite3-api-cleanup.js 98905936119a555659b5cf43844211809ab9f436c52a569004e5585d2842b5c2
F ext/wasm/api/sqlite3-api-glue.js 81b06946223181727b9a1d731b4f3c2ba97a33ae43bc0bbda7e8fa02400a207e F ext/wasm/api/sqlite3-api-glue.js 81b06946223181727b9a1d731b4f3c2ba97a33ae43bc0bbda7e8fa02400a207e
F ext/wasm/api/sqlite3-api-oo1.js c4eacee840d43503f0d46c83cb6ad530a32744e5204c162092588954be377858 F ext/wasm/api/sqlite3-api-oo1.js 9caed0757a5e039ed92467e827fd3ca347fa08f19fe086fcbdd14a4ebe9c2f01
F ext/wasm/api/sqlite3-api-opfs.js 1b097808b7b081b0f0700cf97d49ef19760e401706168edff9cd45cf9169f541 F ext/wasm/api/sqlite3-api-opfs.js 1b097808b7b081b0f0700cf97d49ef19760e401706168edff9cd45cf9169f541
F ext/wasm/api/sqlite3-api-prologue.js 304e883ff1b06f668ebb7bbdc80152b0a9f395bbd34acfd5f7a8ef84e8f17466 F ext/wasm/api/sqlite3-api-prologue.js 304e883ff1b06f668ebb7bbdc80152b0a9f395bbd34acfd5f7a8ef84e8f17466
F ext/wasm/api/sqlite3-api-worker1.js d5d5b7fac4c4731c38c7e03f4f404b2a95c388a2a1d8bcf361caada572f107e0 F ext/wasm/api/sqlite3-api-worker1.js d5d5b7fac4c4731c38c7e03f4f404b2a95c388a2a1d8bcf361caada572f107e0
@ -502,7 +502,7 @@ F ext/wasm/demo-123-worker.html e419b66495d209b5211ec64903b4cfb3ca7df20d652b41fc
F ext/wasm/demo-123.html aa281d33b7eefa755f3122b7b5a18f39a42dc5fb69c8879171bf14b4c37c4ec4 F ext/wasm/demo-123.html aa281d33b7eefa755f3122b7b5a18f39a42dc5fb69c8879171bf14b4c37c4ec4
F ext/wasm/demo-123.js 536579fd587974c2511c5bf82034b253d4fdeceabb726927ad7599ef6b7578e8 F ext/wasm/demo-123.js 536579fd587974c2511c5bf82034b253d4fdeceabb726927ad7599ef6b7578e8
F ext/wasm/demo-kvvfs1.html 7d4f28873de67f51ac18c584b7d920825139866a96049a49c424d6f5a0ea5e7f F ext/wasm/demo-kvvfs1.html 7d4f28873de67f51ac18c584b7d920825139866a96049a49c424d6f5a0ea5e7f
F ext/wasm/demo-kvvfs1.js a66ec114727902f59dd7bcb56f0916df710205f2f3c4a8b2dc8084d2844ee5a0 F ext/wasm/demo-kvvfs1.js 105596bd2ccd0b1deb5fde8e99b536e8242d4bb5932fac0c8403ff3a6bc547e8
F ext/wasm/fiddle.make d343d44c58bca06ac0ec0296207f6441560bff89f1e587bbaf843b73c2ca5d76 F ext/wasm/fiddle.make d343d44c58bca06ac0ec0296207f6441560bff89f1e587bbaf843b73c2ca5d76
F ext/wasm/fiddle/emscripten.css 3d253a6fdb8983a2ac983855bfbdd4b6fa1ff267c28d69513dd6ef1f289ada3f F ext/wasm/fiddle/emscripten.css 3d253a6fdb8983a2ac983855bfbdd4b6fa1ff267c28d69513dd6ef1f289ada3f
F ext/wasm/fiddle/fiddle-worker.js 2a7107b06e5be3b9b063c340ec952f687e37ba6e0aa736b58c280dfb5e16625a F ext/wasm/fiddle/fiddle-worker.js 2a7107b06e5be3b9b063c340ec952f687e37ba6e0aa736b58c280dfb5e16625a
@ -2029,8 +2029,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
P aa6ad34f3b693b554be58ee2895f79397162c5b8877c709653c8508fc625e8f4 P 60f0c5cb04d2baf8431e523434d8753e39377f4b2c6bad225c2e5487a4be419b
R ee4d9e4b75d1595fd50d7230f8809959 R 2f56b5a6214af7809c3a763a0bc16b9d
U stephan U stephan
Z d21afcaefd67f3605743128101420e02 Z 221cd5b9b95b0e9d6b36653a70003bd2
# Remove this line to create a well-formed Fossil manifest. # Remove this line to create a well-formed Fossil manifest.

View File

@ -1 +1 @@
60f0c5cb04d2baf8431e523434d8753e39377f4b2c6bad225c2e5487a4be419b 1e09efe7fa15b8908f8b8353164a8361de778e27ea6c0b11c402bf4e1c56333d