The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Mojolicious::Plugin::ContentManagement::Source::DBI - content from database

SYNOPSIS

    my $dbh = DBI->connect(...);

    # Mojolicious
    $self->plugin( content_management => {
        source      => 'dbi',
        source_conf => { dbh => $dbh, prefix => 'foo' },
        ...
    });

    # Mojolicious::Lite
    plugin content_management => {
        source      => 'dbi',
        source_conf => { dbh => $dbh, prefix => 'foo' },
        ...
    };

DESCRIPTION

This is the database source, using DBI. You just need a table like this:

    CREATE TABLE foo_pages (
        path    VARCHAR(100),
        parent  VARCHAR(100),
        sort    VARCHAR(10),
        title   VARCHAR(100),
        raw     VARCHAR(10000),
        PRIMARY KEY (path)
    );

Create a few rows and the pages are available in your webapp immediately. Two example pages:

    INSERT INTO foo_pages (path, parent, sort, title, raw)
        VALUES ('/foo.html', NULL, '03', 'This is /foo.html', 'Yay');
    INSERT INTO foo_pages (path, parent, sort, title, raw)
        VALUES ('/foo/bar.html', '/foo.html', '02', 'This is /foo/bar.html', 'Yay');

As you can see, the parent field is used to reference the parent of a page, the sort field is used to defined the order of all pages on the same level.

CONFIGURATION

With the source_conf hash ref you can pass the dbh, which must be a DBI database handle. Also you can pass a prefix for the pages table. Without the prefix, the table pages is used, if you pass foo as a prefix, the table foo_pages is used.

METHODS

This class implements all abstract methods of its base class Mojolicious::Plugin::ContentManagement::Source

SEE ALSO

Mojolicious::Plugin::ContentManagement, Mojolicious::Plugin::ContentManagement::Source