aboutsummaryrefslogtreecommitdiff
path: root/lib/App/MediaControl.rakumod
diff options
context:
space:
mode:
Diffstat (limited to 'lib/App/MediaControl.rakumod')
-rw-r--r--lib/App/MediaControl.rakumod42
1 files changed, 12 insertions, 30 deletions
diff --git a/lib/App/MediaControl.rakumod b/lib/App/MediaControl.rakumod
index d330221..f8d2360 100644
--- a/lib/App/MediaControl.rakumod
+++ b/lib/App/MediaControl.rakumod
@@ -1,10 +1,11 @@
use v6.d;
use DB::SQLite;
-use ScanDir;
use Vlc::Client;
use Lirc::Client;
use Lirc::Commands;
use App::MediaControl::DB;
+use App::MediaControl::FS;
+use App::MediaControl::Model;
use App::MediaControl::Web;
class App::MediaControl {
@@ -13,6 +14,8 @@ class App::MediaControl {
has Lirc::Client $!lirc-client;
has Lirc::Commands $!lirc;
has App::MediaControl::DB $!db;
+ has App::MediaControl::FS $!fs;
+ has App::MediaControl::Model $!model;
has App::MediaControl::Web $!web;
submethod TWEAK {
@@ -32,43 +35,22 @@ class App::MediaControl {
),
);
+ $!fs .= new(
+ root => $!config<media><root>,
+ extensions => $!config<media><extensions>.Slip,
+ );
+
+ $!model .= new(:$!db,:$!fs);
+
$!web .= new(
port => $!config<server><port>,
host => $!config<server><host>,
- :$!vlc, :$!lirc, :$!db,
+ :$!vlc, :$!lirc, :$!model,
);
}
- method !start-scan() {
- my $root = $.config<media><root>;
- my $extensions = any($.config<media><extensions>.Slip);
-
- $!db.clear-seen();
- start react {
- whenever scan-dir($root) -> $item {
- when $item ~~ $root {}
- when $item ~~ ScanDir::End { $!db.remove-unseen(); say "scan done" }
-
- my $path = $item.parent.relative($root);
- $path = '' if $path eq '.';
- my $name = $item.basename;
-
- if !$item.e {
- $!db.remove-entry(:$path,:$name);
- }
- else {
- my $is-dir = $item.d;
- if $is-dir || $item.extension ~~ $extensions {
- $!db.add-entry(:$path,:$name,:$is-dir);
- }
- }
- }
- }
- }
-
method start() {
$!db.ensure-schema();
- self!start-scan();
$!web.start();
}