/
TermoReferencia.pm
36 lines (26 loc) · 1.29 KB
/
TermoReferencia.pm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package Catalogo::Negocio::TermoReferencia;
use Moose;
use MooseX::Method::Signatures;
use aliased 'MooseX::Meta::Method::Transactional';
use aliased 'MooseX::Meta::Method::Authorized';
has schema => (is => 'ro', required => 1);
has user => (is => 'ro', required => 1);
method listar_tr_categorias
( Str $pesquisa? = '%', Int $pagina? = 1, Int $linhas_por_pagina? = 50,
Int $categoria_inicial?, Int $profundidade? = 2 )
does Transactional
does Authorized(requires => ['adm_catalogo_tr']) {
$self->schema->resultset('TrCategoria')->search_rs({ -or => { nome => { like => $pesquisa },
descricao => { like => $pesquisa } } },
{ rows => $linhas_por_pagina, page => $pagina });
};
1;
=for nobody
WITH RECURSIVE arvore_categorias (nivel, tr_categoria_id, codigo, nome, descricao) AS (
SELECT 0, tr_categoria_id, codigo, nome, descricao FROM tr_categorias WHERE tr_categoria_mae_id IS NULL
UNION ALL
SELECT ac.nivel + 1, trin.tr_categoria_id, trin.codigo, trin.nome, trin.descricao
FROM arvore_categorias ac, tr_categorias trin WHERE trin.tr_categoria_mae_id=ac.tr_categoria_id
)
SELECT * FROM arvore_categorias;
=cut