* @author Dennis Eichhorn * @copyright 2013 Dennis Eichhorn * @license OMS License 1.0 * @version 1.0.0 * @link http://orange-management.com */ namespace phpOMS\DataStorage; use phpOMS\DataStorage\Database\Query\Builder; /** * Datamapper interface. * * DB, Cache, Session * * @category Framework * @package phpOMS\DataStorage\Database * @author OMS Development Team * @author Dennis Eichhorn * @license OMS License 1.0 * @link http://orange-management.com * @since 1.0.0 */ interface DataMapperInterface { /** * Create data. * * @param mixed $obj Object reference (gets filled with insert id) * * @return mixed * * @since 1.0.0 * @author Dennis Eichhorn */ public function create($obj); /** * Update data. * * @param mixed $obj Object reference (gets filled with insert id) * * @return void * * @since 1.0.0 * @author Dennis Eichhorn */ public function update($obj); /** * Save data. * * @return void * * @since 1.0.0 * @author Dennis Eichhorn */ public function save(); /** * Delete data. * * @return void * * @since 1.0.0 * @author Dennis Eichhorn */ public function delete(); /** * Find data. * * @param array $columns Columns * * @return Builder * * @since 1.0.0 * @author Dennis Eichhorn */ public function find(...$columns) : Builder; /** * List data. * * @param Builder $query Query * * @return mixed * * @since 1.0.0 * @author Dennis Eichhorn */ public function listResults(Builder $query); /** * Populate data. * * @param array $result Result set * * @return mixed * * @since 1.0.0 * @author Dennis Eichhorn */ public function populate(array $result); /** * Populate data. * * @param array $result Result set * * @return array * * @since 1.0.0 * @author Dennis Eichhorn */ public function populateIterable(array $result) : array; /** * Load. * * @param array $objects Objects to load * * @return $this * * @since 1.0.0 * @author Dennis Eichhorn */ public function with(...$objects); /** * Get object. * * @param mixed $primaryKey Key * * @return self * * @since 1.0.0 * @author Dennis Eichhorn */ public function get($primaryKey); }