X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=scripts%2Fdumpschema.php;h=9c5e3cf8b38c2fd9808803ba9c2c8437fcddfb89;hb=0dbdcf2936a00282114f1368ead2f5edebc6ae61;hp=613364487a9835a7934394c07ec94abac15d1f39;hpb=a053871ddc6c2e9d395efa928d0546efffd52856;p=quix0rs-gnu-social.git diff --git a/scripts/dumpschema.php b/scripts/dumpschema.php index 613364487a..9c5e3cf8b3 100644 --- a/scripts/dumpschema.php +++ b/scripts/dumpschema.php @@ -28,11 +28,12 @@ Attempt to pull a schema definition for a given table. --raw skip compatibility filtering for diffs --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', 'create', 'update', 'raw'); +$longoptions = array('diff', 'all', 'create', 'update', 'raw', 'checksum'); require_once INSTALLDIR.'/scripts/commandline.inc'; function indentOptions($indent) @@ -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(); } @@ -219,6 +242,8 @@ if (count($args)) { dumpBuildTable($tableName); } else if (have_option('update')) { dumpEnsureTable($tableName); + } else if (have_option('checksum')) { + dumpChecksum($tableName); } else { dumpTable($tableName, true); }