X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=scripts%2Fdumpschema.php;h=05638cda4cb22aed28c57fe79916a8c1b1814a49;hb=d6b28c64830f632bb2f4b6f3c9369b9e56ad217a;hp=b8d034d2a67412fd438b9f8d4e4416d430eff2c4;hpb=4c3aebd39644d913df4abdb69b848413ca65c298;p=quix0rs-gnu-social.git diff --git a/scripts/dumpschema.php b/scripts/dumpschema.php old mode 100644 new mode 100755 index b8d034d2a6..05638cda4c --- a/scripts/dumpschema.php +++ b/scripts/dumpschema.php @@ -26,14 +26,15 @@ Attempt to pull a schema definition for a given table. --all run over all defined core tables --diff show differences between the expected and live table defs --raw skip compatibility filtering for diffs - --update dump SQL that would be run to update or create this table + --create dump SQL that would be run to update or create this table --build dump SQL that would be run to create this table fresh + --checksum just output checksums from the source schema defs END_OF_CHECKSCHEMA_HELP; -$longoptions = array('diff', 'all', 'build', 'update', 'raw'); -require_once INSTALLDIR.'/scripts/commandline.inc'; +$longoptions = array('diff', 'all', 'create', 'update', 'raw', 'checksum'); +require_once INSTALLDIR.'/scripts/commandline.inc.php'; function indentOptions($indent) { @@ -162,7 +163,7 @@ function dumpDiff($tableName, $filter) } if ($filter) { - $old = $schema->filterDef($old); + //$old = $schema->filterDef($old); $def = $schema->filterDef($def); } @@ -176,7 +177,7 @@ function dumpDiff($tableName, $filter) if ($section == 'fields') { // this shouldn't be needed maybe... wait what? } - $diff = $schema->diffArrays($old, $def, $section, $compare); + $diff = $schema->diffArrays($old, $def, $section); $chunks = array('del', 'mod', 'add'); foreach ($chunks as $chunk) { if ($diff[$chunk]) { @@ -204,9 +205,31 @@ function tweakPrimaryKey($def) $def['primary keys'] = array('primary key' => $def['primary key']); unset($def['primary key']); } + if (isset($def['description'])) { + $def['descriptions'] = array('description' => $def['description']); + unset($def['description']); + } return $def; } +function dumpChecksum($tableName) +{ + $schema = Schema::get(); + $def = getCoreSchema($tableName); + + $updater = new SchemaUpdater($schema); + $checksum = $updater->checksum($def); + $old = @$updater->checksums[$tableName]; + + if ($old == $checksum) { + echo "OK $checksum $tableName\n"; + } else if (!$old) { + echo "NEW $checksum $tableName\n"; + } else { + echo "MOD $checksum $tableName (was $old)\n"; + } +} + if (have_option('all')) { $args = getCoreTables(); } @@ -215,14 +238,16 @@ if (count($args)) { foreach ($args as $tableName) { if (have_option('diff')) { dumpDiff($tableName, !have_option('raw')); - } else if (have_option('build')) { + } else if (have_option('create')) { dumpBuildTable($tableName); } else if (have_option('update')) { dumpEnsureTable($tableName); + } else if (have_option('checksum')) { + dumpChecksum($tableName); } else { dumpTable($tableName, true); } } } else { show_help($helptext); -} \ No newline at end of file +}