Sélectionner une révision Git
-
Loïc DEFRANCE a rédigéLoïc DEFRANCE a rédigé
chan.pm 1,72 Kio
package PlayBot::utils::db::chan;
use strict;
use warnings;
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'];
$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);