Plagger::Plugin::Subscription::DBI(3)

NAME
Plagger::Plugin::Subscription::DBI - Subscription in database

SYNOPSIS
    - module: Subscription::DBI
      config:
        schema_class: 'My::Schema'
        connect_info: ['dbi:SQLite:/path/to/plagger.db']

DESCRIPTION
This plugin allows you to configure your subscription in a database.

You will need the following:

  SQL
    CREATE TABLE feed (
        id INTEGER NOT NULL PRIMARY KEY,
        url TEXT,
        link TEXT,
        title TEXT
    );

    CREATE TABLE tag (
        id INTEGER NOT NULL PRIMARY KEY,
        name TEXT NOT NULL
    );

    CREATE TABLE feed_tag_map (
        feed INTEGER NOT NULL,
        tag INTEGER NOT NULL,
        PRIMARY KEY (feed, tag)
    );

and the following DBIx::Class::Schema

  My::Schema
    package My::Schema;
    use strict;
    use warnings;
    use base qw/DBIx::Class::Schema/;

    __PACKAGE__->load_classes();

    1;

  My::Schema::Feed
    package My::Schema::Feed;
    use strict;
    use warnings;
    use base qw/DBIx::Class/;

    __PACKAGE__->load_components(qw/Core/);

    __PACKAGE__->table('feed');
    __PACKAGE__->add_columns(qw(
            id
            url
            link
            title
    ));
    __PACKAGE__->set_primary_key(qw/id/);

    1;

  My::Schema::FeedTagMap
    package My::Schema::FeedTagMap;

    use strict;
    use warnings;
    use base qw/DBIx::Class/;

    __PACKAGE__->load_components(qw/Core/);

    __PACKAGE__->table('feed_tag_map');
    __PACKAGE__->add_columns(qw(
            feed
            tag
    ));

    __PACKAGE__->set_primary_key(qw/feed tag/);

    __PACKAGE__->belongs_to( feed => 'TEST::Schema::Feed' );
    __PACKAGE__->belongs_to( tag  => 'TEST::Schema::Tag' );

    1;

  My::Schema::Tag
    package TEST::Schema::Tag;
    use strict;
    use warnings;
    use base qw/DBIx::Class/;

    __PACKAGE__->load_components(qw/Core/);

    __PACKAGE__->table('tag');
    __PACKAGE__->add_columns(qw(
            id
            name
    ));
    __PACKAGE__->set_primary_key(qw/id/);

    __PACKAGE__->has_many( feed_tag_map => 'TEST::Schema::FeedTagMap', 'tag' );
    __PACKAGE__->many_to_many( feeds => feed_tag_map => 'feed' );

    1;

AUTHOR
Franck Cuny

Based on the plugin Plagger::Plugin::Subscription::Config by Tatsuhiko Miyagawa

The schema is inspired by the work of Daisuke Murase for Plagger::Plugin::Store::DBIC

SEE ALSO
Plagger