feat(database): ✨ add database table prefixing
This commit is contained in:
parent
3e1e61bf4a
commit
85fe57ea0c
3 changed files with 48 additions and 46 deletions
|
@ -8,11 +8,9 @@ USE dragon_fire;
|
|||
-- DROP TABLE path_errcodes;
|
||||
-- DROP TABLE feed_cache;
|
||||
|
||||
CREATE TABLE posts (
|
||||
CREATE TABLE dev_posts (
|
||||
post_id INTEGER AUTO_INCREMENT,
|
||||
|
||||
host VARCHAR(64) NOT NULL,
|
||||
|
||||
post_path VARCHAR(255) NOT NULL,
|
||||
post_path_depth INTEGER NOT NULL DEFAULT 0,
|
||||
|
||||
|
@ -29,13 +27,13 @@ CREATE TABLE posts (
|
|||
post_settings_cache JSON DEFAULT NULL,
|
||||
|
||||
PRIMARY KEY(post_id),
|
||||
CONSTRAINT unique_post UNIQUE (host, post_path),
|
||||
CONSTRAINT unique_post UNIQUE (post_path),
|
||||
|
||||
INDEX(host, post_path),
|
||||
INDEX(host, post_path_depth, post_path),
|
||||
INDEX(post_path),
|
||||
INDEX(post_path_depth, post_path),
|
||||
|
||||
INDEX(host, post_created_at),
|
||||
INDEX(host, post_updated_at),
|
||||
INDEX(post_created_at),
|
||||
INDEX(post_updated_at),
|
||||
|
||||
FULLTEXT(post_path),
|
||||
FULLTEXT(post_tags),
|
||||
|
@ -43,13 +41,13 @@ CREATE TABLE posts (
|
|||
FULLTEXT(post_brief)
|
||||
);
|
||||
|
||||
CREATE TABLE post_markdown (
|
||||
CREATE TABLE dev_post_markdown (
|
||||
post_id INTEGER,
|
||||
|
||||
post_markdown TEXT,
|
||||
|
||||
PRIMARY KEY(post_id),
|
||||
FOREIGN KEY(post_id) REFERENCES posts(post_id)
|
||||
FOREIGN KEY(post_id) REFERENCES dev_posts(post_id)
|
||||
ON DELETE CASCADE,
|
||||
|
||||
FULLTEXT(post_markdown)
|
||||
|
|
|
@ -15,14 +15,17 @@ class MySQLHandler
|
|||
CONST SQL_WRITE_COLUMNS = ['path', 'title', 'brief'];
|
||||
|
||||
private $sql_connection;
|
||||
private $db_prefix;
|
||||
|
||||
public $hostname;
|
||||
|
||||
public $debugging;
|
||||
|
||||
function __construct($sql_connection, $hostname) {
|
||||
|
||||
|
||||
function __construct($sql_connection, $hostname, $db_prefix) {
|
||||
$this->sql_connection = $sql_connection;
|
||||
$this->hostname = $hostname;
|
||||
$this->db_prefix = $db_prefix;
|
||||
|
||||
$this->debugging = false;
|
||||
}
|
||||
|
@ -48,10 +51,10 @@ class MySQLHandler
|
|||
$post_path = sanitize_post_path($post_path);
|
||||
|
||||
$this->_exec("
|
||||
UPDATE posts
|
||||
UPDATE {$this->db_prefix}_posts
|
||||
SET post_settings_cache=NULL
|
||||
WHERE host = ? AND post_path LIKE ?;
|
||||
", "ss", $this->hostname, $post_path . "%");
|
||||
WHERE post_path LIKE ?;
|
||||
", "s", $post_path . "%");
|
||||
}
|
||||
|
||||
public function stub_postdata($path) {
|
||||
|
@ -60,14 +63,13 @@ class MySQLHandler
|
|||
|
||||
|
||||
$qry = "
|
||||
INSERT INTO posts
|
||||
(host, post_path, post_path_depth)
|
||||
INSERT INTO {$this->db_prefix}_posts
|
||||
(post_path, post_path_depth)
|
||||
VALUES
|
||||
( ?, ?, ?) AS new
|
||||
( ?, ?) AS new
|
||||
ON DUPLICATE KEY UPDATE post_path=new.post_path;";
|
||||
|
||||
$this->_exec($qry, "ssi",
|
||||
$this->hostname,
|
||||
$this->_exec($qry, "si",
|
||||
$post_path,
|
||||
$path_depth);
|
||||
}
|
||||
|
@ -108,7 +110,6 @@ class MySQLHandler
|
|||
);
|
||||
|
||||
$sql_args = [
|
||||
$this->hostname,
|
||||
$post_path,
|
||||
substr_count($post_path, "/"),
|
||||
$data['title'],
|
||||
|
@ -126,13 +127,12 @@ class MySQLHandler
|
|||
array_push($sql_args, json_encode($data));
|
||||
|
||||
$qry =
|
||||
"INSERT INTO posts
|
||||
(host,
|
||||
post_path, post_path_depth,
|
||||
"INSERT INTO {$this->db_prefix}_posts
|
||||
(post_path, post_path_depth,
|
||||
post_title, post_tags, post_brief,
|
||||
post_metadata, post_settings_cache)
|
||||
VALUES
|
||||
( ?, ?, ?, ?, ?, ?, ?, null) AS new
|
||||
( ?, ?, ?, ?, ?, ?, null) AS new
|
||||
ON DUPLICATE KEY
|
||||
UPDATE post_title=new.post_title,
|
||||
post_tags=new.post_tags,
|
||||
|
@ -141,7 +141,7 @@ class MySQLHandler
|
|||
post_updated_at=CURRENT_TIMESTAMP;
|
||||
";
|
||||
|
||||
$this->_exec($qry, "ssissss", ...$sql_args);
|
||||
$this->_exec($qry, "sissss", ...$sql_args);
|
||||
|
||||
if(isset($post_markdown)) {
|
||||
$this->set_post_markdown($this->sql_connection->insert_id, $post_markdown);
|
||||
|
@ -152,7 +152,7 @@ class MySQLHandler
|
|||
|
||||
public function set_post_markdown($id, $markdown) {
|
||||
$qry =
|
||||
"INSERT INTO post_markdown ( post_id, post_markdown )
|
||||
"INSERT INTO {$this->db_prefix}_post_markdown ( post_id, post_markdown )
|
||||
VALUES (?, ?) AS new
|
||||
ON DUPLICATE KEY UPDATE post_markdown=new.post_markdown;
|
||||
";
|
||||
|
@ -167,9 +167,9 @@ class MySQLHandler
|
|||
|
||||
$post_settings = $this->_exec("
|
||||
SELECT post_settings_cache
|
||||
FROM posts
|
||||
WHERE post_path = ? AND host = ?
|
||||
", "ss", $post_path, $this->hostname)->fetch_assoc();
|
||||
FROM {$this->db_prefix}_posts
|
||||
WHERE post_path = ?
|
||||
", "s", $post_path)->fetch_assoc();
|
||||
|
||||
if(!isset($post_settings)) {
|
||||
$this->_dbg("-> gps: Returning because of no result\n");
|
||||
|
@ -192,9 +192,9 @@ class MySQLHandler
|
|||
$post_settings = [];
|
||||
$post_metadata = $this->_exec("
|
||||
SELECT post_path, post_metadata
|
||||
FROM posts
|
||||
WHERE post_path = ? AND host = ?
|
||||
", "ss", $post_path, $this->hostname)->fetch_assoc();
|
||||
FROM {$this->db_prefix}_posts
|
||||
WHERE post_path = ?
|
||||
", "s", $post_path)->fetch_assoc();
|
||||
|
||||
if(isset($post_metadata['post_metadata'])) {
|
||||
$post_metadata = json_decode($post_metadata['post_metadata'], true);
|
||||
|
@ -209,9 +209,9 @@ class MySQLHandler
|
|||
$this->_dbg("-> gps: Merged post settings are " . json_encode($post_settings) . ", saving...\n");
|
||||
|
||||
$this->_exec("
|
||||
UPDATE posts SET post_settings_cache=? WHERE post_path=? AND host=?
|
||||
", "sss",
|
||||
json_encode($post_settings), $post_path, $this->hostname);
|
||||
UPDATE {$this->db_prefix}_posts SET post_settings_cache=? WHERE post_path=?
|
||||
", "ss",
|
||||
json_encode($post_settings), $post_path);
|
||||
|
||||
return $post_settings;
|
||||
}
|
||||
|
@ -245,6 +245,7 @@ class MySQLHandler
|
|||
}
|
||||
|
||||
$outdata = array_merge($post_settings, $post_metadata, $outdata);
|
||||
$outdata['host'] ??= $this->hostname;
|
||||
|
||||
return $outdata;
|
||||
}
|
||||
|
@ -254,11 +255,11 @@ class MySQLHandler
|
|||
|
||||
$qry = "
|
||||
SELECT *
|
||||
FROM posts
|
||||
WHERE post_path = ? AND host = ?;
|
||||
FROM {$this->db_prefix}_posts
|
||||
WHERE post_path = ?;
|
||||
";
|
||||
|
||||
$data = $this->_exec($qry, "ss", $path, $this->hostname)->fetch_assoc();
|
||||
$data = $this->_exec($qry, "s", $path)->fetch_assoc();
|
||||
|
||||
return $this->process_postdata($data);
|
||||
}
|
||||
|
@ -291,7 +292,7 @@ class MySQLHandler
|
|||
|
||||
$qry = "
|
||||
SELECT *
|
||||
FROM posts
|
||||
FROM {$this->db_prefix}_posts
|
||||
WHERE post_path_depth BETWEEN ? AND ?
|
||||
AND post_path LIKE ?
|
||||
ORDER BY " . $order_by .
|
||||
|
@ -314,17 +315,17 @@ class MySQLHandler
|
|||
public function get_post_markdown($id) {
|
||||
$qry =
|
||||
"SELECT post_markdown
|
||||
FROM post_markdown
|
||||
FROM {$this->db_prefix}_post_markdown
|
||||
WHERE post_id = ?
|
||||
";
|
||||
|
||||
$data = $this->_exec($qry, "i", $id)->fetch_assoc();
|
||||
|
||||
if(!isset($data)) {
|
||||
return "";
|
||||
return '';
|
||||
}
|
||||
|
||||
return $data['post_markdown'];
|
||||
return $data['post_markdown'] ?? '';
|
||||
}
|
||||
|
||||
public function parse_search_query_string($text) {
|
||||
|
@ -469,8 +470,9 @@ class MySQLHandler
|
|||
|
||||
$qry =
|
||||
"SELECT " . implode(', ', $qry_selects) . "
|
||||
FROM posts
|
||||
LEFT JOIN post_markdown ON posts.post_id = post_markdown.post_id
|
||||
FROM {$this->db_prefix}_posts AS posts
|
||||
LEFT JOIN {$this->db_prefix}_post_markdown AS post_markdown
|
||||
ON posts.post_id = post_markdown.post_id
|
||||
WHERE " . implode(' and ', $qry_wheres) . "
|
||||
ORDER BY post_search_score DESC
|
||||
LIMIT " . $options['limit'] . "
|
||||
|
|
|
@ -25,7 +25,9 @@ try {
|
|||
die();
|
||||
}
|
||||
|
||||
$sql_adapter = new MySQLHandler($db_connection, $SERVER_HOST);
|
||||
$sql_adapter = new MySQLHandler($db_connection,
|
||||
$SITE_CONFIG['site_defaults']['uri_prefix'],
|
||||
$db_params['prefix']);
|
||||
$adapter = new PostHandler($sql_adapter);
|
||||
|
||||
require_once 'dergdown.php';
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue