1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
<script src="/js/jquery.js" type="text/javascript"></script>
<script src="/js/url-search-params.js" type="text/javascript"></script>
<script src="/js/loadingoverlay.min.js" type="text/javascript"></script>
<script src="/js/require.js" type="text/javascript"></script>
<script src="/js/sql-fts5.js" type="module"></script>
<script language="Javascript">
function escapeHtml( text ) {
return text.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">" );
}
// https://gist.github.com/igorgatis/d294fe714a4f523ac3a3
function hexdump(buffer, blockSize) {
blockSize = blockSize || 16;
var lines = [];
var hex = "0123456789ABCDEF";
for (var b = 0; b < buffer.length; b += blockSize) {
var block = buffer.slice(b, Math.min(b + blockSize, buffer.length));
var addr = ("0000" + b.toString(16)).slice(-4);
var codes = block.split('').map(function (ch) {
var code = ch.charCodeAt(0);
return " " + hex[(0xF0 & code) >> 4] + hex[0x0F & code];
}).join("");
codes += " ".repeat(blockSize - block.length);
var chars = block.replace(/[\x00-\x1F\x20]/g, '.');
chars += " ".repeat(blockSize - block.length);
lines.push(addr + " " + codes + " " + chars);
}
return lines.join("\n");
}
function executeQuery( query ) {
$( "#query" ).LoadingOverlay( "show" );
console.log( "here" );
const xhr = new XMLHttpRequest();
xhr.open('GET', '/index/posts.db', true);
xhr.responseType = 'arraybuffer';
console.log( "here" );
xhr.onload = e => {
const uInt8Array = new Uint8Array(xhr.response);
console.log( uInt8Array );
requirejs(["/js/sql-wasm.js"], function(initSqlJs) {
const SQL = initSqlJs({
locateFile: file => `http://localhost:1313/js/${file}`
});
initSqlJs().then( function( SQL ) {
var db = new SQL.Database(uInt8Array);
//~ const stmt = db.prepare("SELECT sqlite_version()");
const stmt = db.prepare( "select uri,highlight(posts, 1, '<b>', '</b>'),snippet(posts, 2, '<b>', '</b>', '...', 50) from posts where posts MATCH 'OpenBSD' ORDER BY bm25(posts) limit 5 offset 0" );
//~ var stmt = db.prepare( "select * from sqlite_master" );
//~ const result = stmt.getAsObject({':aval' : 1, ':bval' : 'world'});
//~ console.log(result);
//~ while (stmt.step()) console.log(stmt.get());
stmt.bind({a:1, b:2});
console.log( stmt);
var html = "<pre>";
while(stmt.step()) { //
var row = stmt.getAsObject();
html += JSON.stringify( row );
}
stmt.free();
db.close();
html += "</pre>";
$( '#ranklist' ).html( html );
$( "#query" ).LoadingOverlay( "hide" );
} );
} );
}
xhr.send( );
}
$( window ).load( function( ) {
var paramsString = window.location.search;
var searchParams = new URLSearchParams( paramsString );
if( searchParams.has( "q" ) ) {
executeQuery( searchParams.get( "q" ) );
} else {
// TODO: come up with something here
} // Show full page LoadingOverlay
} );
</script>
<div id="ranklist">
ranks
</div>
|