Sélectionner une révision Git
-
Etienne BRATEAU a rédigéEtienne BRATEAU a rédigé
chan.pm 1,76 Kio
package PlayBot::utils::db::chan;
use strict;
use warnings;
use utf8;
use JSON;
use Moose;
use PlayBot::utils::db;
has 'name' => ( is => 'ro', isa => 'Str' );
has 'sites' => ( is => 'ro', isa => 'ArrayRef[Str]', writer => '_set_sites' );
around 'BUILDARGS' => sub {
my ( $orig, $class, $name ) = @_;
not $name and die "missing arg 'name'";
my $dbh = PlayBot::utils::db::main_session;
my $sth = $dbh->prepare( '
select sites
from playbot_config
where name = ?
' );
$sth->execute($name);
my $sites;
my $row = $sth->fetch;
if ( not $row ) {
$sites = [
'dailymotion', 'mixcloud', 'soundcloud', 'youtube',
'spotify', 'deezer', 'facebook'
];
$sth = $dbh->prepare( '
insert into playbot_config (name, sites)
values (?, ?)
' );
$sth->execute( $name, encode_json($sites) );
}
else {
eval { $sites = decode_json( $row->[0] ); };
$@ and $sites = [];
}
$dbh->commit;
return $class->$orig(
name => $name,
sites => $sites,
);
};
sub add_site {
my $self = shift;
my $site = shift;
my @new_sites = ( @{ $self->sites }, $site );
$self->_update_db( \@new_sites );
$self->_set_sites( \@new_sites );
}
sub remove_site {
my $self = shift;
my $site = shift;