public function testGets() { $raw = ['table' => 'someTable', 'patch' => 'somePatch', 'query' => 'someQuery', 'rollback' => 'someRollback']; $patch = new Patch($raw); $this->assertEquals(null, $patch->getId()); $this->assertEquals(1234, $patch->getId(1234)); $this->assertEquals($raw['table'], $patch->getTable()); $this->assertEquals($raw['patch'], $patch->getPatch()); $this->assertEquals($raw['query'], $patch->getQuery()); $this->assertEquals($raw['rollback'], $patch->getRollback()); $this->assertEquals($raw, $patch->dump()); }
public function updatePatch(Patch $originalPatch, Patch $newPatch) { $fields = array_diff_assoc($newPatch->dump(), $originalPatch->dump()); $fields['id'] = $originalPatch->getId(); $table = $originalPatch->getTable(); $tablePatch = $originalPatch->getPatch(); list($patches, $filepath) = $this->loadPatches($table); $currentPatch = $patches[$tablePatch]; $mergedPatches = array_merge($currentPatch, $fields); $patches[$tablePatch] = $mergedPatches; $encoded = json_encode($patches, JSON_PRETTY_PRINT); $this->filesystem->delete($filepath); $this->filesystem->write($filepath, $encoded); }
public function matchPatch(Patch $patch) { foreach ($this->patches as $key => $localPatch) { //This should be the case if both patches have the same history. if ($patch->getPatch() === $localPatch->getPatch() && $patch->getQuery() == $localPatch->getQuery()) { return $key; } //This should be the case if patches have a different history, or essentially do the same thing. if ($patch->getQuery() === $localPatch->getQuery()) { return $key; } } return false; }