feat: automatic db creation and migration
This commit is contained in:
+31
-1
@@ -1,4 +1,6 @@
|
||||
<?php
|
||||
const UPDATES_STATUS_FILE = "k-api.updates-status.php";
|
||||
const SQL_UPDATES_FOLDER = "./sql-updates";
|
||||
|
||||
/** @param callable(_K_Api): void $apiFun */
|
||||
function CreateApi(callable $apiFun, bool $devmode = false)
|
||||
@@ -66,13 +68,41 @@ class _K_Api
|
||||
$_a = "unknown return type ($_type), (available bool, array, numeric, string)";
|
||||
}
|
||||
die("ERROR: " . $_a);
|
||||
return;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
public function useUpdates(PDO $db)
|
||||
{
|
||||
$currentVersion = file_get_contents(UPDATES_STATUS_FILE);
|
||||
if ($currentVersion === false) {
|
||||
file_put_contents(UPDATES_STATUS_FILE, "<?php // -1");
|
||||
$currentVersion = -1;
|
||||
} else {
|
||||
$currentVersion = intval(substr($currentVersion, 9));
|
||||
}
|
||||
$files = glob(SQL_UPDATES_FOLDER . '/*.sql');
|
||||
$updateVersion = null;
|
||||
foreach ($files as $file) {
|
||||
if (!is_file($file)) {
|
||||
continue;
|
||||
}
|
||||
$version = intval(basename($file, '.sql'));
|
||||
if ($version > $currentVersion) {
|
||||
$db->exec(file_get_contents($file));
|
||||
$updateVersion = $version;
|
||||
}
|
||||
}
|
||||
if ($updateVersion !== null) {
|
||||
file_put_contents(
|
||||
UPDATES_STATUS_FILE,
|
||||
"<?php // " . $updateVersion
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function end()
|
||||
{
|
||||
if (!$this->has_exec) {
|
||||
|
||||
Reference in New Issue
Block a user