This commit is contained in:
Florian THIERRY
2026-07-19 20:47:25 +02:00
parent edb87ce98a
commit 360df2c5f4
@@ -2,6 +2,7 @@ use std::sync::{Arc, Mutex, MutexGuard};
use rusqlite::{Connection, Error, Row}; use rusqlite::{Connection, Error, Row};
use rusqlite::fallible_iterator::FallibleIterator; use rusqlite::fallible_iterator::FallibleIterator;
use uuid::Uuid; use uuid::Uuid;
use lumiere_domain::user::model::User;
use crate::video::model::LibraryItemEntity; use crate::video::model::LibraryItemEntity;
#[derive(Clone)] #[derive(Clone)]
@@ -85,4 +86,60 @@ impl LibraryItemSqliteRepository {
prepared_statement.execute(rusqlite::params_from_iter(params))?; prepared_statement.execute(rusqlite::params_from_iter(params))?;
Ok(()) Ok(())
} }
pub fn get_by_id_with_all_hierarchy(&self, library_item_id: &Uuid) -> Result<Option<LibraryItemEntity>, Error> {
let database_connection = self.get_connection();
/*
Given a LibraryItem item_1:
LibraryItemEntity {
id: <id1>,
name: "item_1",
type: 0,
parent_item_id: <id2>
}
Its parent item is item_2:
LibraryItemEntity {
id: <id2>,
name: "item_2",
type: 1,
parent_item_id: <id3>
}
item_2 has a parent which is item_3:
LibraryItemEntity {
id: <id3>,
name: "item_3",
type: 0,
parent_item_id: NULL
}
TODO: Write a SQL query to retrieve all LibraryItemEntity objects. It should filter on id with a parameter.
This query should return something like:
| id | name | type | parent_item_id |
| ----- | -------- | ---- | -------------- |
| <id1> | 'item_1' | 0 | <id2> |
| <id2> | 'item_2' | 1 | <id3> |
| <id3> | 'item_3' | 1 | NULL |
Take example on the following query and adapt it.
*/
let mut prepared_statement = database_connection.prepare(
"SELECT
id,
name,
type,
parent_item_id
FROM library_item
WHERE id = ?1;"
)?;
let mut rows = prepared_statement.query([library_item_id.to_string()])?;
if let Some(row) = rows.next()? {
Ok(Some(Self::map_to_library_item(&row)?))
} else {
Ok(None)
}
}
} }