Switch from dbstructure.json to dbstructure.php

This commit is contained in:
Hypolite Petovan 2018-10-21 01:56:58 -04:00
parent e511790d62
commit fad99b8619
5 changed files with 1402 additions and 1359 deletions

View file

@ -5,7 +5,7 @@
namespace Friendica\Database;
use Exception;
use Friendica\Core\Addon;
use Friendica\Core\Hook;
use Friendica\Core\Config;
use Friendica\Core\L10n;
use Friendica\Util\DateTimeFormat;
@ -22,6 +22,13 @@ require_once 'include/text.php';
*/
class DBStructure
{
/**
* Database structure definition loaded from config/dbstructure.php
*
* @var array
*/
private static $definition = [];
/*
* Converts all tables from MyISAM to InnoDB
*/
@ -822,43 +829,36 @@ class DBStructure
}
/**
* Loads the database structure definition from the /config/dbstructure.json 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"]
* }
* }
* Loads the database structure definition from the config/dbstructure.php file.
*
* @see config/dbstructure.php
* @return array
* @throws Exception
*/
public static function definition() {
$a = \Friendica\BaseObject::getApp();
public static function definition()
{
if (!self::$definition) {
$a = \Friendica\BaseObject::getApp();
$filename = $a->getBasePath() . '/config/dbstructure.json';
$filename = $a->getBasePath() . '/config/dbstructure.php';
if (!is_readable($filename)) {
throw new Exception('Missing database structure config file config/dbstructure.json');
if (!is_readable($filename)) {
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);
if (!$database) {
throw new Exception('Corrupted database structure config file config/dbstructure.json');
}
Addon::callHooks('dbstructure_definition', $database);
return $database;
return $definition;
}
}