Implementing idpolices resolve #5

This commit is contained in:
Artur Welp
2019-04-25 04:07:06 -03:00
parent 0f0eeb057f
commit 7b48b20443
3 changed files with 64 additions and 13 deletions
Executable → Regular
+1
View File
@@ -1,2 +1,3 @@
/netbeans
/.idea
/nbproject
+42 -7
View File
@@ -14,12 +14,18 @@ abstract class Entity {
'connectionName',
'timestamps',
'softdelete',
'tableName'
'tableName',
'_idPolice'
);
const _properties = Array();
/*
* [type] = nextval| manual | empty is the default
* [max] = maximum value allowed
* [min] = minumul value allowed
* [step] = increment by n each id
*/
const _idPolice = Array();
function __construct() {
if (isset($this->timestamps) && $this->timestamps) {
@@ -35,11 +41,11 @@ abstract class Entity {
$this->$property = $value;
}
public function __toString(){
if(isset($this->name)){
public function __toString() {
if (isset($this->name)) {
return $this->name;
}
if(isset($this->nome)){
if (isset($this->nome)) {
return $this->nome;
}
return static::class;
@@ -64,6 +70,12 @@ abstract class Entity {
}
private function update() {
//First check if the record exist. If not, we might have a idPolice
if (!DBInstance::queryOne("SELECT id FROM {" . static::tableName . "} WHERE id = ?", Array($this->id))) {
$this->create();
return;
}
$updatekeys = static::_ignore;
$updatekeys[] = 'id';
$columns = array_diff(array_keys(get_object_vars($this)), $updatekeys);
@@ -85,6 +97,26 @@ abstract class Entity {
}
private function create() {
if (!empty(static::_idPolice) && static::_idPolice['type'] != 'manual') {
$maxVal = DBInstance::queryOne("SELECT max(id) as id FROM {" . static::tableName . "}");
$maxVal = ($maxVal) ? $maxVal : 0;
if (isset(static::_idPolice['min']) && static::_idPolice['min'] > $maxVal->id) {
$this->id = static::_idPolice['min'];
} else {
if (isset(static::_idPolice['step'])) {
$this->id = $maxVal->id + static::_idPolice['step'];
} else {
$this->id = $maxVal->id + 1;
}
}
if (isset(static::_idPolice['max']) && $maxVal->id > static::_idPolice['max']) {
return false;
}
}
var_dump($this);
$columns = array_diff(array_keys(get_object_vars($this)), static::_ignore);
$obj = (array) $this;
@@ -103,8 +135,11 @@ abstract class Entity {
$second_argument = rtrim($second_argument, ', ');
$sql = "INSERT INTO {" . static::tableName . "} ($first_argument) VALUES ($second_argument)";
DBInstance::execute($sql, $insert_data, static::connectionName);
$this->id = DBInstance::lastInsert();
if ( empty(static::_idPolice) ){
$this->id = DBInstance::lastInsert();
}
}
public function delete() {
+16 -1
View File
@@ -28,6 +28,16 @@ class Estado extends Entity {
}
class Estado_ extends Entity {
const tableName = 'estado_novo';
const _idPolice = Array(
'type' => 'nextval',
'min' => 500/*,
'step' => 10*/);
}
class Municipio extends Entity {
const tableName = 'basico_geografico_municipios';
@@ -110,4 +120,9 @@ Connections::addConnection($conn);
//$a->load(1);
//$a->estado();
var_dump( DBInstance::queryOne('SELECT * FROM {estado}'));
//var_dump( DBInstance::queryOne('SELECT max(id) as id FROM {estado}'));
$a = new Estado_();
$a->nome = 'Estado 1';
$a->save();
var_dump($a);