Switch from dbstructure.json to dbstructure.php
This commit is contained in:
parent
e511790d62
commit
fad99b8619
5 changed files with 1402 additions and 1359 deletions
File diff suppressed because it is too large
Load diff
1369
config/dbstructure.php
Normal file
1369
config/dbstructure.php
Normal file
File diff suppressed because it is too large
Load diff
|
@ -5,7 +5,7 @@
|
||||||
namespace Friendica\Database;
|
namespace Friendica\Database;
|
||||||
|
|
||||||
use Exception;
|
use Exception;
|
||||||
use Friendica\Core\Addon;
|
use Friendica\Core\Hook;
|
||||||
use Friendica\Core\Config;
|
use Friendica\Core\Config;
|
||||||
use Friendica\Core\L10n;
|
use Friendica\Core\L10n;
|
||||||
use Friendica\Util\DateTimeFormat;
|
use Friendica\Util\DateTimeFormat;
|
||||||
|
@ -22,6 +22,13 @@ require_once 'include/text.php';
|
||||||
*/
|
*/
|
||||||
class DBStructure
|
class DBStructure
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* Database structure definition loaded from config/dbstructure.php
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
private static $definition = [];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Converts all tables from MyISAM to InnoDB
|
* Converts all tables from MyISAM to InnoDB
|
||||||
*/
|
*/
|
||||||
|
@ -822,43 +829,36 @@ class DBStructure
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads the database structure definition from the /config/dbstructure.json file
|
* Loads the database structure definition from the config/dbstructure.php file.
|
||||||
*
|
|
||||||
* Expected format:
|
|
||||||
* "table_name": {
|
|
||||||
* "comment": "meaningful table comment",
|
|
||||||
* "fields": {
|
|
||||||
* "field_name1": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "meaningful field comment"},
|
|
||||||
* "field_name2": {"type": "varchar(50)", "not null": "1", "default": "", "comment": "meaningful field comment"},
|
|
||||||
* },
|
|
||||||
* "indexes": {
|
|
||||||
* "PRIMARY": ["field_name1"],
|
|
||||||
* "name": ["UNIQUE", "field_name2"]
|
|
||||||
* }
|
|
||||||
* }
|
|
||||||
*
|
*
|
||||||
|
* @see config/dbstructure.php
|
||||||
* @return array
|
* @return array
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public static function definition() {
|
public static function definition()
|
||||||
$a = \Friendica\BaseObject::getApp();
|
{
|
||||||
|
if (!self::$definition) {
|
||||||
|
$a = \Friendica\BaseObject::getApp();
|
||||||
|
|
||||||
$filename = $a->getBasePath() . '/config/dbstructure.json';
|
$filename = $a->getBasePath() . '/config/dbstructure.php';
|
||||||
|
|
||||||
if (!is_readable($filename)) {
|
if (!is_readable($filename)) {
|
||||||
throw new Exception('Missing database structure config file config/dbstructure.json');
|
throw new Exception('Missing database structure config file config/dbstructure.php');
|
||||||
|
}
|
||||||
|
|
||||||
|
$definition = require $filename;
|
||||||
|
|
||||||
|
if (!$definition) {
|
||||||
|
throw new Exception('Corrupted database structure config file config/dbstructure.php');
|
||||||
|
}
|
||||||
|
|
||||||
|
self::$definition = $definition;
|
||||||
|
} else {
|
||||||
|
$definition = self::$definition;
|
||||||
}
|
}
|
||||||
|
|
||||||
$json = file_get_contents($filename);
|
Hook::callAll('dbstructure_definition', $definition);
|
||||||
|
|
||||||
$database = json_decode($json, true);
|
return $definition;
|
||||||
|
|
||||||
if (!$database) {
|
|
||||||
throw new Exception('Corrupted database structure config file config/dbstructure.json');
|
|
||||||
}
|
|
||||||
|
|
||||||
Addon::callHooks('dbstructure_definition', $database);
|
|
||||||
|
|
||||||
return $database;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,7 @@ trait VFSTrait
|
||||||
$this->setConfigFile('config.ini.php');
|
$this->setConfigFile('config.ini.php');
|
||||||
$this->setConfigFile('settings.ini.php');
|
$this->setConfigFile('settings.ini.php');
|
||||||
$this->setConfigFile('local.ini.php');
|
$this->setConfigFile('local.ini.php');
|
||||||
$this->setConfigFile('dbstructure.json');
|
$this->setConfigFile('dbstructure.php');
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function setConfigFile($filename)
|
protected function setConfigFile($filename)
|
||||||
|
|
|
@ -20,7 +20,7 @@ require_once 'include/dba.php';
|
||||||
* This function is responsible for doing post update changes to the data
|
* This function is responsible for doing post update changes to the data
|
||||||
* (not the structure) in the database.
|
* (not the structure) in the database.
|
||||||
*
|
*
|
||||||
* Database structure changes are done in src/Database/DBStructure.php
|
* Database structure changes are done in config/dbstructure.php
|
||||||
*
|
*
|
||||||
* If there is a need for a post process to a structure change, update this file
|
* If there is a need for a post process to a structure change, update this file
|
||||||
* by adding a new function at the end with the number of the new DB_UPDATE_VERSION.
|
* by adding a new function at the end with the number of the new DB_UPDATE_VERSION.
|
||||||
|
@ -31,7 +31,7 @@ require_once 'include/dba.php';
|
||||||
* You are currently on version 4711 and you are preparing changes that demand an update script.
|
* You are currently on version 4711 and you are preparing changes that demand an update script.
|
||||||
*
|
*
|
||||||
* 1. Create a function "update_4712()" here in the update.php
|
* 1. Create a function "update_4712()" here in the update.php
|
||||||
* 2. Apply the needed structural changes in src/Database/DBStructure.php
|
* 2. Apply the needed structural changes in config/dbStructure.php
|
||||||
* 3. Set DB_UPDATE_VERSION in boot.php to 4712.
|
* 3. Set DB_UPDATE_VERSION in boot.php to 4712.
|
||||||
*
|
*
|
||||||
* If you need to run a script before the database update, name the function "pre_update_4712()"
|
* If you need to run a script before the database update, name the function "pre_update_4712()"
|
||||||
|
|
Loading…
Reference in a new issue