aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2021-12-31 16:22:58 +0000
committerdakkar <dakkar@thenautilus.net>2021-12-31 16:22:58 +0000
commit9cc1ecf5c888eabb23e74bc3cf1615c50673ef1d (patch)
tree53c9d9d464a31e5c01149a5e1c68826386d35b08
parentsome better vlc controls / status (diff)
downloadmedia-control-9cc1ecf5c888eabb23e74bc3cf1615c50673ef1d.tar.gz
media-control-9cc1ecf5c888eabb23e74bc3cf1615c50673ef1d.tar.bz2
media-control-9cc1ecf5c888eabb23e74bc3cf1615c50673ef1d.zip
flush batched adds
-rw-r--r--lib/App/MediaControl.rakumod13
-rw-r--r--lib/App/MediaControl/DB.rakumod2
2 files changed, 12 insertions, 3 deletions
diff --git a/lib/App/MediaControl.rakumod b/lib/App/MediaControl.rakumod
index 0887095..12ed948 100644
--- a/lib/App/MediaControl.rakumod
+++ b/lib/App/MediaControl.rakumod
@@ -45,7 +45,11 @@ class App::MediaControl {
start react {
whenever scan-dir($root) -> $item {
when $item ~~ $root {}
- when $item ~~ ScanDir::End { $!db.remove-unseen() }
+ when $item ~~ ScanDir::End {
+ $!db.remove-unseen();
+ $to-add.done();
+ $to-add = Nil;
+ }
my $path = $item.parent.relative($root);
$path = '' if $path eq '.';
@@ -56,7 +60,12 @@ class App::MediaControl {
}
else {
my $is-dir = $item.d;
- $to-add.emit(%(:$path,:$name,:$is-dir));
+ with $to-add {
+ .emit(%(:$path,:$name,:$is-dir));
+ }
+ else {
+ $!db.add-entries([%(:$path,:$name,:$is-dir)]);
+ }
}
}
whenever $to-add.Supply.batch(:100elems,:2seconds) -> $items {
diff --git a/lib/App/MediaControl/DB.rakumod b/lib/App/MediaControl/DB.rakumod
index 6e7a272..03c8bdd 100644
--- a/lib/App/MediaControl/DB.rakumod
+++ b/lib/App/MediaControl/DB.rakumod
@@ -78,7 +78,7 @@ class App::MediaControl::DB {
$values
)
INSERT INTO files(parent_id,path,name,is_dir,seen)
- SELECT id, newrow.path, name, is_dir, true
+ SELECT parent.id, newrow.path, newrow.name, newrow.is_dir, true
FROM newrow
LEFT JOIN parent ON parent.path=newrow.path
WHERE true