mirror of
https://github.com/sqlite/sqlite.git
synced 2025-06-09 06:21:25 +03:00
95 lines
2.4 KiB
JavaScript
95 lines
2.4 KiB
JavaScript
/*
|
|
2025-01-31
|
|
|
|
The author disclaims copyright to this source code. In place of a
|
|
legal notice, here is a blessing:
|
|
|
|
* May you do good and not evil.
|
|
* May you find forgiveness for yourself and forgive others.
|
|
* May you share freely, never taking more than you give.
|
|
|
|
***********************************************************************
|
|
|
|
This file is part of testing the OPFS SAHPool VFS's computeDigest()
|
|
fix. See ./digest.html for the details.
|
|
*/
|
|
const clog = console.log.bind(console);
|
|
const wPost = (type,...args)=>postMessage({type, payload:args});
|
|
const log = (...args)=>{
|
|
clog("Worker:",...args);
|
|
wPost('log',...args);
|
|
}
|
|
|
|
const hasOpfs = ()=>{
|
|
return globalThis.FileSystemHandle
|
|
&& globalThis.FileSystemDirectoryHandle
|
|
&& globalThis.FileSystemFileHandle
|
|
&& globalThis.FileSystemFileHandle.prototype.createSyncAccessHandle
|
|
&& navigator?.storage?.getDirectory;
|
|
};
|
|
if( !hasOpfs() ){
|
|
wPost('error',"OPFS not detected");
|
|
throw new Error("OPFS not detected");
|
|
}
|
|
|
|
clog("Importing sqlite3...");
|
|
const searchParams = new URL(self.location.href).searchParams;
|
|
importScripts(searchParams.get('sqlite3.dir') + '/sqlite3.js');
|
|
|
|
const runTests = function(sqlite3, poolUtil){
|
|
const fname = '/my.db';
|
|
let db = new poolUtil.OpfsSAHPoolDb(fname);
|
|
let n = (new Date()).valueOf();
|
|
try {
|
|
db.exec([
|
|
"create table if not exists t(a);"
|
|
]);
|
|
db.exec({
|
|
sql: "insert into t(a) values(?)",
|
|
bind: n++
|
|
});
|
|
log(fname,"record count: ",db.selectValue("select count(*) from t"));
|
|
}finally{
|
|
db.close();
|
|
}
|
|
|
|
db = new poolUtil.OpfsSAHPoolDb(fname);
|
|
try {
|
|
db.exec({
|
|
sql: "insert into t(a) values(?)",
|
|
bind: n++
|
|
});
|
|
log(fname,"record count: ",db.selectValue("select count(*) from t"));
|
|
}finally{
|
|
db.close();
|
|
}
|
|
|
|
const fname2 = '/my2.db';
|
|
db = new poolUtil.OpfsSAHPoolDb(fname2);
|
|
try {
|
|
db.exec([
|
|
"create table if not exists t(a);"
|
|
]);
|
|
db.exec({
|
|
sql: "insert into t(a) values(?)",
|
|
bind: n++
|
|
});
|
|
log(fname2,"record count: ",db.selectValue("select count(*) from t"));
|
|
}finally{
|
|
db.close();
|
|
}
|
|
};
|
|
|
|
globalThis.sqlite3InitModule().then(async function(sqlite3){
|
|
log("sqlite3 version:",sqlite3.version);
|
|
const sahPoolConfig = {
|
|
name: 'opfs-sahpool-digest',
|
|
clearOnInit: false,
|
|
initialCapacity: 6
|
|
};
|
|
return sqlite3.installOpfsSAHPoolVfs(sahPoolConfig).then(poolUtil=>{
|
|
log('vfs acquired');
|
|
runTests(sqlite3, poolUtil);
|
|
});
|
|
});
|