1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
/*
This file is part of jellything (https://codeberg.org/metamuffin/jellything)
which is licensed under the GNU Affero General Public License (version 3); see /COPYING.
Copyright (C) 2023 metamuffin <metamuffin.org>
*/
use super::{account::session::Session, error::MyError, layout::DynLayoutPage, node::PosterCard};
use crate::database::Database;
use anyhow::Context;
use jellycommon::{Node, NodeKind};
use rocket::{get, State};
#[get("/items")]
pub fn r_all_items(_sess: Session, db: &State<Database>) -> Result<DynLayoutPage<'_>, MyError> {
let items = db
.node
.iter()
.map(|e| e.context("listing"))
.collect::<anyhow::Result<Vec<_>>>()?
.into_iter()
.filter(|(_, n)| matches!(n.public.kind, NodeKind::Movie | NodeKind::Series))
.collect::<Vec<(String, Node)>>();
Ok(super::layout::LayoutPage {
title: "All Items".to_owned(),
content: markup::new! {
.page.dir {
h1 { "All Items" }
ul.directorylisting { @for (id, node) in &items {
li {@PosterCard {
wide: false, dir: false,
id,
title: &node.public.title
}}
}}
}
},
..Default::default()
})
}
|