Warn
POD ERRORS here is normal because DBIx::POS::Template used.
Mojolicious::Plugin::RoutesAuthDBI::Install
¡ ¡ ¡ ALL GLORY TO GLORIA ! ! !
NAME
Mojolicious::Plugin::RoutesAuthDBI::Install - is a Mojolicious::Controller for installation instructions. DB schema (PostgreSQL) and sample app.
DB DESIGN DIAGRAM
See https://github.com/mche/Mojolicious-Plugin-RoutesAuthDBI/blob/master/Diagram.svg
Manual
$ perl -e "use Mojo::Base 'Mojolicious'; __PACKAGE__->new()->start(); sub startup {shift->routes->route('/')->to('install#manual', namespace=>'Mojolicious::Plugin::RoutesAuthDBI');}" get / 2>/dev/null
DB schema (postgresql)
View schema (define the postgresql schema name)
$ perl -e "use Mojo::Base 'Mojolicious'; __PACKAGE__->new()->start(); sub startup {shift->routes->route('/schema/:schema')->to('install#schema', namespace=>'Mojolicious::Plugin::RoutesAuthDBI');}" get /schema/<name> 2>/dev/null # get /schema/foo || get /schema/public
Apply schema (define the postgresql schema name)
$ perl -e "use Mojo::Base 'Mojolicious'; __PACKAGE__->new()->start(); sub startup {shift->routes->route('/schema/:schema')->to('install#schema', namespace=>'Mojolicious::Plugin::RoutesAuthDBI');}" get /schema/<name> 2>/dev/null | psql -d <dbname> # get /schema/foo || get /schema/public
Sample test-app.pl
$ perl -e "use Mojo::Base 'Mojolicious'; __PACKAGE__->new()->start(); sub startup {shift->routes->route('/')->to('install#test_app', namespace=>'Mojolicious::Plugin::RoutesAuthDBI');}" get / 2>/dev/null > test-app.pl
Define DBI->connect(.........) and some plugin options in test-app.pl
Check list of admin routes:
$ perl test-app.pl routes
Start app
$ perl test-app.pl daemon
Trust url for admin-user creation:
$ perl test-app.pl get /<pluginconf->{admin}{prefix}>/<pluginconf->{admin}{trust}>/user/new/<new admin login>/<admin pass> 2>/dev/null
Sign in by browser:
Go to http://127.0.0.1:3000/sign/in/<new admin login>/<admin pass>
Admin index:
Go to http://127.0.0.1:3000/<pluginconf->{admin}{prefix}>
Administration of system ready!
DB design
Schema name
CREATE SCHEMA IF NOT EXISTS "{% $schema %}"; set local search_path = "{% $schema %}";
Sequence
-- you may change schema name for PostgreSQL objects CREATE SEQUENCE {% $schema %}ID;-- one sequence for all tables id
Routes
CREATE TABLE {% $schema %}routes ( id integer default nextval('{% $schema %}ID'::regclass) not null primary key, ts timestamp without time zone default now() not null, request character varying not null, name character varying not null unique, descr text null, auth varchar null,-- was bit(1): alter table {% $schema %}routes alter column auth type varchar; disable bit(1) null, order_by int null );
Namespaces
create table {% $schema %}namespaces ( id integer default nextval('{% $schema %}ID'::regclass) not null primary key, ts timestamp without time zone default now() not null, namespace character varying not null unique, descr text null );
Controllers
create table {% $schema %}controllers ( id integer default nextval('{% $schema %}ID'::regclass) not null primary key, ts timestamp without time zone default now() not null, controller character varying not null, descr text null );
Actions
create table {% $schema %}actions ( id integer default nextval('{% $schema %}ID'::regclass) not null primary key, ts timestamp without time zone default now() not null, action character varying not null, callback text null, descr text null );
Users
create table {% $schema %}users ( id int default nextval('{% $schema %}ID'::regclass) not null primary key, ts timestamp without time zone default now() not null, login varchar not null unique, pass varchar not null, disable bit(1) );
Roles
create table {% $schema %}roles ( id int default nextval('{% $schema %}ID'::regclass) not null primary key, ts timestamp without time zone default now() not null, name varchar not null unique, disable bit(1) );
Refs
create table {% $schema %}refs ( id int default nextval('{% $schema %}ID'::regclass) not null primary key, ts timestamp without time zone default now() not null, id1 int not null, id2 int not null, unique(id1, id2) ); create index on {% $schema %}refs (id2);
Drop schema
drop table {% $schema %}refs;
drop table {% $schema %}users;
drop table {% $schema %}roles;
drop table {% $schema %}routes;
drop table {% $schema %}controllers;
drop table {% $schema %}actions;
drop table {% $schema %}namespaces;
drop sequence {% $schema %}ID;
Flush schema
delete from {% $schema %}refs;
delete from {% $schema %}users;
delete from {% $schema %}roles;
delete from {% $schema %}routes;
delete from {% $schema %}controllers;
delete from {% $schema %}namespaces;
delete from {% $schema %}actions;
33 POD Errors
The following errors were encountered while parsing the POD:
- Around line 158:
Unknown directive: =name
- Around line 160:
Unknown directive: =desc
- Around line 162:
Unknown directive: =sql
- Around line 170:
Unknown directive: =name
- Around line 172:
Unknown directive: =desc
- Around line 174:
Unknown directive: =sql
- Around line 182:
Unknown directive: =name
- Around line 184:
Unknown directive: =desc
- Around line 186:
Unknown directive: =sql
- Around line 201:
Unknown directive: =name
- Around line 203:
Unknown directive: =desc
- Around line 205:
Unknown directive: =sql
- Around line 216:
Unknown directive: =name
- Around line 218:
Unknown directive: =desc
- Around line 220:
Unknown directive: =sql
- Around line 231:
Unknown directive: =name
- Around line 233:
Unknown directive: =desc
- Around line 235:
Unknown directive: =sql
- Around line 247:
Unknown directive: =name
- Around line 249:
Unknown directive: =desc
- Around line 251:
Unknown directive: =sql
- Around line 263:
Unknown directive: =name
- Around line 265:
Unknown directive: =desc
- Around line 267:
Unknown directive: =sql
- Around line 278:
Unknown directive: =name
- Around line 280:
Unknown directive: =desc
- Around line 282:
Unknown directive: =sql
- Around line 329:
Unknown directive: =name
- Around line 331:
Unknown directive: =desc
- Around line 333:
Unknown directive: =sql
- Around line 361:
Unknown directive: =name
- Around line 363:
Unknown directive: =desc
- Around line 365:
Unknown directive: =sql