Skip to content

more robust creation/modification API

Jiří Pudil requested to merge default-value-prototype into master

closes #8 (closed), #21 (closed), !49

Zkusil jsem nahodit prototyp řešení pro #8 (closed), #21 (closed), !49 (a do budoucna asi i #14).

Z Modifications a Table::save() se stává interní API, veřejné metody new() a edit() rovnou ukládají změny a vracejí vytvořený/upravený Row. Díky vlastnostem PHP 8.0 a 8.1 je možné v obou metodách přijímat všechny sloupce a pohodlně rozlišit ty, u kterých uživatel nastavuje nějakou hodnotu. S pojmenovanými parametry je to pak nádhera:

$updatedRow = $table->edit($primaryKeyOrRow, columnA: 'newValue', columnE: 'newValue');

todo:

  • Přejmenovat new() 👉 create()? Připadá mi to lepší, protože sloveso, což se projevuje hned v následujícím bodě:
  • Úpravy výše vedly k odstranění metody newEmpty(), pro kterou ovšem máme use case zejména při vytváření/editaci záznamu, který může, ale nemusí existovat. Pro tento use case bych vytvořil metodu editOrCreate(), jejímž příjemným bonusem je, že bude moci být atomická.

cc @jkuchar1 @dkurowski

Edited by Jiří Pudil

Merge request reports