Skip to content

Instantly share code, notes, and snippets.

@FROGGS
Created November 21, 2015 21:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save FROGGS/cd2f1b94b3bd77609971 to your computer and use it in GitHub Desktop.
Save FROGGS/cd2f1b94b3bd77609971 to your computer and use it in GitHub Desktop.
#!/usr/bin/env perl
use DBI;
use Dancer ':syntax';
use JSON::XS qw(decode_json);
use Data::Dumper;
post '/report' => sub {
my $report;
eval {
$report = decode_json request->body;
};
return $@ if $@;
my $dbh = DBI->connect(...)
or return "Couldn't connect to database: " . DBI->errstr;
my $sth = $dbh->prepare('INSERT INTO reports
(grade,distname,distauth,distver,compver,backend,osname,osver,arch,"raw")
VALUES (?,?,?,?,?,?,?,?,?,?)
RETURNING id');
my $grade = !defined $report->{'build-passed'} ? 'NA'
: !$report->{'build-passed'} ? 'FAIL'
: !defined $report->{'test-passed'} ? 'NOTESTS'
: !$report->{'test-passed'} ? 'FAIL'
: 'PASS';
$sth->execute(
$grade,
$report->{name},
$report->{metainfo}{authority} || $report->{metainfo}{author} || $report->{metainfo}{auth} || '',
($report->{version} =~ /^v\d/ ? substr($report->{version}, 1) : $report->{version}),
$report->{perl}{compiler}{version},
$report->{vm}{name},
$report->{kernel}{name},
($report->{distro}{release} ne 'unknown' ? $report->{distro}{release} : $report->{distro}{version}),
($report->{kernel}{arch} ne 'unknown' ? $report->{kernel}{arch} : $report->{kernel}{bits}),
request->body,
);
my $id = $sth->fetch()->[0];
$sth->finish;
$dbh->disconnect;
return $id;
};
dance;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment