diff options
author | dakkar <dakkar@thenautilus.net> | 2021-12-30 14:56:43 +0000 |
---|---|---|
committer | dakkar <dakkar@thenautilus.net> | 2021-12-30 14:56:43 +0000 |
commit | 969c7a2a36f3133e6e82b61011545a32a6bade37 (patch) | |
tree | 6d98057d89fd814a5f71d475ff8bd2f9292189a4 /lib | |
parent | start of browse ui (diff) | |
download | media-control-969c7a2a36f3133e6e82b61011545a32a6bade37.tar.gz media-control-969c7a2a36f3133e6e82b61011545a32a6bade37.tar.bz2 media-control-969c7a2a36f3133e6e82b61011545a32a6bade37.zip |
show parents / breadcrumbs
Diffstat (limited to 'lib')
-rw-r--r-- | lib/App/MediaControl/DB.rakumod | 17 | ||||
-rw-r--r-- | lib/App/MediaControl/Web.rakumod | 2 |
2 files changed, 18 insertions, 1 deletions
diff --git a/lib/App/MediaControl/DB.rakumod b/lib/App/MediaControl/DB.rakumod index 428ed51..20fe956 100644 --- a/lib/App/MediaControl/DB.rakumod +++ b/lib/App/MediaControl/DB.rakumod @@ -105,6 +105,23 @@ class App::MediaControl::DB { } } + method get-parents-of(Int:D() $id) { + self!db: { + .query(q:to/END/,$id).hashes.reverse; + WITH f(id, parent_id, name) AS ( + SELECT id, parent_id, name + FROM files + WHERE id=$id + UNION ALL + SELECT files.id, files.parent_id, files.name + FROM files JOIN f ON files.id=f.parent_id + ) + SELECT id, name + FROM f + END + } + } + method get-entry(Int:D() $id) { self!db: { .query(q:to/END/,$id).hash; diff --git a/lib/App/MediaControl/Web.rakumod b/lib/App/MediaControl/Web.rakumod index cb12783..9ef40c0 100644 --- a/lib/App/MediaControl/Web.rakumod +++ b/lib/App/MediaControl/Web.rakumod @@ -40,7 +40,7 @@ class App::MediaControl::Web { get -> $id=Nil { my %reply = children => @(self.db.get-children-of($id)); with $id { - %reply<this> = self.db.get-entry($id); + %reply<parents> = self.db.get-parents-of($id); }; content 'application/json', %reply; } |