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

DBIx::POS

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