<?php
/**
 * Rozhraní modelu
 *
 * @package    MyWebBlog
 * @author     Marian Böhmer
 */
interface MyWeb_Model_Interface   
{
    /**
     * Načítání úložiště údajů
     *
     * @return object
     */
    public function getStorage();

    /**
     * Vložení údajů
     *
     * @param array $data údaje určené na vložení
     * @throws MyWeb_Model_Exception 
     * @return string identifikátor nového řádku
     */
    public function insert(array $data);
    
    /**
     * Změna údajů
     *
     * @param array $data údaje určené na změnu
     * @param string $id identifikátor řádku
     * @throws MyWeb_Model_Exception 
     * @return boolean
     */
    public function update(array $data, $id);
    
    /**
     * Smazání údajů
     *
     * @param string $id identifikátor řádku
     * @throws MyWeb_Model_Exception 
     * @return boolean
     */
    public function delete($id);
    
    /**
     * Načítání jednoho záznamu
     *
     * @param string $id identifikátor řádku
     * @return array
     */
    public function fetchEntry($id);
    
    /**
     * Načítání všech záznamů
     *
     * @return array
     */
    public function fetchEntries($data);
    
    /**
     * Vrati select pro fetch entries
     * 
     * @param unknown_type $data
     */
    public function getFetchEntrySelect($data);
    
    /**
     * funkce overi zadli hodnota ve sloupci jiz existuje
     * @param $column
     * @param $value
     */
    public function isExists($column, $value,$id);
    
    /**
     * funkce vrati id stavu pro danou tabulku
     * @param $column
     * @param $value
     */
    public function getIdState($stateName, $tableName);
    
    /**
     * funkce vrati id role
     * @param $column
     * @param $value
     */
    public function getIdRole($roleName);
    
    /**
     * matoda zpracuje data odeslana formularem a vytvori z nich where pro search
     * Enter description here ...
     * @param unknown_type $data
     * @param unknown_type $mainTable
     */
    public function createWhere($select,$data,$mainTable);
}
