The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

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;
__PACKAGE__->load_classes();
1;

My::Schema::Feed

use strict;
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

use strict;
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

use strict;
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