Add search index (#15)
- Add utility rebuild script - Add Search to header - Add shell of search page - Add search query support to ItemList
This commit is contained in:
49
src/util/search.php
Normal file
49
src/util/search.php
Normal file
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
use JetBrains\PhpStorm\NoReturn;
|
||||
|
||||
require __DIR__ . '/../cli-start.php';
|
||||
|
||||
cli_title('SEARCH MAINTENANCE');
|
||||
|
||||
if ($argc < 2) display_help();
|
||||
|
||||
switch ($argv[1]) {
|
||||
case 'rebuild':
|
||||
rebuild_index();
|
||||
break;
|
||||
default:
|
||||
printfn('Unrecognized option "%s"', $argv[1]);
|
||||
display_help();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Display the options for this utility and exit
|
||||
*/
|
||||
#[NoReturn]
|
||||
function display_help(): void {
|
||||
printfn('Options:');
|
||||
printfn(' - rebuild');
|
||||
printfn(' Rebuilds search index');
|
||||
exit(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Rebuild the search index, creating it if it does not already exist
|
||||
*/
|
||||
function rebuild_index(): void {
|
||||
$db = Data::getConnection();
|
||||
|
||||
try {
|
||||
$hasIndex = $db->query("SELECT COUNT(*) FROM sqlite_master WHERE name = 'item_ai'");
|
||||
if ($hasIndex->fetchArray(SQLITE3_NUM)[0] == 0) {
|
||||
printfn('Creating search index....');
|
||||
Data::createSearchIndex($db);
|
||||
}
|
||||
printfn('Rebuilding search index...');
|
||||
$db->exec("INSERT INTO item_search (item_search) VALUES ('rebuild')");
|
||||
printfn(PHP_EOL . 'Search index rebuilt');
|
||||
} finally {
|
||||
$db->close();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user