Find/get methods conventions
Chtěl bych vykopnout diskuzi ke konvencím v pojmenování metod pro získávání dat ve vygenerované implementaci Table
. A taky doplnit některé, které tam občas postrádám.
V současnosti máme tyhle:
find($primaryKey): Row|null
get($primaryKey): Row
getAll($orderBy, $paginator): Row[]
findBy($conditions, $orderBy, $paginator): Row[]
getBy($conditions): Row
Narážím na to, že občas potřebuju vybrat jeden řádek splňující unikátní podmínku (use case pro getBy
), který ovšem nemusí existovat. Momentálně to obcházím tak, že zavolám findBy()
, zkontroluju si počet a vyberu z pole první prvek. Ale bylo by fajn na to mít metodu.
Dvojice find()
a get()
už tak trochu nastavuje očekávání, že find*
vrací řádek nebo null, zatímco get*
vrací řádek nebo výjimku. Takže když mám getBy
, obdobná nullable metoda by se měla jmenovat... findBy
?
getOneBy($conditions): Row
findOneBy($conditions): Row|null
Metody by tak jako doposud vyhazovaly výjimku, pokud najdou více než jeden odpovídající řádek. To taky není vždycky žádoucí, takže bych si k nim dovolil doplnit ještě dvojici metod, kterým by nevadilo, když najdou víc odpovídajících řádků: vrátily by prostě první z nich podle nastaveného řazení:
getFirstBy($conditions, $orderBy): Row
findFirstBy($conditions, $orderBy): Row|null
Výsledná kompletní sada by tedy byla tato:
get($primaryKey): Row
find($primaryKey): Row|null
getOneBy($conditions): Row
findOneBy($conditions): Row|null
getFirstBy($conditions, $orderBy): Row
findFirstBy($conditions, $orderBy): Row|null
getAll($orderBy, $paginator): Row[]
findBy($conditions, $orderBy, $paginator): Row[]
Thoughts @jkuchar1 @dkurowski ?