<?php
/**
 * Copyright (c) 2017. Este código foi feito por @marciioluucas, sob licença MIT
 */

namespace bin;

/**
 * Interface IPhiberPersistence
 * @package bin
 */
interface IPhiberPersistence
{


    /**
     * Faz a criação do objeto no banco
     * @param $obj
     * @return mixed
     */
    public function create($obj);

    /**
     * Faz a alteração do objeto no banco
     * @param $obj
     * @param $infos
     * @return mixed
     * @internal param $id
     */
    public function update($obj, $infos);

    /**
     * Faz a exclusão do objeto no banco
     * @param $obj
     * @param $infos
     * @return mixed
     */
    public function delete($obj, $infos);

    /**
     * Faz a contagem de quantos objetos está no banco
     * @param $obj
     * @param $infos
     * @return mixed
     * @internal param array $condicoes
     * @internal param array $conjuncoes
     */
    public function rowCount($obj, $infos);

    /**
     * Faz a seleção dos objetos no banco
     * @param $obj
     * @param $infos
     * @return mixed
     */
    public function select($obj, $infos);

    /**
     * Usuário pode criar uma query a partir dessa função
     * @param $query
     * @return mixed
     */
    public function createQuery($query);
}
