MDNodaHelpers/src/NodaDbAdmin.php

63 lines
2.0 KiB
PHP

<?PHP
/**
* Class for setting up databases.
*
* @author Joshua Ramon Enslin <joshua@museum-digital.de>
*/
declare(strict_types = 1);
/**
* Class for setting up databases.
*/
final class NodaDbAdmin {
/**
* Sets up a search index for vocabulary searches.
*
* @param MDMysqli $mysqli_manticore Manticore DB connection.
* @param string $index_name Name of the search index.
*
* @return void
*/
public static function resetVocabularySearchIndex(MDMysqli $mysqli_manticore, string $index_name):void {
$mysqli_manticore->query("DROP TABLE IF EXISTS `" . $index_name . "`");
$mysqli_manticore->query("CREATE TABLE IF NOT EXISTS `" . $index_name . "`
(`entry_id` int,
`language` string,
`name` text,
`description` text,
`timestamp` timestamp)
min_infix_len = '3'
charset_table='" . MDMysqli::MANTICORE_CHARSET_TABLE . "'
rt_mem_limit = '2G'");
MDConsole::write("Create table `" . $index_name . "`");
}
/**
* Ensures that a search index is set up.
*
* @param MDMysqli $mysqli_manticore Manticore DB connection.
* @param string $index_name Name of the search index.
*
* @return void
*/
public static function setupVocabularySearchIndex(MDMysqli $mysqli_manticore, string $index_name):void {
$mysqli_manticore->query("CREATE TABLE IF NOT EXISTS `" . $index_name . "`
(`entry_id` int,
`language` string,
`name` text,
`description` text,
`timestamp` timestamp)
min_infix_len = '3'
expansion_limit = '32'
blend_chars = '., :, &, -, ;'
blend_mode = 'trim_head, trim_tail, trim_both, trim_all, trim_none, skip_pure'
charset_table='" . MDMysqli::MANTICORE_CHARSET_TABLE . "'
rt_mem_limit = '2G'");
MDConsole::write("Create table `" . $index_name . "`");
}
}