2017 © Pedro Peláez
 

library warehouse

Artesãos Warehouse V2 - A simple and direct approach to repositories!

image

artesaos/warehouse

Artesãos Warehouse V2 - A simple and direct approach to repositories!

  • Wednesday, February 1, 2017
  • by vinicius73
  • Repository
  • 12 Watchers
  • 71 Stars
  • 4,138 Installations
  • PHP
  • 5 Dependents
  • 0 Suggesters
  • 16 Forks
  • 3 Open issues
  • 13 Versions
  • 7 % Grown

The README.md

Artesãos Warehouse V2 - A simple and direct approach to repositories!

Total Downloads Latest Stable Version Latest Unstable Version License, (*1)

O que é Warehouse V2?

Warehouse v2 é um pacote um pouco atípico, já que você pode usá-lo sem precisar baixá-lo. Ele se classificaria melhor como uma demonstração pronta para o uso., (*2)

Muito se fala sobre o padrão de projeto Repository, basicamente ele é uma camada a mais entre sua aplicação e o banco de dados, no caso do Laravel sendo responsável direto por agir sobre seus models e queries., (*3)

O que é Repository Pattern ?

Basicamente é a camada onde você executa seus comandos no banco de dados., (*4)

Há muita filosofia por trás desse modelo. No seu modo mais puro os métodos de um repositório não retornam objetos complexos ou que possuam alguma dependência, retornam arrays ou objetos simples (StdClass). Isso por que um de seus objetivos é permitir a troca de um repositório que trabalha com MySQL por exemplo, por um que trabalhe com MongoDB., (*5)

O mundo real hoje

OK! Tudo muito lindo, no papel. Não são todos os projetos que precisam de uma abordagem assim, se você usa o Laravel, abrir mão do Eloquent não é algo que todos cogitem fazer. E trocar de banco de dados no Laravel não é uma tarefa tão complexa, graças ao Eloquent., (*6)

Devido a facilidade e praticidade que o Eloquent e Collections trazem, este pacote não retorna objetos planos e sim objetos Eloquent e Collections., (*7)

Muitos não sabem e outros se esquecem que outro objetivo de um repositório é organizar e centralizar suas consultas e até mesmo regras de negócio. Essa é a principal abordagem que o Warehouse V2 pretende suprir., (*8)


Instalando

Execute composer require artesaos/warehouse 2.x-dev, (*9)

No arquivo config/app.php adcione o service provider Artesaos\Warehouse\WarehouseServiceProvider, (*10)

'providers' => [
    // ...
    Artesaos\Warehouse\WarehouseServiceProvider::class,
    // ...
],

Este processo não é obrigatório. Você só precisa fazer isso caso esteja usando o Fractal., (*11)

Como usar

Warehouse v2 é um pacote base, ele implementa o básico sem nenhuma regra de negócio definida. Há duas classes base: BaseRepository e AbstractCrudRepository, (*12)

BaseRepository

Esta classe implementa o contrato BaseRepository, que possui três assinaturas:, (*13)

 /**
  * Returns all records.
  * If $take is false then brings all records
  * If $paginate is true returns Paginator instance.
  *
  * @param int  $take
  * @param bool $paginate
  *
  * @return EloquentCollection|Paginator
  */
  public function getAll($take = 15, $paginate = true);
/**
 * Retrieves a record by his id
 * If $fail is true fires ModelNotFoundException. When no record is found.
 *
 * @param int     $id
 * @param bool $fail
 *
 * @return Model
 */
 public function findByID($id, $fail = true);
/**
 * @param string $column
 * @param string|null $key
 *
 * @return \Illuminate\Support\Collection|array
 */
public function lists($column, $key = null);

Já na implementação, BaseRepository disponibiliza dois métodos protegidos newQuery() e doQuery($query = null, $take = 15, $paginate = true). Eles são amplamente usados nos repositórios., (*14)

newQuery

newQuery retorna um objeto QueryBuilder do eloquent, à partir da propriedade modelClass., (*15)

protected function newQuery()
{
    return app()->make($this->modelClass)->newQuery();
}

Essa propriedade precisa ser definida em todos as classes repositório, (*16)

doQuery

doQuery processa a query e retorna uma collection ou um objeto paginate, dependendo dos parametros passados, (*17)

protected function doQuery($query = null, $take = 15, $paginate = true)
{
    if (is_null($query)) {
        $query = $this->newQuery();
    }

    if (true == $paginate):
        return $query->paginate($take);
    endif;

    if ($take > 0 || false != $take) {
        $query->take($take);
    }

    return $query->get();
}

The Versions

01/02 2017

dev-master

9999999-dev

Artesãos Warehouse V2 - A simple and direct approach to repositories!

  Sources   Download

MIT

The Requires

 

The Development Requires

by Diego Hernandes
by Vinicius Reis

laravel repository eloquent model laravel5 warehouse

16/09 2016

dev-develop

dev-develop

Artesãos Warehouse V2 - A simple and direct approach to repositories!

  Sources   Download

MIT

The Requires

 

The Development Requires

by Diego Hernandes
by Vinicius Reis

laravel repository eloquent model laravel5 warehouse

16/09 2016

3.0.0

3.0.0.0

Artesãos Warehouse V2 - A simple and direct approach to repositories!

  Sources   Download

MIT

The Requires

 

The Development Requires

by Diego Hernandes
by Vinicius Reis

laravel repository eloquent model laravel5 warehouse

06/09 2016

3.0-alpha1

3.0.0.0-alpha1

Artesãos Warehouse V2 - A simple and direct approach to repositories!

  Sources   Download

MIT

The Requires

 

The Development Requires

by Diego Hernandes
by Vinicius Reis

laravel repository eloquent model laravel5 warehouse

12/08 2016

v2.x-dev

2.9999999.9999999.9999999-dev

Artesãos Warehouse V2 - A simple and direct approach to repositories!

  Sources   Download

MIT

The Requires

 

The Development Requires

by Vinicius Reis

laravel repository eloquent model laravel5 warehouse

12/08 2016

2.0.0

2.0.0.0

Artesãos Warehouse V2 - A simple and direct approach to repositories!

  Sources   Download

MIT

The Requires

 

The Development Requires

by Vinicius Reis

laravel repository eloquent model laravel5 warehouse

30/01 2016

2.0-beta5

2.0.0.0-beta5

Artesãos Warehouse V2 - A simple and direct approach to repositories!

  Sources   Download

MIT

The Requires

 

The Development Requires

by Vinicius Reis

laravel repository eloquent model laravel5 warehouse

16/01 2016

2.0-beta4

2.0.0.0-beta4

Artesãos Warehouse V2 - A simple and direct approach to repositories!

  Sources   Download

MIT

The Requires

 

The Development Requires

by Vinicius Reis

laravel repository eloquent model laravel5 warehouse

31/12 2015

2.0-beta3

2.0.0.0-beta3

Artesãos Warehouse V2 - A simple and direct approach to repositories!

  Sources   Download

MIT

The Requires

 

The Development Requires

by Vinicius Reis

laravel repository eloquent model laravel5 warehouse

29/12 2015

2.0-beta2

2.0.0.0-beta2

Artesãos Warehouse V2 - A simple and direct approach to repositories!

  Sources   Download

MIT

The Requires

 

The Development Requires

by Vinicius Reis

laravel repository eloquent model laravel5 warehouse

29/12 2015

2.0-beta1

2.0.0.0-beta1

Artesãos Warehouse V2 - A simple and direct approach to repositories!

  Sources   Download

MIT

The Requires

 

The Development Requires

by Vinicius Reis

laravel repository eloquent model laravel5 warehouse

21/03 2015

1.0.1

1.0.1.0

Laravel 5 - Warehouse to abstract the database layer with Repositories pattern

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel repository eloquent model laravel5 warehouse

20/03 2015

1.0.0

1.0.0.0

Laravel 5 - Warehouse to abstract the database layer with Repositories pattern

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel repository eloquent model laravel5 warehouse