Compare commits

...
10 Commits
Author SHA1 Message Date
ahwelp dbc5e5bed2 Updating composer.json 2023-02-07 13:27:59 +00:00
ahwelp edf7974a4f Changing prefixing substitution method 2023-01-24 13:49:42 +00:00
ahwelp 84a76017d7 Fixing identation 2023-01-24 13:49:06 +00:00
ahwelp 235c58d1a9 Update 'README.md' 2020-06-14 04:11:32 +00:00
ahwelp 8b45dd556a Update 'src/Schema/Wrapper.php' 2020-04-16 02:06:16 +00:00
ahwelp 5632f15107 Update 'src/Schema/Wrapper.php' 2020-04-15 23:17:15 +00:00
ahwelp 1e9aeb6266 Atualizar 'README.md' 2019-08-21 00:56:53 +00:00
ahwelp ad50a598af Update 'src/Schema/Db/Table.php' 2019-07-31 23:11:52 +00:00
ahwelp 8138187667 Update 'src/Schema/Wrapper.php' 2019-04-30 07:39:09 +00:00
Artur Welp d1da3f781a Rudimentary support for table prefixing #1 2019-04-25 05:39:19 -03:00
7 changed files with 132 additions and 64 deletions
Regular → Executable
View File
+39
View File
@@ -1,3 +1,5 @@
https://book.cakephp.org/3.0/en/phinx/migrations.html#working-with-columns
```php ```php
<?php <?php
@@ -20,3 +22,40 @@ $table->removeColumn('idb');
$table->save(); $table->save();
Wrapper::commit(); Wrapper::commit();
``` ```
```
//Data Types
biginteger
binary
boolean
char
date
datetime
decimal
float
integer
smallinteger
string
text
time
timestamp
uuid
//Mysql-------------------
enum
set
blob
bit
json
//PostgreSql-------------
interval
json
jsonb
uuid
cidr
inet
macaddr
```
Regular → Executable
+1 -1
View File
@@ -1,5 +1,5 @@
{ {
"name": "urfat/schema", "name": "inforsistemas/schema",
"description": "From Phinx, just the DDL", "description": "From Phinx, just the DDL",
"type": "library", "type": "library",
"authors": [ "authors": [
+17 -9
View File
@@ -52,7 +52,7 @@ class AdapterFactory
public static function instance() public static function instance()
{ {
if (!static::$instance) { if (!static::$instance) {
static::$instance = new static(); static::$instance = new static ();
} }
return static::$instance; return static::$instance;
} }
@@ -90,10 +90,12 @@ class AdapterFactory
public function registerAdapter($name, $class) public function registerAdapter($name, $class)
{ {
if (!is_subclass_of($class, 'Phinx\Db\Adapter\AdapterInterface')) { if (!is_subclass_of($class, 'Phinx\Db\Adapter\AdapterInterface')) {
throw new \RuntimeException(sprintf( throw new \RuntimeException(
sprintf(
'Adapter class "%s" must implement Phinx\\Db\\Adapter\\AdapterInterface', 'Adapter class "%s" must implement Phinx\\Db\\Adapter\\AdapterInterface',
$class $class
)); )
);
} }
$this->adapters[$name] = $class; $this->adapters[$name] = $class;
return $this; return $this;
@@ -109,10 +111,12 @@ class AdapterFactory
protected function getClass($name) protected function getClass($name)
{ {
if (empty($this->adapters[$name])) { if (empty($this->adapters[$name])) {
throw new \RuntimeException(sprintf( throw new \RuntimeException(
sprintf(
'Adapter "%s" has not been registered', 'Adapter "%s" has not been registered',
$name $name
)); )
);
} }
return $this->adapters[$name]; return $this->adapters[$name];
} }
@@ -141,10 +145,12 @@ class AdapterFactory
public function registerWrapper($name, $class) public function registerWrapper($name, $class)
{ {
if (!is_subclass_of($class, 'Phinx\Db\Adapter\WrapperInterface')) { if (!is_subclass_of($class, 'Phinx\Db\Adapter\WrapperInterface')) {
throw new \RuntimeException(sprintf( throw new \RuntimeException(
sprintf(
'Wrapper class "%s" must be implement Phinx\\Db\\Adapter\\WrapperInterface', 'Wrapper class "%s" must be implement Phinx\\Db\\Adapter\\WrapperInterface',
$class $class
)); )
);
} }
$this->wrappers[$name] = $class; $this->wrappers[$name] = $class;
return $this; return $this;
@@ -160,10 +166,12 @@ class AdapterFactory
protected function getWrapperClass($name) protected function getWrapperClass($name)
{ {
if (empty($this->wrappers[$name])) { if (empty($this->wrappers[$name])) {
throw new \RuntimeException(sprintf( throw new \RuntimeException(
sprintf(
'Wrapper "%s" has not been registered', 'Wrapper "%s" has not been registered',
$name $name
)); )
);
} }
return $this->wrappers[$name]; return $this->wrappers[$name];
} }
+19 -10
View File
@@ -1,4 +1,5 @@
<?php <?php
/** /**
* Phinx * Phinx
* *
@@ -26,6 +27,7 @@
* @package Phinx * @package Phinx
* @subpackage Phinx\Db * @subpackage Phinx\Db
*/ */
namespace Schema\Db; namespace Schema\Db;
use Schema\Db\Table\Column; use Schema\Db\Table\Column;
@@ -39,6 +41,7 @@ use Schema\Db\Adapter\AdapterInterface;
*/ */
class Table class Table
{ {
/** /**
* @var string * @var string
*/ */
@@ -87,7 +90,6 @@ class Table
$this->setOptions($options); $this->setOptions($options);
if (null !== $adapter) { if (null !== $adapter) {
//echo 'Adapter definido';
$this->setAdapter($adapter); $this->setAdapter($adapter);
} }
} }
@@ -349,11 +351,13 @@ class Table
// Delegate to Adapters to check column type // Delegate to Adapters to check column type
if (!$this->getAdapter()->isValidColumnType($column)) { if (!$this->getAdapter()->isValidColumnType($column)) {
throw new \InvalidArgumentException(sprintf( throw new \InvalidArgumentException(
sprintf(
'An invalid column type "%s" was specified for column "%s".', 'An invalid column type "%s" was specified for column "%s".',
$column->getType(), $column->getType(),
$column->getName() $column->getName()
)); )
);
} }
$this->columns[] = $column; $this->columns[] = $column;
@@ -568,11 +572,12 @@ class Table
$this->addColumn($createdAtColumnName, 'timestamp', array( $this->addColumn($createdAtColumnName, 'timestamp', array(
'default' => 'CURRENT_TIMESTAMP', 'default' => 'CURRENT_TIMESTAMP',
'update' => '' 'update' => ''
)) )
)
->addColumn($updatedAtColumnName, 'timestamp', array( ->addColumn($updatedAtColumnName, 'timestamp', array(
'null' => true, 'default' => 'CURRENT_TIMESTAMP',
'default' => null )
)); );
return $this; return $this;
} }
@@ -584,16 +589,17 @@ class Table
* *
* @return Table * @return Table
*/ */
public function addSoftDelete($deletedAtColumnName = 'deleted_at'){ public function addSoftDelete($deletedAtColumnName = 'deleted_at')
{
$deletedAtColumnName = is_null($deletedAtColumnName) ? 'deleted_at' : $deletedAtColumnName; $deletedAtColumnName = is_null($deletedAtColumnName) ? 'deleted_at' : $deletedAtColumnName;
$this->addColumn($deletedAtColumnName, 'timestamp', array( $this->addColumn($deletedAtColumnName, 'timestamp', array(
'default' => null, 'default' => null,
'null' => true, 'null' => true,
)); )
);
return $this; return $this;
} }
/** /**
* Insert data into the table. * Insert data into the table.
* *
@@ -626,10 +632,12 @@ class Table
*/ */
public function create() public function create()
{ {
if (!$this->getAdapter()->hasTable($this->name)) {
$this->getAdapter()->createTable($this); $this->getAdapter()->createTable($this);
$this->saveData(); $this->saveData();
$this->reset(); // reset pending changes $this->reset(); // reset pending changes
} }
}
/** /**
* Updates a table from the object instance. * Updates a table from the object instance.
@@ -689,4 +697,5 @@ class Table
$this->reset(); // reset pending changes $this->reset(); // reset pending changes
} }
} }
+22 -10
View File
@@ -9,7 +9,8 @@ use Schema\Db\Adapter\MysqlAdapter;
use Schema\Db\Adapter\SQLiteAdapter; use Schema\Db\Adapter\SQLiteAdapter;
use Schema\Db\Adapter\SqlServerAdapter; use Schema\Db\Adapter\SqlServerAdapter;
class Wrapper{ class Wrapper
{
private static $_instance; private static $_instance;
@@ -19,14 +20,16 @@ class Wrapper{
function __construct(){ } function __construct(){ }
//SINGLETON============================================== //SINGLETON==============================================
private static function newObj(){ private static function newObj()
{
if (!isset(self::$_instance)) { if (!isset(self::$_instance)) {
self::$_instance = new Wrapper(); self::$_instance = new Wrapper();
} }
return self::$_instance; return self::$_instance;
} }
public static function getInstance(){ public static function getInstance()
{
if (!isset(self::$_instance)) { if (!isset(self::$_instance)) {
return self::newObj(); return self::newObj();
} }
@@ -34,7 +37,8 @@ class Wrapper{
} }
//======================================================= //=======================================================
public static function set_driver(\PDO $driver){ public static function set_driver(\PDO $driver)
{
$instance = self::getInstance(); $instance = self::getInstance();
$instance->_driver = $driver; $instance->_driver = $driver;
@@ -55,28 +59,36 @@ class Wrapper{
} }
} }
public static function get_table($name){ public static function get_table($name)
{
$instance = self::getInstance(); $instance = self::getInstance();
echo $instance->_adapter->getConnection()->prefix;
if( $instance->_adapter->getConnection()->prefix ){ if( $instance->_adapter->getConnection()->prefix ){
$name = $instance->_adapter->getConnection()->prefix . $name; $name = $instance->_adapter->getConnection()->prefix . $name;
} }
return new Table($name, Array(), $instance->_adapter); return new Table($name, Array(), $instance->_adapter);
} }
public static function begin(){ public static function begin()
{
$instance = self::getInstance(); $instance = self::getInstance();
$instance->_adapter->beginTransaction(); $instance->_adapter->beginTransaction();
} }
public static function commit(){ public static function commit()
{
$instance = self::getInstance(); $instance = self::getInstance();
$instance->_adapter->commitTransaction(); $instance->_adapter->commitTransaction();
} }
public static function exec($sql){ public static function exec($sql)
{
$instance = self::getInstance(); $instance = self::getInstance();
$sql = preg_replace('/{(.*)}/', "$con->prefix$1", $sql); $prefix = $instance->_adapter->getConnection()->prefix;
$sql = preg_replace_callback('/{.*?}/', function($match) use ($prefix){
return str_replace('}', '', str_replace('{', $prefix, $match[0]));
} , $sql);
$instance->_driver->exec($sql); $instance->_driver->exec($sql);
} }
Regular → Executable
View File