The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package DBIx::Skinny::DBD::mysql;
use strict;
use warnings;
use base 'DBIx::Skinny::DBD::Base';

sub sql_for_unixtime { "UNIX_TIMESTAMP()" }

sub bulk_insert {
    my ($skinny, $table, $args) = @_;

    return unless @$args;

    my (@cols, @bind);

    # setting cols
    my ($first_arg,) = @{$args};
    for my $col (keys %{$first_arg}) {
        push @cols, $col;
    }
    
    for my $arg (@{$args}) {
        # deflate
        for my $col (@cols) {
            $arg->{$col} = $skinny->schema->call_deflate($col, $arg->{$col});
            push @bind, $skinny->schema->utf8_off($col, $arg->{$col});
        }
    }

    my $sql = "INSERT INTO $table\n";
    $sql .= '(' . join(', ', @cols) . ')' . "\nVALUES ";

    my $values = '(' . join(', ', ('?') x @cols) . ')' . "\n";
    $sql .= join(',', ($values) x (scalar(@bind) / scalar(@cols)));

    $skinny->_execute($sql, \@bind);

    return 1;
}

1;