Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • 68d5d3d5a4fa806f6bcc222d64c278ab494a3a31
  • master par défaut protégée
2 résultats

Jarvis.py

Blame
  • 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);