<?php

namespace App\Repositories;

use App\Models\User;
use Illuminate\Database\Eloquent\Collection;

interface UsersRepositoryInterface
{
    /**
     * Get all Users.
     * @return User[]|Collection
     */
    public function getAll();

    /**
     * Paginate Users, chunkSize is the size of one page.
     * @param $chunkSize
     * @return mixed
     */
    public function paginate($chunkSize);

    /**
     * Create user with given data.
     * @param $data
     * @return mixed
     */
    public function create($data);

    /**
     * Delete user with given id.
     * @param $id
     * @return mixed
     */
    public function delete($id);

    /**
     * Get user by id.
     * @param $userId
     * @return mixed
     */
    public function getById($userId);

    /**
     * Get the users where $field is equal to $actual.
     * @param $field
     * @param $actual
     * @return mixed
     */
    public function getWhereEquals($field, $actual);
}