use v6.d.PREVIEW;
use DBI::Async;
use Ultramarine::Model::DBMigration;
class Ultramarine::Model::DB {
has $.db-driver is required;
has %.db-args is required;
my @migrations = (
-> $dbh {
$dbh.query(q:to/END/).finish;
CREATE TABLE songs (
path TEXT PRIMARY KEY,
title TEXT,
artist TEXT
);
END
},
);
has $!dbh = do {
my DBI::Async $dbh .= new($!db-driver, |%!db-args);
my Ultramarine::Model::DBMigration $migration .= new(:$dbh,:@migrations);
$migration.ensure-schema;
$dbh;
};
method add-song(:$path!,:$title,:$artist) {
$!dbh.query(q:to/END/,$path,$title,$artist);
INSERT INTO songs(path,artist,title)
VALUES (?,?,?)
END
}
method get-song($path) {
$!dbh.query(q:to/END/,$path).hash;
SELECT *
FROM songs
WHERE path=?
END
}
}