<?php 
namespace App\Repositories\Interfaces;


use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Collection;

/**
* Interface EloquentRepositoryInterface
* @package App\Repositories
*/
interface BaseRepositoryInterface{

    /**
    * @return Collection
    */
    public function all(): Collection;

    /**
    * @param array $attributes
    * @return Model
    */
    public function create(array $attributes): Model;

    /**
    * @param $id
    * @return Model
    */
    public function find($id): ?Model;

    /**
    * @param array $attributes
    * @return Model
    */
    public function update(array $attributes, $id): Model;

    /**
    * @param $id
    *    
    */
    public function delete($id);

    /**
    * @param $column $value
    * @return Model
    */
    public function getByColumn($column, $value): ?Model;

}
