Mojolicious::Plugin::RoutesAuthDBI::POS::Pg
NAME
Mojolicious::Plugin::RoutesAuthDBI::POS::Pg - POS for PostgreSQL.
DB DESIGN DIAGRAM
See https://github.com/mche/Mojolicious-Plugin-RoutesAuthDBI/blob/master/Diagram.svg
SYNOPSIS
use Mojolicious::Plugin::RoutesAuthDBI::POS::Pg;
my $sql = Mojolicious::Plugin::RoutesAuthDBI::POS::Pg->instance;
my $sth = $dbh->prepare($sql->{'name foo'});
SEE ALSO
SQL definitions
For access methods
user
select * from users where id = ? or login=?
apply routes
select r.*, ac.controller, ac.namespace, ac.action, ac.callback, ac.id as action_id, ac.controller_id, ac.namespace_id from routes r join refs rf on r.id=rf.id1 join (select a.*, c.controller, c.id as controller_id, n.namespace, n.id as namespace_id from actions a left join refs r on a.id=r.id2 left join controllers c on c.id=r.id1 left join refs r2 on c.id=r2.id2 left join namespaces n on n.id=r2.id1 ) ac on rf.id2=ac.id order by r.order_by, r.ts;
user roles
select g.* from roles g join refs r on g.id=r.id1 where r.id2=?; --and coalesce(g.disable, 0::bit) <> 1::bit
cnt refs
select count(*) from refs where id1 = any(?) and id2 = ANY(?);
access action
select count(r.*) from refs rc join actions a on a.id=rc.id2 join refs r on a.id=r.id1 ---join roles o on o.id=r.id2 where rc.id1=? ---controller id and a.action=? and r.id2=any(?) --- roles ids ---and coalesce(o.disable, 0::bit) <> 1::bit ;
access namespace
select count(n.*) from namespaces n join refs r on n.id=r.id1 ---join roles o on r.id2=o.id where n.namespace=? and r.id2=any(?) --- roles ids ---and coalesce(o.disable, 0::bit) <> 1::bit ;
access role
select count(*) from roles where (id = ? or name = ?) and id = any(?) and coalesce(disable, 0::bit) <> 1::bit ;
For administration actions (controller)
new user
insert into users (login, pass) values (?,?) returning *;
role
select * from roles where id=? or lower(name)=?
new role
insert into roles (name) values (?) returning *;
dsbl/enbl role
update roles set disable=?::bit where id=? or lower(name)=? returning *;
ref
select * from refs where id1=? and id2=?;
new ref
insert into refs (id1,id2) values (?,?) returning *;
del ref
delete from refs where id1=? and id2=? returning *;
controller
select c.*, n.namespace, n.id as namespace_id, n.descr as namespace_descr from controllers c left join refs r on c.id=r.id2 left join namespaces n on n.id=r.id1 where c.controller=? and (n.namespace=? or (?::varchar is null and n.id is null))
new controller
insert into controllers (controller, descr) values (?,?) returning *;
new route
insert into routes (request, name, auth, descr, disable, order_by) values (?,?,?,?,?,?,?,?,?) returning *;
role users
select u.* from users u join refs r on u.id=r.id2 where r.id1=?;
role routes
select t.* from routes t join refs r on t.id=r.id1 where r.id2=?;
controllers
select c.*, n.namespace, n.id as namespace_id, n.descr as namespace_descr from controllers c left join refs r on c.id=r.id2 left join namespaces n on n.id=r.id1 ;
namespaces
select * from namespaces;
namespace
select * from namespaces where namespace = ?;
new namespace
insert into namespaces (namespace, descr) values (?,?) returning *;
actions
select a.*, c.namespace, c.controller from actions a left join refs r on a.id=r.id2 left join controllers c on c.id=r.id1
75 POD Errors
The following errors were encountered while parsing the POD:
- Around line 38:
Unknown directive: =name
- Around line 40:
Unknown directive: =desc
- Around line 42:
Unknown directive: =sql
- Around line 50:
Unknown directive: =name
- Around line 52:
Unknown directive: =desc
- Around line 54:
Unknown directive: =sql
- Around line 71:
Unknown directive: =name
- Around line 73:
Unknown directive: =desc
- Around line 75:
Unknown directive: =sql
- Around line 86:
Unknown directive: =name
- Around line 88:
Unknown directive: =desc
- Around line 90:
Unknown directive: =sql
- Around line 98:
Unknown directive: =name
- Around line 100:
Unknown directive: =desc
- Around line 102:
Unknown directive: =sql
- Around line 120:
Unknown directive: =name
- Around line 122:
Unknown directive: =desc
- Around line 124:
Unknown directive: =sql
- Around line 139:
Unknown directive: =name
- Around line 141:
Unknown directive: =desc
- Around line 143:
Unknown directive: =sql
- Around line 160:
Unknown directive: =name
- Around line 162:
Unknown directive: =desc
- Around line 164:
Unknown directive: =sql
- Around line 171:
Unknown directive: =name
- Around line 173:
Unknown directive: =desc
- Around line 175:
Unknown directive: =sql
- Around line 183:
Unknown directive: =name
- Around line 185:
Unknown directive: =desc
- Around line 187:
Unknown directive: =sql
- Around line 194:
Unknown directive: =name
- Around line 196:
Unknown directive: =desc
- Around line 198:
Unknown directive: =sql
- Around line 205:
Unknown directive: =name
- Around line 207:
Unknown directive: =desc
- Around line 209:
Unknown directive: =sql
- Around line 217:
Unknown directive: =name
- Around line 219:
Unknown directive: =desc
- Around line 221:
Unknown directive: =sql
- Around line 229:
Unknown directive: =name
- Around line 231:
Unknown directive: =desc
- Around line 233:
Unknown directive: =sql
- Around line 241:
Unknown directive: =name
- Around line 243:
Unknown directive: =desc
- Around line 245:
Unknown directive: =sql
- Around line 260:
Unknown directive: =name
- Around line 262:
Unknown directive: =desc
- Around line 264:
Unknown directive: =sql
- Around line 272:
Unknown directive: =name
- Around line 274:
Unknown directive: =desc
- Around line 276:
Unknown directive: =sql
- Around line 284:
Unknown directive: =name
- Around line 286:
Unknown directive: =desc
- Around line 288:
Unknown directive: =sql
- Around line 298:
Unknown directive: =name
- Around line 300:
Unknown directive: =desc
- Around line 302:
Unknown directive: =sql
- Around line 313:
Unknown directive: =name
- Around line 315:
Unknown directive: =desc
- Around line 317:
Unknown directive: =sql
- Around line 327:
Unknown directive: =name
- Around line 329:
Unknown directive: =desc
- Around line 331:
Unknown directive: =sql
- Around line 338:
Unknown directive: =name
- Around line 340:
Unknown directive: =desc
- Around line 342:
Unknown directive: =sql
- Around line 350:
Unknown directive: =name
- Around line 352:
Unknown directive: =desc
- Around line 354:
Unknown directive: =sql
- Around line 362:
Unknown directive: =name
- Around line 364:
Unknown directive: =desc
- Around line 366:
Unknown directive: =sql
- Around line 375:
Unknown directive: =name
- Around line 377:
Unknown directive: =desc
- Around line 379:
Unknown directive: =sql