Skip to content

Commit

Permalink
improve Query param types
Browse files Browse the repository at this point in the history
  • Loading branch information
mvorisek committed Nov 10, 2021
1 parent dd73e88 commit b367fe8
Show file tree
Hide file tree
Showing 9 changed files with 127 additions and 284 deletions.
6 changes: 2 additions & 4 deletions src/Persistence/Sql.php
Original file line number Diff line number Diff line change
Expand Up @@ -567,7 +567,7 @@ public function insert(Model $model, array $data): string
unset($data[$model->id_field]);
}

$insert->set($this->typecastSaveRow($model, $data));
$insert->setMulti($this->typecastSaveRow($model, $data));

$st = null;
try {
Expand Down Expand Up @@ -637,10 +637,8 @@ public function update(Model $model, $id, array $data): void
$update = $this->initQuery($model);
$update->mode('update');

$data = $this->typecastSaveRow($model, $data);

// only apply fields that has been modified
$update->set($data);
$update->setMulti($this->typecastSaveRow($model, $data));
$update->where($model->getField($model->id_field), $id);

$st = null;
Expand Down
24 changes: 4 additions & 20 deletions src/Persistence/Sql/Join.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
/**
* @property Persistence\Sql $persistence
*/
class Join extends Model\Join implements \Atk4\Data\Persistence\Sql\Expressionable
class Join extends Model\Join
{
/**
* By default we create ON expression ourselves, but if you want to specify
Expand All @@ -28,22 +28,6 @@ public function getDesiredName(): string
return '_' . ($this->foreign_alias ?: $this->foreign_table);
}

public function getDsqlExpression(Expression $expr): Expression
{
/*
// If our Model has expr() method (inherited from Persistence\Sql) then use it
if ($this->getOwner()->hasMethod('expr')) {
return $this->getOwner()->expr('{}.{}', [$this->foreign_alias, $this->foreign_field]);
}
// Otherwise call it from expression itself
return $expr->expr('{}.{}', [$this->foreign_alias, $this->foreign_field]);
*/

// Romans: Join\Sql shouldn't even be called if expr is undefined. I think we should leave it here to produce error.
return $this->getOwner()->expr('{}.{}', [$this->foreign_alias, $this->foreign_field]);
}

/**
* This method is to figure out stuff.
*/
Expand Down Expand Up @@ -160,7 +144,7 @@ public function beforeInsert(Model $entity, array &$data): void

$query = $this->dsql();
$query->mode('insert');
$query->set($model->persistence->typecastSaveRow($model, $this->getAndUnsetSaveBuffer($entity)));
$query->setMulti($model->persistence->typecastSaveRow($model, $this->getAndUnsetSaveBuffer($entity)));
// $query->set($this->foreign_field, null);
$query->insert();
$this->setId($entity, $model->persistence->lastInsertId(new Model($model->persistence, ['table' => $this->foreign_table])));
Expand All @@ -181,7 +165,7 @@ public function afterInsert(Model $entity): void
$model = $this->getOwner();

$query = $this->dsql();
$query->set($model->persistence->typecastSaveRow($model, $this->getAndUnsetSaveBuffer($entity)));
$query->setMulti($model->persistence->typecastSaveRow($model, $this->getAndUnsetSaveBuffer($entity)));
$query->set($this->foreign_field, $this->hasJoin() ? $this->getJoin()->getId($entity) : $entity->getId());
$query->insert();
$this->setId($entity, $model->persistence->lastInsertId($model));
Expand All @@ -200,7 +184,7 @@ public function beforeUpdate(Model $entity, array &$data): void
$model = $this->getOwner();

$query = $this->dsql();
$query->set($model->persistence->typecastSaveRow($model, $this->getAndUnsetSaveBuffer($entity)));
$query->setMulti($model->persistence->typecastSaveRow($model, $this->getAndUnsetSaveBuffer($entity)));

$id = $this->reverse ? $entity->getId() : $entity->get($this->master_field);

Expand Down
Loading

0 comments on commit b367fe8

Please sign in to comment.