Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • 592214f4d6268198378ff6ef8e230069551145d6
  • master par défaut protégée
  • convert-to-dlang
  • clear-warnings
  • update-structs
  • unittests
  • bjarne-stroustrup
  • 5.67.0
8 résultats

gate.c

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