<?php
/**
* *
* * please don't remove this comment block
* *
* * @author phptricks Team - Mohammad Anzawi
* * @author_uri https://phptricks.org
* * @uri https://github.com/anzawi/php-database-class
* * @version 5.0.0
* * @licence MIT -> https://opensource.org/licenses/MIT
* * @package PHPtricks\Orm
*
*/
namespace PHPtricks\Orm\Command;
class CommandHelpers
{
/**
* @var
*/
private $_dir;
/**
* the file name
*
* @var string
*/
private $_fileName = 'migrated.json';
/**
* CommandHelpers constructor.
*/
public function __construct()
{
$this->_dir = config('directories.migrated-file').$this->_fileName;
}
/**
* we want to mark migrated classes ,In order not to be migrate again
* this helper function write in migrated.json file.
*
* @param $migrationClassName
*/
public function setMigrationAsMigrated($migrationClassName): void
{
if ( ! file_exists($this->_dir)) {
$this->createFile();
}
$migrated = $this->getFileContent();
$migrated[$migrationClassName] = true;
$migrated = json_encode($migrated);
file_put_contents($this->_dir, $migrated);
}
/**
* Generate migrated.json file
*/
private function createFile(): void
{
@mkdir(dirname($this->_dir), 0755, true);
file_put_contents($this->_dir, '{}');
}
/**
* get migrated.json content
*
* @return array
*/
private function getFileContent(): array
{
@$migrated = file_get_contents($this->_dir);
return json_decode($migrated, true);
}
/**
* check if class migrated or not
*
* @param $migrationClassName
*
* @return bool
*/
public function isMigrated($migrationClassName): bool
{
if ( ! file_exists($this->_dir)) {
return false;
}
$migrated = $this->getFileContent();
return isset($migrated[$migrationClassName]);
}
/**
* delete migrated.json file
* @param bool $delete
*/
public function clear(bool $delete = false): void
{
$path = config('directories.migrated-file');
if ($delete) {
if (is_dir($path)) {
unlink($path);
}
}
if ( ! $delete) {
if (file_exists($this->_dir)) {
file_put_contents($this->_dir, '{}');
}
}
}
}
|